Theme Development - joneavila/aesthetic GitHub Wiki
To enable alternates for your theme, create an active.txt
file. For details, see the muOS Themes documentation.
There are two main approaches to handle different screen resolutions:
See the application's LÖVE configuration file. The LÖVE configuration file sets the default resolution to 640x480, but the additional settings allow the application to scale to different resolutions. The love.load
function stores the actual dimensions to state by reading them using love.graphics
:
state.screenWidth, state.screenHeight = love.graphics.getDimensions()
Alternatively, you can use the muOS GET_VAR
function to get the screen dimensions when launching the application then pass the width and height as arguments:
WIDTH=$(GET_VAR device mux/width)
HEIGHT=$(GET_VAR device mux/height)
love . --screen-width $WIDTH --screen-height $HEIGHT
In addition, certain UI elements must be drawn considering the screen resolution, for example, font size is calculated based on the screen resolution.
Your theme can target various devices with these supported screen resolutions:
- 640x480 – RG35X and RG40XX devices (standard base resolution)
- 720x720 – RG CubeXX
- 720x480 – RG34XX/480p HDMI
- 720x576 – 576p HDMI
- 1280x720 – TrimUI Smart Pro/720p HDMI
- 1024x768 – TrimUI Brick
Source: Discord discussion thread
RGB lighting for your theme is configured through a rgbconf.sh
file located in the rgb
directory. This file is a shell script that calls muOS' led_control.sh
utility with parameters to control the LEDs.
An example from the default muOS Pixie theme:
/opt/muos/device/current/script/led_control.sh 1 76 225 173 1 225 173 1
While Aesthetic automatically generates this file based on selections in the RGB lighting screen, you can also manually create or modify it. The led_control.sh
script can be executed directly at any time to adjust lighting, e.g., by running the command above.
-
LED Mode 1: Solid Color (No Effects)
- Usage:
$0 1 <brightness_value> <right_joystick_r> <right_joystick_g> <right_joystick_b> <left_joystick_r> <left_joystick_g> <left_joystick_b>
- Example:
$0 1 255 255 0 0 0 0 255
(Right joystick color red, left joystick color blue) - Randomize:
$0 1 <brightness_value> randomize
(Randomize RGB values and send to /dev/ttyS5 until stopped)
- Usage:
-
LED Mode 2: Solid Color (Breathing, Fast)
- Usage:
$0 2 <brightness_value> <r_value> <g_value> <b_value>
- Example:
$0 2 255 0 255 0
(Green color at maximum brightness with fast breathing effect)
- Usage:
-
LED Mode 3: Solid Color (Breathing, Medium)
- Usage:
$0 3 <brightness_value> <r_value> <g_value> <b_value>
- Example:
$0 3 255 0 0 255
(Blue color at maximum brightness with medium breathing effect)
- Usage:
-
LED Mode 4: Solid Color (Breathing, Slow)
- Usage:
$0 4 <brightness_value> <r_value> <g_value> <b_value>
- Example:
$0 4 255 255 255 0
(Yellow color at maximum brightness with slow breathing effect)
- Usage:
-
LED Mode 5: Monochromatic Rainbow (Cycle Between RGB Colors)
- Usage:
$0 5 <brightness_value> <speed_value>
- Example:
$0 5 255 100
(Monochromatic rainbow effect at maximum brightness with speed 100)
- Usage:
-
LED Mode 6: Multicolor Rainbow (Rainbow Swirl Effect)
- Usage:
$0 6 <brightness_value> <speed_value>
- Example:
$0 6 255 100
(Multicolor rainbow swirl effect at maximum brightness with speed 100)
- Usage:
-
MustardOS/application > RGB Controller application – The built-in RGB controller application
The theme.sh
script lets you install or save themes. Located at /opt/muos/script/package/theme.sh
.
Usage:
/opt/muos/script/package/theme.sh <install|save> <theme_name>
-
install
: Set a theme as the current active theme -
save
: Backup the theme to storage (typically SD2 if using dual SD cards)
The theme_name
parameter should match the name shown in the theme selection menu.