This guide provides step-by-step instructions for creating custom themes for the Innioasis Y1 music player. Choose your experience level to get started!
π¨ Beginner: Start with image replacement and basic color changes using the MelodyMuncher theme as your foundation.
π οΈ Moderate: Learn to create complete themes from scratch with full customization options.
- Theme Structure
- Configuration File (config.json)
- Image Assets
- Color Definitions
- Font Customization
- Complete Configuration Reference
- Installation
- Best Practices
Perfect for: Non-coders, artists, anyone wanting to start simple
The easiest way to create a custom theme is to start with the MelodyMuncher theme and replace images with your own designs. This approach lets you learn the basics without diving into complex configuration.
- Locate: Find the MelodyMuncher theme folder on your Y1 device
- Copy: Create a duplicate folder with your theme name (e.g.,
MyCustomTheme/) - Rename: Update the folder name to something unique
π― Start with these easy replacements:
Now Playing.png- Current track displayMusic.png- Music library iconVideos.png- Video player iconPhotos.png- Photo gallery iconSettings.png- Settings menu icon
desk_bg001.png- Desktop backgroundglobal_bg001.png- Global background
1.png- Selected item background2.png- Right arrow indicator3.png- Dialog option background
Edit the config.json file to change colors:
{
"theme_info": {
"title": "My Custom Theme",
"author": "Your Name",
"description": "A personalized theme based on MelodyMuncher"
},
"homePageConfig": {
"selectedColor": "#FF6B6B", // Change this to your favorite color
"unselectedColor": "#4ECDC4" // Change this too
}
}π¨ Color Tips:
- Use hex colors like
#FF6B6B(red) or#4ECDC4(teal) - Test colors on your Y1 to see how they look
- Start with 2-3 colors, add more as you learn
- Copy: Your theme folder to
/storage/sdcard0/Themes/ - Apply: Select your theme in Y1 settings
- Navigate: Check all menus to see your changes
- Adjust: Go back and modify colors/images as needed
- β How themes are structured
- β Which images affect which parts of the interface
- β
How color changes work in
config.json - β The relationship between files and visual elements
Perfect for: Those comfortable with the basics, ready for more control
Once you're comfortable with image replacement, you can create themes from scratch with full control over every element.
π― Define your vision:
- Style: Minimalist, retro, colorful, dark, etc.
- Color palette: 3-5 main colors that work together
- Mood: Professional, playful, elegant, etc.
π Essential files you must create:
config.json- Theme configuration (REQUIRED)cover.png- Theme preview thumbnail (REQUIRED)
π¨ Image categories:
- Main menu icons (12 files)
- Settings icons (20+ files)
- UI elements (18 files)
- Status icons (18 files)
- Wallpapers (2+ files)
Create a complete config.json with all sections:
{
"theme_info": {
"title": "My Custom Theme",
"author": "Your Name",
"description": "A complete custom theme"
},
"homePageConfig": {
"selectedColor": "#FF6B6B",
"unselectedColor": "#4ECDC4"
},
"settingConfig": {
"selectedColor": "#FF6B6B",
"unselectedColor": "#4ECDC4"
}
// ... more configuration sections
}π Complete Example: See the full MelodyMuncher config.json at github.com/y1-community/InnioasisY1Themes/blob/main/MelodyMuncher/config.json for a complete reference.
- Custom fonts: Add
font.ttffor unique typography - Desktop masks: Add
mask.pngfor overlay effects - Color schemes: Define colors for every UI element
- Icon states: Create different versions for selected/unselected states
/storage/sdcard0/Themes/HoloPebble/
βββ config.json # Theme configuration file (REQUIRED)
βββ cover.png # Theme preview thumbnail (REQUIRED)
βββ font.ttf # Custom font (OPTIONAL)
βββ desk_bg001.png # Desktop wallpaper
βββ global_bg001.png # Global wallpaper
βββ mask.png # Desktop mask overlay (OPTIONAL)
β
βββ Now Playing.png # Main menu icons
βββ Music.png
βββ Videos.png
βββ Audiobooks.png
βββ Photos.png
βββ FM Radio.png
βββ Bluetooth.png
βββ Settings.png
βββ Shuffle Quick.png
βββ calculator.png
βββ calendar.png
βββ ebook.png
β
βββ 1.png # UI element images
βββ 2.png # Right arrow
βββ 3.png # Dialog option background
βββ 4.png # Dialog option selected
βββ 5.png # Dialog background
βββ 6.png # Progress bar background
βββ 7.png # Progress bar fill
βββ 8.png # Volume bar background
βββ 9.png # Volume bar fill
βββ 10.png # Battery background
βββ 11.png # Battery fill
βββ 12.png # Signal strength background
βββ 13.png # Signal strength fill
βββ 14.png # Bluetooth icon
βββ 15.png # Headphone icon
βββ 16.png # Microphone icon
βββ 17.png # Speaker icon
βββ 18.png # USB icon
β
βββ About.png # Settings icons
βββ Audio.png
βββ Bluetooth.png
βββ Display.png
βββ Language.png
βββ Power.png
βββ Storage.png
βββ System.png
βββ Time.png
βββ Update.png
βββ WiFi.png
βββ About_selected.png
βββ Audio_selected.png
βββ Bluetooth_selected.png
βββ Display_selected.png
βββ Language_selected.png
βββ Power_selected.png
βββ Storage_selected.png
βββ System_selected.png
βββ Time_selected.png
βββ Update_selected.png
βββ WiFi_selected.png
β
βββ battery_0.png # Status bar icons
βββ battery_1.png
βββ battery_2.png
βββ battery_3.png
βββ battery_4.png
βββ battery_5.png
βββ bluetooth_off.png
βββ bluetooth_on.png
βββ signal_0.png
βββ signal_1.png
βββ signal_2.png
βββ signal_3.png
βββ signal_4.png
βββ wifi_off.png
βββ wifi_on.png
config.json- Main configuration file (REQUIRED)cover.png- Theme preview image shown in theme selector (REQUIRED)
{
"theme_info": {
"title": "Your Theme Name",
"author": "Your Name",
"authorUrl": "https://yourwebsite.com",
"description": "Description of your theme"
},
"themeCover": "cover.png",
"desktopWallpaper": "desk_bg001.png",
"globalWallpaper": "global_bg001.png",
"desktopMask": "mask.png",
"fontFamily": "customfont.ttf",
"itemConfig": { ... },
"dialogConfig": { ... },
"menuConfig": { ... },
"homePageConfig": { ... },
"fileConfig": { ... },
"settingConfig": { ... },
"statusConfig": { ... },
"playerConfig": { ... }
}Based on BitmapSize.smali:
| Asset Type | Width | Height | Purpose |
|---|---|---|---|
| MAIN_ICON | 166px | 166px | Main menu icons (Music, Videos, etc.) |
| SETTING_ICON | 146px | 146px | Settings menu icons |
| ITEM | 640px | 91px | List item backgrounds |
| WALLPAPER | 320px | 240px | Background wallpapers |
| SMALL_ICON | 64px | 64px | Small status icons |
- Format: PNG with transparency support
- Color depth: 24-bit or 32-bit (with alpha channel)
- Compression: PNG-8 or PNG-24
- Background: Transparent or solid depending on design
All colors use standard hex format:
"#RRGGBB"- RGB format (e.g.,"#FF0000"for red)"#AARRGGBB"- ARGB with alpha (e.g.,"#80FF0000"for 50% transparent red)
- Use
""(empty string) to use default app values - Omit properties entirely to use defaults
Controls appearance of list items (music lists, file browsers, etc.):
"itemConfig": {
"itemTextColor": "#ffffff",
"itemSelectedTextColor": "#ffffff",
"itemBackground": "",
"itemSelectedBackground": "1.png",
"itemRightArrow": "2.png"
}Properties:
itemTextColor- Text color for unselected itemsitemSelectedTextColor- Text color for selected itemsitemBackground- Background image for unselected items (640Γ91px)itemSelectedBackground- Background image for selected items (640Γ91px)itemRightArrow- Right arrow indicator image (small icon)
Controls appearance of dialog boxes and popups:
"dialogConfig": {
"dialogOptionBackground": "3.png",
"dialogOptionTextColor": "#ffffff",
"dialogOptionSelectedBackground": "4.png",
"dialogOptionSelectedTextColor": "#ffffff",
"dialogBackgroundColor": "#000000",
"dialogTextColor": "#ffffff"
}Properties:
dialogOptionBackground- Background for dialog optionsdialogOptionTextColor- Text color for dialog optionsdialogOptionSelectedBackground- Background for selected dialog optiondialogOptionSelectedTextColor- Text color for selected optiondialogBackgroundColor- Overall dialog background colordialogTextColor- General dialog text color
Controls appearance of main menu and menu items:
"menuConfig": {
"menuBackgroundColor": "#000000",
"menuItemBackground": "",
"menuItemTextColor": "#ffffff",
"menuItemSelectedBackground": "1.png",
"menuItemSelectedTextColor": "#ffffff"
}Properties:
menuBackgroundColor- Background color of main menumenuItemBackground- Background image for unselected menu itemsmenuItemTextColor- Text color for unselected menu itemsmenuItemSelectedBackground- Background image for selected menu itemmenuItemSelectedTextColor- Text color for selected menu item
This is where ALL main menu icons are defined!
"homePageConfig": {
"nowPlaying": "Now Playing.png",
"music": "Music.png",
"video": "Videos.png",
"audiobooks": "Audiobooks.png",
"photos": "Photos.png",
"fm": "FM Radio.png",
"bluetooth": "Bluetooth.png",
"settings": "Settings.png",
"shuffleQuick": "Shuffle Quick.png",
"ebook": "ebook.png",
"calculator": "calculator.png",
"calendar": "calendar.png"
}All Properties (Exhaustive List):
| Property | Menu Option | Image Size | Description |
|---|---|---|---|
nowPlaying |
Now Playing | 166Γ166px | Currently playing track |
music |
Music | 166Γ166px | Music library |
video |
Videos | 166Γ166px | Video library |
audiobooks |
Audiobooks | 166Γ166px | Audiobook library |
photos |
Photos | 166Γ166px | Photo gallery |
fm |
FM Radio | 166Γ166px | FM radio tuner |
bluetooth |
Bluetooth | 166Γ166px | Bluetooth settings |
settings |
Settings | 166Γ166px | Settings menu |
shuffleQuick |
Shuffle Quick | 166Γ166px | Quick shuffle play |
ebook |
E-book | 166Γ166px | E-book reader |
calculator |
Calculator | 166Γ166px | Calculator |
calendar |
Calendar | 166Γ166px | Calendar |
Important Notes:
- All icons are 166Γ166 pixels (MAIN_ICON size)
- If omitted, the app uses default built-in icons
- Empty string (
"") also triggers default icons - File names can be customized (don't need to match property names)
Icons for file types in file browsers:
"fileConfig": {
"folderIcon": "folder.png",
"musicIcon": "music_file.png"
}Properties:
folderIcon- Icon for folders in file browsermusicIcon- Icon for music files
EXHAUSTIVE list of all settings menu icons:
"settingConfig": {
"shutdown": "Shutdown@1x.png",
"timedShutdown_off": "Timed shutdown_001@1x.png",
"timedShutdown_10": "Timed shutdown_002@1x.png",
"timedShutdown_20": "Timed shutdown_003@1x.png",
"timedShutdown_30": "Timed shutdown_004@1x.png",
"timedShutdown_60": "Timed shutdown_005@1x.png",
"timedShutdown_90": "Timed shutdown_006@1x.png",
"timedShutdown_120": "Timed shutdown_007@1x.png",
"shuffleOn": "Shuffle_on@1x.png",
"shuffleOff": "Shuffle_off@1x.png",
"repeatOff": "Repeat_off@1x.png",
"repeatAll": "Repeat_all@1x.png",
"repeatOne": "Repeat_one@1x.png",
"equalizer_normal": "Equalizer_normal@1x.png",
"equalizer_classical": "Equalizer_classical@1x.png",
"equalizer_dance": "Equalizer_dance@1x.png",
"equalizer_flat": "Equalizer_flat@1x.png",
"equalizer_folk": "Equalizer_folk@1x.png",
"equalizer_heavymetal": "Equalizer_heavy metal@1x.png",
"equalizer_hiphop": "Equalizer_hiphop@1x.png",
"equalizer_jazz": "Equalizer_jazz@1x.png",
"equalizer_pop": "Equalizer_pop@1x.png",
"equalizer_rock": "Equalizer_rock@1x.png",
"keyLockOn": "Key lock_on@1x.png",
"keyLockOff": "Key lock_off@1x.png",
"keyToneOn": "Key tone_on@1x.png",
"keyToneOff": "Key tone_off@1x.png",
"keyVibrationOn": "Key vibration_on@1x.png",
"keyVibrationOff": "Key vibration_off@1x.png",
"wallpaper": "Wallpaper@1x.png",
"backlight_10": "Backlight_001@1x.png",
"backlight_15": "Backlight_003@1x.png",
"backlight_30": "Backlight_004@1x.png",
"backlight_45": "Backlight_005@1x.png",
"backlight_60": "Backlight_006@1x.png",
"backlight_120": "Backlight_007@1x.png",
"backlight_300": "Backlight_007@1x.png",
"backlight_always": "Backlight_002@1x.png",
"brightness": "Brightness@1x.png",
"displayBatteryOn": "Display battery_on@1x.png",
"displayBatteryOff": "Display battery_off@1x.png",
"dateTime": "Date & Time@1x.png",
"language": "Language@1x.png",
"launcher": "Launcher.png",
"factoryReset": "Factory@1x.png",
"clearCache": "Clear cache@1x.png",
"theme": "Change Theme@1x.png",
"fileExtensionOn": "file_ext_on.png",
"fileExtensionOff": "file_ext_off.png",
"settingMask": "settings_mask.png"
}All Setting Icons (Grouped by Category):
shutdown- Shutdown optiontimedShutdown_off,timedShutdown_10/20/30/60/90/120- Timed shutdown states
shuffleOn,shuffleOff- Shuffle mode togglerepeatOff,repeatAll,repeatOne- Repeat mode options
equalizer_normal,equalizer_classical,equalizer_danceequalizer_flat,equalizer_folk,equalizer_heavymetalequalizer_hiphop,equalizer_jazz,equalizer_pop,equalizer_rock
keyLockOn,keyLockOff- Key lock stateskeyToneOn,keyToneOff- Key tone stateskeyVibrationOn,keyVibrationOff- Key vibration states
backlight_10/15/30/45/60/120/300/always- Backlight timeout options (8 states)brightness- Brightness settingdisplayBatteryOn,displayBatteryOff- Battery display toggle
dateTime- Date & Time settinglanguage- Language selectionlauncher- Launcher/Rockbox togglefactoryReset- Factory resetclearCache- Cache clearingtheme- Theme selectionwallpaper- Wallpaper selectionfileExtensionOn,fileExtensionOff- File extension display toggle
settingMask- Settings screen overlay mask
Image Size: 146Γ146 pixels for all setting icons
Status bar indicators and battery icons:
"statusConfig": {
"playing": "play.png",
"audiobookPlaying": "audiobook_play.png",
"pause": "pause.png",
"fmPlaying": "fm_play.png",
"stop": "stop.png",
"blConnected": "bl_connected.png",
"blConnecting": "bl_connecting.png",
"blDisconnected": "bl_disconnected.png",
"headsetWithMic": "headset_mic.png",
"headsetWithoutMic": "headset_no_mic.png",
"statusBarColor": "#000000",
"battery": [
"battery.001.png",
"battery.002.png",
"battery.003.png",
"battery.004.png"
],
"batteryCharging": [
"batterycharge.001.png",
"batterycharge.002.png",
"batterycharge.003.png",
"batterycharge.004.png"
]
}Properties:
playing- Music playing indicatoraudiobookPlaying- Audiobook playing indicatorpause- Paused indicatorfmPlaying- FM radio playing indicatorstop- Stopped indicator
blConnected- Bluetooth connectedblConnecting- Bluetooth connectingblDisconnected- Bluetooth disconnected
headsetWithMic- Headset with microphone connectedheadsetWithoutMic- Headset without microphone connected
battery- Array of 4 battery level images (0-25%, 26-50%, 51-75%, 76-100%)batteryCharging- Array of 4 charging battery images
statusBarColor- Status bar background color
Image Size: 64Γ64 pixels (SMALL_ICON size) for status icons
Media player UI customization:
"playerConfig": {
"progressTextColor": "#ffffff",
"progressColor": "#00ff00",
"progressBackgroundColor": "#333333"
}Properties:
progressTextColor- Color of time/progress textprogressColor- Color of progress bar fillprogressBackgroundColor- Color of progress bar background
Place a TrueType font (.ttf) file in your theme directory:
"fontFamily": "YourFont.ttf"Supported Formats:
.ttf(TrueType Font)
Behavior:
- Applied globally throughout the app
- Overrides system default font
- Must be a valid font file
Font Loading Process:
- Theme manager copies font to temp location
- Font is loaded via
Typeface.createFromFile() - Applied to all text views in the app
Here's a complete, fully-documented example:
{
"theme_info": {
"title": "Complete Theme Example",
"author": "Theme Developer",
"authorUrl": "https://example.com",
"description": "A fully featured theme with all options"
},
"themeCover": "cover.png",
"desktopWallpaper": "desk_bg001.png",
"globalWallpaper": "global_bg001.png",
"desktopMask": "mask.png",
"fontFamily": "CustomFont.ttf",
"itemConfig": {
"itemTextColor": "#ffffff",
"itemSelectedTextColor": "#00ff00",
"itemBackground": "",
"itemSelectedBackground": "item_selected.png",
"itemRightArrow": "arrow_right.png"
},
"dialogConfig": {
"dialogOptionBackground": "dialog_bg.png",
"dialogOptionTextColor": "#ffffff",
"dialogOptionSelectedBackground": "dialog_selected.png",
"dialogOptionSelectedTextColor": "#ffff00",
"dialogBackgroundColor": "#333333",
"dialogTextColor": "#ffffff"
},
"menuConfig": {
"menuBackgroundColor": "#000000",
"menuItemBackground": "",
"menuItemTextColor": "#ffffff",
"menuItemSelectedBackground": "menu_selected.png",
"menuItemSelectedTextColor": "#00ff00"
},
"homePageConfig": {
"nowPlaying": "Now Playing.png",
"music": "Music.png",
"video": "Videos.png",
"audiobooks": "Audiobooks.png",
"photos": "Photos.png",
"fm": "FM Radio.png",
"bluetooth": "Bluetooth.png",
"settings": "Settings.png",
"shuffleQuick": "Shuffle Quick.png",
"ebook": "E-book.png",
"calculator": "Calculator.png",
"calendar": "Calendar.png"
},
"fileConfig": {
"folderIcon": "folder.png",
"musicIcon": "music_file.png"
},
"settingConfig": {
"settingMask": "settings_overlay.png",
"shutdown": "Shutdown.png",
"timedShutdown_off": "TimedShutdown_Off.png",
"timedShutdown_10": "TimedShutdown_10.png",
"timedShutdown_20": "TimedShutdown_20.png",
"timedShutdown_30": "TimedShutdown_30.png",
"timedShutdown_60": "TimedShutdown_60.png",
"timedShutdown_90": "TimedShutdown_90.png",
"timedShutdown_120": "TimedShutdown_120.png",
"shuffleOn": "Shuffle_On.png",
"shuffleOff": "Shuffle_Off.png",
"repeatOff": "Repeat_Off.png",
"repeatAll": "Repeat_All.png",
"repeatOne": "Repeat_One.png",
"equalizer_normal": "EQ_Normal.png",
"equalizer_classical": "EQ_Classical.png",
"equalizer_dance": "EQ_Dance.png",
"equalizer_flat": "EQ_Flat.png",
"equalizer_folk": "EQ_Folk.png",
"equalizer_heavymetal": "EQ_HeavyMetal.png",
"equalizer_hiphop": "EQ_HipHop.png",
"equalizer_jazz": "EQ_Jazz.png",
"equalizer_pop": "EQ_Pop.png",
"equalizer_rock": "EQ_Rock.png",
"keyLockOn": "KeyLock_On.png",
"keyLockOff": "KeyLock_Off.png",
"keyToneOn": "KeyTone_On.png",
"keyToneOff": "KeyTone_Off.png",
"keyVibrationOn": "KeyVib_On.png",
"keyVibrationOff": "KeyVib_Off.png",
"wallpaper": "Wallpaper.png",
"backlight_10": "Backlight_10.png",
"backlight_15": "Backlight_15.png",
"backlight_30": "Backlight_30.png",
"backlight_45": "Backlight_45.png",
"backlight_60": "Backlight_60.png",
"backlight_120": "Backlight_120.png",
"backlight_300": "Backlight_300.png",
"backlight_always": "Backlight_Always.png",
"brightness": "Brightness.png",
"displayBatteryOn": "BatteryDisplay_On.png",
"displayBatteryOff": "BatteryDisplay_Off.png",
"dateTime": "DateTime.png",
"language": "Language.png",
"launcher": "Launcher.png",
"factoryReset": "FactoryReset.png",
"clearCache": "ClearCache.png",
"theme": "ThemeSelector.png",
"fileExtensionOn": "FileExt_On.png",
"fileExtensionOff": "FileExt_Off.png"
},
"statusConfig": {
"playing": "status_playing.png",
"audiobookPlaying": "status_audiobook.png",
"pause": "status_pause.png",
"fmPlaying": "status_fm.png",
"stop": "status_stop.png",
"blConnected": "status_bt_on.png",
"blConnecting": "status_bt_connecting.png",
"blDisconnected": "status_bt_off.png",
"headsetWithMic": "status_headset_mic.png",
"headsetWithoutMic": "status_headset.png",
"statusBarColor": "#1a1a1a",
"battery": [
"battery_0.png",
"battery_25.png",
"battery_50.png",
"battery_75.png"
],
"batteryCharging": [
"battery_charging_0.png",
"battery_charging_25.png",
"battery_charging_50.png",
"battery_charging_75.png"
]
},
"playerConfig": {
"progressTextColor": "#ffffff",
"progressColor": "#00ff00",
"progressBackgroundColor": "#222222"
}
}Themes must be placed in:
/storage/sdcard0/Themes/YourThemeName/
- Create your theme directory on the SD card
- Add
config.jsonandcover.png(minimum required files) - Add any custom images referenced in config.json
- Open Y1 app β Settings β Theme
- Select your theme from the list
- Confirm to apply
The app validates themes by checking:
- Directory exists at
/storage/sdcard0/Themes/ config.jsonexists in theme directory- JSON is valid and parseable
- Referenced image files exist
- Use appropriate sizes: Don't use 1000Γ1000 images when 166Γ166 is needed
- Optimize PNGs: Use tools like
pngquantoroptipngto reduce file size - Transparency: Use alpha channel only where needed
- Test on device: Some images may look different on the actual hardware screen
- Contrast: Ensure sufficient contrast between text and backgrounds
- Readability: Test with actual device screen (often lower resolution/color depth)
- Dark mode friendly: Consider both light and dark backgrounds
- Consistency: Use consistent color palette throughout
- Validate JSON: Use a JSON validator before deploying
- Use empty strings: Use
""for properties you want to skip, notnull - Quote all strings: Even hex colors must be in quotes:
"#FF0000" - No trailing commas: Last item in objects/arrays must not have comma
- Case sensitive: Linux filesystem -
Music.pngβmusic.png - Special characters: Avoid spaces in filenames if possible
- Consistent naming: Use a consistent naming scheme (e.g., all lowercase, all PascalCase)
You don't need to define EVERY property. The app will:
- Use default icons for missing images
- Use default colors for missing color properties
- Continue to function with minimal config.json
Minimal viable theme:
{
"themeCover": "cover.png",
"desktopWallpaper": "bg.png",
"globalWallpaper": "bg.png",
"itemConfig": {
"itemTextColor": "#ffffff",
"itemSelectedTextColor": "#00ff00"
},
"menuConfig": {
"menuBackgroundColor": "#000000",
"menuItemTextColor": "#ffffff"
},
"homePageConfig": {
"music": "Music.png",
"settings": "Settings.png"
}
}An overlay image applied to the desktop/home screen:
"desktopMask": "overlay_mask.png"Use cases:
- Frame effects
- Vignetting
- Border decorations
- Screen texture overlays
An overlay image applied to the settings screen:
"settingConfig": {
"settingMask": "settings_overlay.png"
}Check:
- Theme directory is in
/storage/sdcard0/Themes/ config.jsonexists and is valid JSON- Directory name doesn't contain special characters
Check:
- File names in config.json match actual files (case-sensitive)
- Images are in PNG format
- Files are not corrupted
- Sufficient storage space available
Check:
- Colors use hex format with
# - Colors are quoted as strings
- No typos in property names (e.g.,
itemTextColornotitemTextColour)
Check:
- Font file is valid TTF format
- Font file name matches exactly in config.json
- Font file is in theme root directory
- Font has appropriate character set for your language
- A sleek, glassmorphic theme included with the Innioasis Y1
- Clean, minimalist interface with blue accent colors
- Demonstrates professional theme design principles
- Good starting point for customization
- Dark, stealthy theme with subtle UI elements
- Alternative color scheme focusing on readability
- Shows how to create atmospheric themes
- Perfect for beginners: Non-coders can use this as an excellent starting point
- Learn by doing: Replace images where you feel necessary and experiment with color codes
- Safe experimentation: Make small edits to
config.jsonto learn the ropes - More complex theme: Includes custom font and desktop mask
- Demonstrates advanced features: Shows how to balance functionality with visual appeal
- Educational value: Great for understanding how themes work through hands-on modification
-
themeCover- Theme preview -
desktopWallpaper- Desktop background -
globalWallpaper- Global background
-
itemConfigsection -
menuConfigsection -
homePageConfigsection with at least main icons -
dialogConfigsection
-
theme_infosection (metadata) -
desktopMask(overlay) -
fontFamily(custom font) -
settingConfig(all settings icons) -
statusConfig(status bar icons) -
playerConfig(player colors) -
fileConfig(file browser icons)
Use this checklist to ensure you have all main menu icons:
-
nowPlaying- Now Playing (166Γ166px) -
music- Music (166Γ166px) -
settings- Settings (166Γ166px)
-
video- Videos (166Γ166px) -
audiobooks- Audiobooks (166Γ166px) -
photos- Photos (166Γ166px) -
fm- FM Radio (166Γ166px) -
bluetooth- Bluetooth (166Γ166px)
-
shuffleQuick- Shuffle Quick (166Γ166px) -
ebook- E-book Reader (166Γ166px) -
calculator- Calculator (166Γ166px) -
calendar- Calendar (166Γ166px)
Total: 12 main menu icons
-
shutdown- Shutdown (146Γ146px) -
wallpaper- Wallpaper (146Γ146px) -
brightness- Brightness (146Γ146px) -
language- Language (146Γ146px) -
launcher- Launcher/Rockbox (146Γ146px) -
theme- Theme Selection (146Γ146px) -
factoryReset- Factory Reset (146Γ146px) -
clearCache- Clear Cache (146Γ146px) -
dateTime- Date & Time (146Γ146px)
-
shuffleOn/shuffleOff -
repeatOff/repeatAll/repeatOne
-
timedShutdown_off/10/20/30/60/90/120
-
equalizer_normal/classical/dance/flat/folk -
equalizer_heavymetal/hiphop/jazz/pop/rock
-
keyLockOn/keyLockOff -
keyToneOn/keyToneOff -
keyVibrationOn/keyVibrationOff
-
backlight_10/15/30/45/60/120/300/always
-
displayBatteryOn/displayBatteryOff -
fileExtensionOn/fileExtensionOff
Total: ~53 setting icons (many are toggle states)
-
playing -
audiobookPlaying -
pause -
fmPlaying -
stop
-
blConnected -
blConnecting -
blDisconnected
-
headsetWithMic -
headsetWithoutMic
-
battery[0]- 0-25% -
battery[1]- 26-50% -
battery[2]- 51-75% -
battery[3]- 76-100% -
batteryCharging[0]- Charging 0-25% -
batteryCharging[1]- Charging 26-50% -
batteryCharging[2]- Charging 51-75% -
batteryCharging[3]- Charging 76-100%
Total: 18 status icons
- Create theme directory structure
- Add config.json with minimal configuration
- Add cover.png
- Test on device - verify theme appears in list
- Add one section at a time (e.g., start with
homePageConfig) - Test after each section
- Verify images load correctly
- Check for JSON errors
- Adjust colors for readability
- Optimize image sizes
- Test with different content (long text, different languages)
- Verify all states (selected/unselected, on/off)
- Apply theme
- Navigate through all menus
- Check all settings options
- Verify status icons appear
- Test with music playback
β Invalid JSON syntax - Use a validator
β Missing required files - config.json and cover.png are mandatory
β Wrong image sizes - Use recommended dimensions
β Case mismatch - Music.png in config but music.png as filename
β Absolute paths - Use relative paths (just filenames)
β Non-PNG formats - Stick to PNG for compatibility
β Trailing commas - Remove comma after last property
β Unquoted colors - #FF0000 should be "#FF0000"
- Use hex color format:
#RRGGBBor#AARRGGBB - Online tools: color.adobe.com, coolors.co
- Recommended tools: GIMP, Photoshop, Affinity Designer
- Icon generators: Use AI tools or icon packs
- Transparency: Support alpha channel for overlays
- jsonlint.com
- Visual Studio Code with JSON extension
When uploading your theme folder, please include additional information and screenshots to help users discover and understand your theme.
Include screenshots in your theme folder with these naming conventions:
screenshot.jpg- Primary screenshotscreenshot2.jpeg- Additional screenshotscreenshot.gif- Animated GIF (will show first in theme previews)screenshot3.png- Additional static images
Taking Screenshots: The Innioasis Updater includes a Toolkit with a Remote Control tool for capturing static images of the Y1's screen. It takes around 10 seconds to make an initial connection.
Note: You'll need to have updated your firmware with Innioasis Updater at least once to enable screenshotting if your Y1 came with version 2.1.9 or earlier, as screenshotting isn't enabled out of the box.
Add theme metadata to your config.json file at the very top. Replace the opening { with this template:
{
"theme_info": {
"title": "My Theme",
"author": "John Doe",
"authorUrl": "https://johndoe.com",
"description": "A gorgeous theme for the Innioasis Y1 inspired by..."
},
// ... rest of your config
}π Complete Example: See the full MelodyMuncher config.json at github.com/y1-community/InnioasisY1Themes/blob/main/MelodyMuncher/config.json for a complete reference.
Field Descriptions:
- title: Your theme's display name
- author: Your name or pseudonym
- authorUrl: Link to your portfolio, Reddit post, website, or a cause you support (must be safe for work)
- description: Brief description of your theme's inspiration and features
Once you've created your theme (whether beginner or moderate level), it's time to share it with the community! Choose the submission method that works best for you.
There are several ways to share your themes with the community. Choose the method that works best for you!
Perfect for: Artists, designers, anyone who wants simplicity
The easiest way to share your theme is by uploading it to the community Google Drive folder.
- Go to: Community Themes Folder
- Click: "New" β "Folder upload"
- Select: Your complete theme folder (e.g.,
HoloPebble/) - Upload: The folder with all your theme files
- Done! The community will organize and add it to the official listings
- β No technical knowledge required
- β Just drag and drop your theme folder
- β Community handles the technical setup
- β Your theme gets added to themes.innioasis.app automatically
Perfect for: Showcasing work, getting feedback, building recognition
Share your theme on r/innioasis to get community feedback and showcase your creative work.
π Title Format:
[Theme] YourThemeName - Brief Description
Example: [Theme] HoloPebble - Glassmorphic theme with clean design
πΈ Include Screenshots: Upload 2-3 images showing your theme in action
π Important: Make sure your config.json file includes the theme_info section with your metadata:
{
"theme_info": {
"title": "HoloPebble",
"author": "Your Name",
"authorUrl": "https://your-reddit-profile.com",
"description": "A sleek, glassmorphic theme included with the Innioasis Y1 with clean blue accents"
}
}Note: This metadata should be in your theme's config.json file, not in the Reddit post itself. The community will use this information when adding your theme to the official listings.
## Theme: HoloPebble
**Description:** A sleek, glassmorphic theme included with the Innioasis Y1
**Features:**
- Clean, minimalist interface
- Blue accent colors
- Professional design principles
- Easy to read in all lighting conditions
**Screenshots:** [Include 2-3 screenshots showing the theme]
**Download:** [Link to your theme files or Google Drive]
**Author:** Your Name
**Portfolio:** https://yourwebsite.com
- β Get immediate community feedback
- β Showcase your creative process
- β Build recognition as a theme creator
- β Connect with other Y1 users
Perfect for: Developers, version control, automatic website listing
For those comfortable with technical workflows, GitHub provides the most robust submission method.
GitHub is a website where developers store and share code. Think of it like Google Drive for software projects. The Y1 themes are stored in a GitHub "repository" (like a shared folder).
- β Free hosting: Your themes get hosted on themes.innioasis.app automatically
- β Easy sharing: Others can download and use your themes
- β Version history: Track changes and updates to your themes
- β Community: Get feedback and suggestions from other theme creators
If you're new to GitHub or prefer a simpler approach, this section explains how to contribute themes using GitHub's web interface without needing to install any software.
π Step 1: Create a GitHub Account
- Go to: github.com
- Click: "Sign up" and create a free account
- Verify: Your email address
π΄ Step 2: Fork the Repository
- Go to: github.com/y1-community/InnioasisY1Themes
- Click: The "Fork" button (top-right corner)
- Result: This creates your own copy of the themes repository
π Step 3: Add Your Theme Files
- In your forked repository: Click "Add file" β "Upload files"
- Create folder: Type
HoloPebble/in the file path - Upload files:
config.json(with theme_info section)cover.pngscreenshot.jpg- All your theme images
- Click: "Commit changes"
π Step 4: Update the Theme List Note: This step is only needed if you're submitting directly via GitHub PR
- Find: Click on
themes.jsonin your repository - Edit: Click the pencil icon (Edit) to edit the file
- Add entry: Add your theme entry in alphabetical order:
{
"name": "HoloPebble",
"folder": "HoloPebble",
"screenshot": "./HoloPebble/screenshot.jpg",
"description": "A sleek, glassmorphic theme included with the Innioasis Y1",
"author": "Your Name",
"authorUrl": "https://yourwebsite.com"
}- Save: Click "Commit changes"
Important: If you're using Google Drive or Reddit submission methods, you don't need to edit themes.json - the community will handle this for you.
π Step 5: Submit Your Theme
- Click: "Contribute" β "Open pull request"
- Title: "Add HoloPebble by YourName"
- Description: Write a description of your theme
- Submit: Click "Create pull request"
- π Review: The repository maintainers will review your theme
- β Approval: If everything looks good, they'll approve your pull request
- π Live: Your theme will appear on themes.innioasis.app automatically
- π§ Notification: You'll get an email when your theme is approved
β "I can't find the Fork button"
- β Make sure you're logged into GitHub
- β The button is in the top-right corner of the repository page
β "My theme isn't showing up"
- β
Check that your
config.jsonhas thetheme_infosection - β Verify all image files are uploaded correctly
- β
Make sure your
themes.jsonentry is in the right alphabetical position
β "I made a mistake"
- β You can edit files by clicking the pencil icon
- β Commit changes to save your edits
- β You can also delete files if needed
If you're still having trouble:
- π§ Contact: teamslide@proton.me
- π Submit Issue: On the GitHub repository
- π¬ Community: Ask for help on r/innioasis at www.reddit.com/r/innioasis
Don't worry if the JSON editing seems intimidating! Here are some resources to help:
JSON Validators (to check your syntax):
- jsonlint.com - Paste your JSON and it will check for errors
- jsonformatter.org - Formats and validates JSON
Template Files:
- Copy an existing theme's
config.jsonand modify it - Use the examples in this guide as starting points
- Start simple and add complexity gradually
Community Support:
- Contact teamslide@proton.me for direct help
- Ask questions on r/innioasis at www.reddit.com/r/innioasis
- Submit an issue on the GitHub repository if you get stuck
-
Crediting others: If adding someone else's theme, ensure you credit them properly in the theme details and provide a link to where you found it in the
authorUrlfield. -
Opt-out option: If you don't wish for your theme to be listed on https://themes.innioasis.app or in the Google Drive repository, contact the team at teamslide@proton.me or submit an issue on the repository.
-
Documentation: The team will try to add and document authors for themes found online, with proper attribution.
Before submitting your theme:
-
config.jsonincludestheme_infosection with all required fields -
cover.pngis present and properly sized - Screenshots are included (
screenshot.jpg, etc.) - All referenced image files exist in the theme folder
- JSON syntax is valid (use a validator)
- Theme has been tested on actual Y1 hardware
- Description accurately represents the theme
- Author information is complete and accurate
Creating a complete theme requires:
- Minimum: 2 files (config.json + cover.png)
- Basic theme: ~15 files (config + wallpapers + main icons)
- Complete theme: 70+ files (all icons + states + custom font)
Total possible customization:
- 12 main menu icons
- 53+ settings icons (including states)
- 18 status bar icons
- Multiple wallpapers and masks
- Custom font
- Color schemes for all UI elements
Start simple, test frequently, and add complexity gradually!
Happy Theming! π¨