Skip to content

Theme, tabs and grid

Theme

A theme is an object. The visual editors do not expose simplified light/dark presets because those cannot represent the actual options. The app reads old string values for compatibility; new configuration should use the complete form:

{
  "theme": {
    "background_color": "#121212",
    "primary_color": "#2d2d2d",
    "accent_color": "#80c100",
    "text_color": "#ffffff",
    "accent_text_color": "#000000",
    "corner_radius": 12,
    "ui_scale": 1.0,
    "padding": 8,
    "gap": 6
  }
}

Colours accept #RRGGBB and #AARRGGBB. corner_radius is capped at 64 dp, padding at 48 dp and gap at 32 dp. ui_scale, or its font_scale alias, ranges from 0.85 to 1.8. Every widget and badge may override individual values using theme or theme_override; a grid passes its local scope to children.

Tabs

{
  "id": "home",
  "title": "Home",
  "icon": "home",
  "columns": 3,
  "show_text": true,
  "tab_icon_size": 18,
  "tab_text_size": 16,
  "badges_align": "left",
  "widgets": []
}

id and widgets are required. Further options are type (default or music_assistant), show_badges, badges, columns, icon, show_text/show_title, tab_icon_size, tab_text_size and badges_align. Globally, tab_height, tab_padding_horizontal, tab_alignment (equal, left, right), settings_tab_width, show_tab_text and tab_order control the bar.

Grid

Tabs and widgets use columns. Children may set row, col, rowspan/row_span, colspan/col_span, cell_width/column_width, cell_height/row_height, cell_aspect_ratio, min_height, gap and margin. Without fixed sizes, native layout distributes available width. Device preview reproduces that fixed layout and scales only the complete device surface.