rpynx v0.1.0pre-release

Design

Tokens

Colours, type sizes, radii and motion of the loader UI, with the constants they come from.

Source docs/LOADER_UI.md, app/ui/ui_internal.h, app/ui/ui_style.c
On this page

OLED dark with one accent colour. On an OLED Switch, black pixels are off, so the background is pure black.

Colour

Token (ui_internal.h)ValueUse
BG#000000Background
SURFACE#121215Cards and panels
LINE#26262d1 px hairline around cards and panels, so their edges show on black
SURFACE_HI#1f1f25Rows, buttons, controller-test chips
TEXT#f0f0f3Text
DIM#9b9ba4Secondary text, readable on black
ACCENT#ff5fa8 by defaultFocus, selection, lit chips. One value from the setting, not a second palette
RED#ff4b2bErrors. Orange-red, moved away from pink so “selected” and “problem” never look alike
AMBER#ffb547Warnings: performance issues, applet mode, unsaved
GREEN#52d48aSuccess

Only the accent changes with the setting. Background, cards, text and the status colours stay the same, so the separation between focus and errors holds for every accent. A custom hue within 25° of the error red shows a warning on the Layout page.

Accent presets

NameValueNameValue
Pink (default)#ff5fa8Teal#2dd4bf
Blue#25d0f2Lime#a3e635
Violet#a78bfaSky#60a5fa
Indigo#818cf8White#e5e7eb

Type

Token (ui_style.c)Size
f_s18 px
f_m22 px
f_l28 px
f_xl36 px
f_hero48 px, the Cinematic layout’s title
f_icon, f_icon_bigThe console’s button icons; 26 px in hints (see Button glyphs)
  • The text font is the console’s shared font “Standard”, read at run time from the pl service through tiny_ttf. The .nro carries no font file. It covers Latin and Japanese.
  • The console’s font reports a line box too tight for its own glyphs, so fit_lines() measures real glyphs (Á, g, j, 夏) and sets each size’s line box from them, with some air. Running text gets 8 px between lines.
  • Montserrat 14 is LVGL’s default font and the fallback for its arrow symbols.

Shape

ElementRadius
Covers20 px, baked into the thumbnail as transparency
Cards14 px
Rows10 px
Buttons12 px
Tags and chipsFull pill (LV_RADIUS_CIRCLE)

Cover corners are transparent pixels in the decoded thumbnail (ARGB), so a focused cover’s outline stays whole and the Cinematic art shows around them. Baked in black, they hid the middle of the outline’s arcs on the first hardware run.

Layout

ConstantValue
Screen1280 × 720
MARGIN48 px
HEADER_H76 px
FOOTER_H64 px
COVER_W × height220 × 330 (2:3)

Motion

All light, and only when something changes:

EffectDuration
Focus outline grows in120 ms
Fade between screens150 ms
Menu, notice and status line fade120 ms
Scroll to the focused itemanimated
Focused cover scaleRow 12 %, Grid and Cinematic 4 % (st_grow_row, st_grow)

A frame where nothing happened draws nothing. A test (tests/ui/mockups.c) fails if a settled screen keeps redrawing.

↑↓ move↵ openesc close