Do-it-Yourself

For those without the KLWP Pro Version / Key, you can recreate the theme by hand.

Disclaimer

As the title says -- Do It Yourself. Follow instructions well and solve problems and try to understand how KLWP works. People have followed this and it worked out for them.


Also, because you don't have KLWP pro...

    • You cannot freely switch between presets and have to discard your work every time you have to change a theme/preset.
    • If KLWP ever removes the copy-paste capabilities in non-Pro versions, you're out of luck. So far, that hasn't happened yet.


If you have understood all these, despite the scary looking red background and intimidating bullet points, carry on. At least you're saving ~$3?

Quick Start

  • You'll need to download all resources the theme needs (the p5-confidant folder v1.2+) and place it at the right place (/storage/emulated/0/Kustom/)
  • Copy all the component sections below and paste it in KLWP.
  • Rebuild the variables needed by the preset
  • Hit the Save button

How the theme works


The theme is fixed to use three screens.

First Screen

  • Joker's solo picture (Joker.png)
  • The "rays of light" below Joker (TopLayer.png)
  • A music player component which consists of
    • The album art
    • The album art's border (based on the album art primary color)
    • The music info (MusicBarOne.png and MusicBarTwo.png)


Second Screen

  • Joker's picture, shifted via a complex animation
  • Queen's picture


Third Screen

  • The pause screen
  • A location bar (LocationBar.png)


Global

  • A transparent red overlay
  • The Tokyo background

Component Hierarchy

root
> Shape (Red Overlay)
> Image (Joker.png)
> Image (Makoto.png)
> Image (TopLayer.png)
> Image (PauseScreen.png)
> Shape (Album Outline)
> Image (/Kustom/bitmaps/music_cover)

> Overlap Group (Music Text)
>> Image (MusicBarOne.png)
>> Image (MusicBarTwo.png)
>> Text ($mi(title)$)
>> Text ($mi(album)$ $mi(artist)$ )
>> Progress (Music Playtime)

> Overlap Group (Location Bar)
>> Image (LocationBar.png)
>> Text ($li(addr)$)

Background

Swipe to Background -> Bitmap

Tick the Bitmap checkbox and switch to Formula mode (press the Calculator icon on the upper-right, then the calculator icon next to Bitmap)

Enter this formula:

$(if(ai(isday),"file://storage/emulated/0/Kustom/p5-confidant/Day.png","file://storage/emulated/0/Kustom/p5-confidant/Night.png"))$

It should show the day / night version of the wallpaper based on your phone's time and location.

Components

With your phone, copy the ##KUSTOMCLIP## blocks from start to end, including the ##KUSTOMCLIP## ends. Once you switch to KLWP, it should tell you that it imported the clipboard and a paste icon should appear on the upper-right. Copy and paste these components one at a time, then reorder them (see the Component Hierarchy above) so they look correctly.

Extra: You'll need the alewisdodi font in the internet. I wasn't able to bundle it with the p5-confidant folder.

Album Art

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "BitmapModule",
"internal_toggles": {
"bitmap_bitmap": 10,
"bitmap_blur": 0,
"bitmap_dim": 10,
"bitmap_filter": 10
},
"internal_formulas": {
"bitmap_bitmap": "$mi(cover)$",
"bitmap_blur": "",
"bitmap_dim": "$if(mi(state) \u003d \"PLAYING\",0,50)$",
"bitmap_filter": "$if(mi(state) \u003d \"PLAYING\",NONE,BW)$"
},
"internal_animations": [
{
"type": "SCROLL",
"action": "SCROLL",
"speed": 235.0,
"limit": 0.0,
"angle": 45.0,
"center": "FIRST"
},
{
"type": "GYRO",
"speed": 55.0,
"angle": 10.0,
"limit": 25.0
},
{
"type": "SCROLL",
"speed": 100.0,
"angle": 0,
"action": "ROTATE_INVERTED",
"amount": 55.0,
"center": "FIRST"
}
],
"internal_events": [
{
"type": "SINGLE_TAP",
"action": "MUSIC",
"music_action": "OPEN_APP"
}
],
"position_offset_y": 60.0,
"bitmap_width": 175.0,
"position_anchor": "BOTTOMLEFT",
"position_offset_x": 40.0,
"bitmap_rotate": 340.0,
"bitmap_rmode": "MANUAL",
"bitmap_blur": 0.0,
"bitmap_rradius": 0.0,
"internal_title": "Album Art"
}
]
}
##KUSTOMCLIP## 

Album Outline (Pulse)

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "ShapeModule",
"internal_animations": [
{
"type": "GYRO",
"speed": 55.0,
"angle": 10.0,
"limit": 25.0
},
{
"type": "SCROLL",
"speed": 235.0,
"angle": 45.0,
"center": "FIRST"
},
{
"type": "SCROLL",
"action": "ROTATE_INVERTED",
"amount": 55.0,
"center": "FIRST",
"speed": 100.0
},
{
"type": "LOOP_2W",
"action": "SCALE_INVERTED",
"amount": 1.0,
"duration": 8.0,
"ease": "NORMAL",
"internal_toggles": {
"amount": 10
},
"internal_formulas": {
"amount": "0.44"
}
}
],
"position_anchor": "BOTTOMLEFT",
"position_offset_x": 35.0,
"position_offset_y": 55.0,
"shape_width": 185.0,
"shape_rotate_mode": "MANUAL",
"shape_rotate_offset": 160.0,
"paint_color": "#6B000000",
"fx_bitmap_blur": 10.0,
"internal_toggles": {
"paint_color": 10
},
"internal_formulas": {
"paint_color": "$if(mi(state) \u003d PLAYING,bp(vibrant, mi(cover)),#00000000)$"
},
"internal_title": "Album Outline (Pulse)",
"shape_rotate_radius": 0.0
}
]
}
##KUSTOMCLIP## 

Music Text

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "OverlapLayerModule",
"internal_animations": [
{
"type": "GYRO",
"speed": 65.0,
"limit": 45.0,
"angle": 5.0
},
{
"type": "SCROLL",
"speed": 325.0,
"center": "FIRST",
"action": "SCROLL_INVERTED"
},
{
"type": "SCROLL",
"action": "ROTATE",
"amount": 10,
"speed": 20.0,
"center": "FIRST"
}
],
"position_anchor": "BOTTOMLEFT",
"position_offset_x": 240.0,
"position_offset_y": 140.0,
"internal_title": "Music Text",
"viewgroup_items": [
{
"internal_type": "BitmapModule",
"position_padding_top": 125.0,
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/MusicBarTwo.png",
"bitmap_width": 450.0
},
{
"internal_type": "BitmapModule",
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/MusicBarOne.png",
"bitmap_width": 450.0
},
{
"internal_type": "TextModule",
"internal_animations": [
{
"type": "SCROLL",
"speed": 300.0
}
],
"position_offset_y": 140.0,
"text_expression": "$mi(title)$",
"text_size": 20.0,
"position_anchor": "CENTERLEFT",
"position_offset_x": 281.0,
"text_family": "kfile://org.kustom.provider/fonts/alewisdodi.ttf",
"paint_stroke": 2.0,
"position_padding_left": 50.0,
"position_padding_top": 0.0,
"position_padding_bottom": 10.0,
"text_size_type": "FIXED_WIDTH",
"text_width": 375.0,
"text_lines": 1.0,
"text_rotate_mode": "MANUAL",
"text_rotate_offset": 356,
"paint_color": "#FF000000"
},
{
"internal_type": "TextModule",
"internal_animations": [
{
"type": "SCROLL",
"speed": 300.0
}
],
"position_offset_y": 140.0,
"text_expression": "$mi(album)$\n$mi(artist)$",
"text_size": 20.0,
"position_anchor": "CENTERLEFT",
"position_offset_x": 281.0,
"text_family": "kfile://org.kustom.provider/fonts/alewisdodi.ttf",
"paint_stroke": 2.0,
"position_padding_left": 85.0,
"text_rotate_mode": "MANUAL",
"text_rotate_offset": 1.0,
"paint_color": "#FFFAFAFA",
"position_padding_top": 125.0,
"text_size_type": "FIXED_WIDTH",
"text_width": 360.0,
"text_lines": 3.0
},
{
"internal_type": "ProgressModule",
"position_padding_left": 70.0,
"position_padding_right": 1.0,
"position_padding_top": 0.0,
"position_padding_bottom": 9.0,
"position_anchor": "BOTTOM",
"progress_progress": "MUSIC",
"progress_mode": "SPLIT",
"progress_rotate_mode": "MANUAL",
"progress_rotate_offset": 359.0,
"style_shape": "RECT",
"style_size": 335.0,
"style_height": 3.0,
"internal_toggles": {
"color_fgcolor": 10,
"progress_rotate_offset": 10
},
"internal_formulas": {
"color_fgcolor": "$bp(vibrant, mi(cover))$",
"progress_rotate_offset": "358.5"
}
}
]
}
]
}
##KUSTOMCLIP## 

Location Bar

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "OverlapLayerModule",
"internal_title": "Location Bar",
"internal_animations": [
{
"type": "GYRO",
"speed": 40.0,
"limit": 40.0,
"angle": 0,
"action": "SCROLL"
},
{
"type": "SCROLL",
"speed": 240.0,
"angle": 0,
"center": "LAST"
},
{
"type": "SCROLL",
"action": "ROTATE",
"speed": 10,
"amount": 5.0,
"center": "LAST"
}
],
"position_anchor": "BOTTOMRIGHT",
"position_offset_x": 40.0,
"position_offset_y": 20.0,
"internal_events": [
{
"type": "SINGLE_TAP",
"action": "LAUNCH_APP",
"intent": "intent:#Intent;action\u003dandroid.intent.action.MAIN;category\u003dandroid.intent.category.LAUNCHER;component\u003dcom.google.android.apps.maps/com.google.android.maps.MapsActivity;S.org.kustom.intent.label\u003dMaps;end"
}
],
"viewgroup_items": [
{
"internal_type": "BitmapModule",
"position_anchor": "BOTTOM",
"position_offset_y": 60.0,
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/LocationBar.png",
"bitmap_width": 500.0
},
{
"internal_type": "TextModule",
"internal_animations": [
{
"type": "SCROLL",
"speed": 250.0,
"angle": 0
}
],
"position_offset_x": 0.0,
"position_offset_y": 80.0,
"text_expression": "$li(addr)$",
"text_size": 24.0,
"text_family": "kfile://org.kustom.provider/fonts/alewisdodi.ttf",
"position_anchor": "BOTTOM",
"position_padding_top": 10.0,
"position_padding_bottom": 10.0,
"text_size_type": "FIXED_WIDTH",
"text_width": 460.0,
"text_lines": 1.0,
"text_align": "CENTER",
"text_rotate_mode": "MANUAL",
"text_rotate_offset": 357.0
}
]
}
]
}
##KUSTOMCLIP## 

Red Overlay

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "ShapeModule",
"shape_type": "RECT",
"shape_width": 720.0,
"shape_height": 1280.0,
"paint_color": "#80FF0000",
"internal_title": "Red Overlay"
}
]
}
##KUSTOMCLIP## 

Joker

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "BitmapModule",
"internal_title": "Joker",
"internal_animations": [
{
"type": "SCROLL",
"action": "ADVANCED",
"animator": [
{
"position": 0,
"value": 0.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
},
{
"position": 100,
"value": -370.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
}
],
"speed": 200.0,
"center": "FIRST",
"anchor": "MODULE_CENTER",
"rule": "CENTER"
},
{
"type": "SCROLL",
"action": "FADE_INVERTED",
"center": "LAST",
"speed": 100.0,
"animator": [
{
"position": 0,
"value": 800.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
}
],
"amount": 100
}
],
"position_offset_x": 300.0,
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/Joker.png",
"bitmap_width": 1325.0
}
]
}
##KUSTOMCLIP## 

Confidant

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "BitmapModule",
"internal_title": "Confidant",
"internal_animations": [
{
"type": "SCROLL",
"action": "ADVANCED",
"animator": [
{
"position": 0,
"value": 0.0,
"property": "OPACITY",
"ease": "STRAIGHT"
},
{
"position": 0,
"value": 0.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
},
{
"position": 75,
"value": 0.0,
"property": "OPACITY",
"ease": "STRAIGHT"
},
{
"position": 100,
"value": 100.0,
"property": "OPACITY",
"ease": "STRAIGHT"
},
{
"position": 100,
"value": 285.0,
"property": "X_OFFSET",
"ease": "NORMAL"
}
],
"speed": 295
}
],
"position_offset_x": -260.0,
"position_offset_y": 220.0,
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/Makoto.png",
"bitmap_width": 1100.0,
"position_anchor": "CENTERRIGHT",
"internal_toggles": {
"bitmap_mode": 0,
"bitmap_bitmap": 10,
"position_offset_x": 10
},
"internal_formulas": {
"bitmap_mode": "$gv(c_dir)$$gv(c_images,10,gv(cchoice))$",
"bitmap_bitmap": "$gv(c_dir)$$gv(c_images,10,gv(cchoice))$ ",
"position_offset_x": "$gv(c_cxoff,10,gv(cchoice))$"
}
}
]
}
##KUSTOMCLIP## 

Joker Bottom

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "BitmapModule",
"internal_title": "Joker Bottom",
"internal_animations": [
{
"type": "SCROLL",
"action": "ADVANCED",
"center": "FIRST",
"animator": [
{
"position": 0,
"value": 0.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
},
{
"position": 100,
"value": -370.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
}
],
"speed": 200.0
},
{
"type": "SCROLL",
"action": "FADE_INVERTED",
"center": "LAST",
"animator": [
{
"position": 0,
"value": 800.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
}
]
}
],
"position_anchor": "BOTTOM",
"position_offset_x": 300.0,
"position_offset_y": 0.0,
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/TopLayer.png",
"bitmap_width": 1325.0
}
]
}
##KUSTOMCLIP## 

Pause

##KUSTOMCLIP##
{
"clip_version": 1,
"clip_cut": [],
"clip_modules": [
{
"internal_type": "BitmapModule",
"internal_title": "Pause",
"internal_animations": [
{
"type": "SCROLL",
"action": "ADVANCED",
"animator": [
{
"position": 0,
"value": 0.0,
"property": "OPACITY",
"ease": "STRAIGHT"
},
{
"position": 0,
"value": 0.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
},
{
"position": 100,
"value": 100.0,
"property": "OPACITY",
"ease": "STRAIGHT"
},
{
"position": 100,
"value": 285.0,
"property": "X_OFFSET",
"ease": "STRAIGHT"
}
],
"speed": 295,
"center": "LAST"
}
],
"position_offset_x": 0.0,
"position_offset_y": 0.0,
"bitmap_bitmap": "file://storage/emulated/0/Kustom/p5-confidant/Pause.png",
"bitmap_width": 725.0
}
]
}
##KUSTOMCLIP## 

Global Variables

These variables lets you choose the confidant of your choice with the theme.


Add these global variables in KLWP's Globals section.

  • cchoice
    • Type: NUMBER
    • min - 0, max - 20
    • Value 10 (you're free to change this to who you want later)
  • c_dir
    • Type: TEXT
    • file://storage/emulated/0/Kustom/p5-confidant/
  • c_cxoff
    • Type: LIST
    • -500.00,-380,-260,-560.01,-360,-420.00,-560.02,-420.01,-500.01,-500.02,-520.00,-520.01,-420.02,-540,-460,-480.00,-480.01,-480.02,-500.03,-400,-440
  • c_images
    • Type: LIST
    • Akechi.png,Ann.png,CarolineJustine.png,Chihaya.png,Futaba.png,Haru.png,Hifumi.png,Igor.png,Iwai.png,Kawakami.png,Makoto.png,Mishima.png,Morgana.png,Ohya.png,Ryuji.png,Sae.png,Shinya.png,Sojiro.png,Takemi.png,Yoshida.png,Yusuke.png


Now the Confidant should shift and change once you select a cchoice. If it doesn't, make sure that:

  • Confidant -> Bitmap -> Formula Mode
    • $gv(c_dir)$$gv(c_images,10,gv(cchoice))$
  • Position -> XOffset -> Formula Mode
    • $gv(c_cxoff,10,gv(cchoice))$