ORION
Theming guide

Make ORION yours.

Everything ORION looks like comes from a theme: the sky behind it, the glass, the colours, how round things are, the fonts and the sounds. A theme is a short text file. Write one in a few lines, give each tab its own, and watch every change happen live.

Your first theme

Three lines, five steps

A theme only says what it changes. Everything else comes from the theme it extends, ORION's own unless it names another.

  1. Make a text file, say gold-rush.theme, with the lines on the right.
  2. Copy it to the console's /data/orion/themes/ (over FTP, for example).
  3. Open ORION and press R3 for Settings.
  4. Go to Appearance, then Theme for every tab (or Theme for the tab you are on, for that tab alone).
  5. Pick Gold Rush. Your own themes are marked (yours).
# gold-rush.theme
name = Gold Rush

[palette]
accent  = #ffc94a   # labels, counts, the cursor
primary = #ffc94a   # the selected tab, focused keys

You can also make one on the console: adjust the look in Appearance, then choose Save as new theme and name it. ORION writes it to /data/orion/themes/, where you can copy it off, edit it and share it.

Live preview

See it before you leave Settings

While you are in the Appearance rows, Settings narrows to a panel at the side and the library behind it shows each change the moment you make it: a new theme, background, sky, nebula, clouds, glass tint and opacity, highlight, accent, corners, tab style, focus ring and the rest.

Step back to the list of sections and Settings fills the screen again. Your choices are saved as you go, in /data/orion/theme.json, on top of the theme you picked.

Settings as a panel at the right; the library behind it wears the Acrylic theme just chosen
Choosing Acrylic in Appearance: the sky, the tab pills and the glass change behind the panel.
A theme per tab

Every tab can dress differently

A Retro tab in Pixel, Favourites in gold, the SNES tab in something purple. On that tab, open Settings: the first row of Appearance is Theme for that tab. Or go to Settings, Tabs, pick the tab, then Theme. The rest of ORION keeps Theme for every tab and the rows under it.

On a tab's page the library behind Settings switches to that tab, so you see its theme, cover shape, sort and view as you choose them. Leave the page and ORION goes back to the tab you were on. Set a tab back to Main theme to make it follow Appearance again.

Systems count as tabs too: on the Emulators tab, each system (GBA, SNES, PS2, …) can wear its own theme.

The SNES tab's page in Settings, with the SNES tab showing in the library behind it
The SNES tab's own page: Theme, Cover shape, Sort by and View, with the SNES tab behind.
The .theme format

Readable, forgiving, and nothing runs

A .theme file is lines of key = value, grouped under [sections], with comments wherever you like. It is data, not a program: a theme can change how ORION looks, never what it does.

The rules

  • Keys before the first section belong to the theme itself: name, id, author, description, family, extends, dark.
  • Each section is one group of keys: [page], [palette], [shape], [type], [motion], [orion].
  • A line starting with #, ; or // is a comment, and so is anything after # on a line. A colour such as #ffc94a is never mistaken for one.
  • Colours are #rrggbb, or #rrggbbaa with an opacity from 00 to ff.
  • colors and params are lists, separated by spaces or commas.
  • true, false and numbers are themselves; anything else is text. Quote text that holds # : author = "Ann # Bo".
  • No id? It is made from the name: Nebula Noir becomes nebula-noir.
  • A key written twice keeps the later value. Numbers out of range are clamped; keys ORION does not know are ignored.
# nebula-noir.theme
name    = Nebula Noir   # shown in Settings
author  = you
extends = orion         # built-in or yours

[page]
background = galaxy
colors     = #000000 #02040b #3a1f6a #0a4a66

[palette]
surface = #140b2a80   # glass tint, 50 % opaque
accent  = #ffc94a
primary = #ffc94a

[shape]
radius_card = 30

[orion]
clouds        = 80      # percent
cover_corners = 28
tabs          = plain
focus_ring    = aurora

JSON works too. The built-in themes and Save as new theme use .json with the same keys, each section an object ("palette": {"accent": "#ffc94a"}). ORION reads both from the same folder.

Reference

Every key

All optional except name. template.theme has every one of them with ORION's own values, ready to copy.

The theme itself (before any section)

KeyValueWhat it does
name1–40 charactersShown in Settings
id1–40 of a-z 0-9 - _Unique among your themes; made from the name when left out
author, descriptiontextWho made it, one line about it
familytextThe design language it belongs to
extendsa theme idWhere every key it leaves out comes from: a built-in theme or one of yours (default orion)
darktrue / falseLight controller glyphs for a dark page

[page]: what is behind everything

KeyValueWhat it does
backgrounda nameThe animated backdrop, see Backgrounds
colorsup to 4 coloursThe backdrop's colours
paramsup to 4 numbersBackdrop-specific settings
colorcolourThe page behind everything
text, text_mutedcolourText drawn straight on the page (the title, the tab names)

[palette]: the colours of everything on it

KeyORION'sUsed for
surface#0d102466Panels and cards; the alpha is the glass opacity
surface_high#ffffff1fTracks, chips, fields
text, text_muted#f6f4ffText on panels
primary, on_primary#a9b8ffThe selected tab, focused keys, and the text on them
secondary, on_secondary#ffffff1aSecondary buttons and their text
accent#8fe3ffLabels, counts, the text cursor
outline, focus#ffffffHairlines, and the focus ring
shadow, light#ffffff7aShadows, and the rim of the glass
danger, success, warning#e5484dDelete, done, careful

[shape]: how things are built

KeyValueWhat it does
stylea styleThe surface style, see Surface styles
cornerround, chamfer, pixelThe shape of corners
radius0–200Controls; 100 or more makes pills
radius_cardnumberPanels and dialogs
border, button_bordernumber (−1: same as border)Outline widths
pill_chips, pill_switchestrue / falseFully round chips and switches
shadow_offset, shadow_blurnumberThe drop shadow
focus_width, focus_gapnumberThe focus ring's thickness and distance
underline_fieldstrue / falseText fields as an underline instead of a box

[type], [motion]: letters and movement

KeyValueWhat it does
heading, labelregular, semibold, display, mono, pixel, handThe faces for headings and labels
capstrue / falseLabels in capitals
trackingnumberExtra space between label letters
omeganumberHow fast things move; 60 or more snaps
dampingnumber1 settles, 0.5 bounces
soundsglass, paperThe sound effects

[orion]: ORION's own pieces

KeyValueWhat it does
clouds0–200 (%)Nebula clouds drifting behind the glass
motiontrue / falseThe background drifts, or holds still
cover_corners0–48How round the covers are
tabsplain, pillsHome-screen text tabs, or pills on a frosted track
focus_ringaurora, themeA ring of drifting colour, or the theme's own
platesnone, outline, glassBehind the bottom bars
badgestrue / falseGAME, HOMEBREW, MEDIA, PS4 banners on covers
cover_rimtrue / falseA hairline of light around each cover
[page] background

Backgrounds

Every background is animated and drawn by ORION itself. colors sets its four colours, in the order below.

NameWhat it isIts colours
galaxyA star field with a nebula (ORION's)space, space, nebula, far nebula
auroraSlow, warped colour cloudsbase, base, clouds, clouds
wavesLayered ribbonsbase, base, ribbons, ribbons
bokehDrifting soft discsbase, base, discs, discs
gradientA gradient with a highlight; params 0–2 are its x, y and strengthtop, bottom, highlight
synthwaveA neon floor and a sunsky, horizon, lines, sun
dotsA dot matrix with a travelling pulsebase, base, dots
vistaParallax ridges under a sky; param 0 is the scroll speedsky, haze, far ridge, near ridge
paperWarm paper with grainpaper, paper, light
phosphorCRT glassdark, glow
noneOnly the page colour
[shape] style

Surface styles

The style is most of what makes one design language different from another.

glass

ORION's: the screen behind, blurred and tinted with surface.

flat · soft · hard

Plain fills; soft shadows; hard offset shadows for neo-brutalism.

neumorphic · bevel · gloss

Pressed-in clay, a bevelled desktop, glossy skeuomorphic buttons.

outline · glow

Only the rims; rims that glow, for a sci-fi console.

pixel · sketch

Square 8-bit edges with a pixel face; hand-drawn lines on paper.

extends

31 built-in themes to start from

Name any of these in extends and change only what you want. The id is what goes in the file.

ThemeidThemeid
ORIONorionAcrylicacrylic
AdminadminBlueprintblueprint
BrutalbrutalCandycandy
ChakrachakraClassicclassic
ClayclayCodecode
ContrastcontrastCrispcrisp
DaisydaisyEnterpriseant
FeatherweightlightFreshfresh
FriendlyfriendlyGlossgloss
HazardhazardHumanehumane
LayerslayersMaterialpaper
NeutralneutralPicopico
PillpillPixelpixel
SketchsketchSoftsoft
StandardstandardTilestiles
Utilityutility
Examples

Small files, big changes

# retro.theme: an 8-bit tab
name    = Retro Night
extends = pixel

[page]
background = synthwave
colors = #12002b #3b0a5e #ff3ea5 #ffb347

[orion]
cover_corners = 0
# paper.theme: light and calm
name    = Notebook
extends = sketch
dark    = false

[palette]
accent  = #c2410c
primary = #1d4ed8

[motion]
sounds = paper
# still.theme: ORION, holding still
name = Still Galaxy

[orion]
motion     = false
clouds     = 40
focus_ring = theme
badges     = false
cover_rim  = true
Skipped, never fatal

When a theme does not appear

A file ORION cannot use is skipped and the rest still load. Why is written to /data/orion/themes.txt, with the line number for a .theme: line 7: expected key = value.

Names

Ids must be unique

Two themes with the same id: the second is skipped. A theme of yours cannot reuse a built-in theme's id; extends it instead.

Limits

Size and count

A theme file can be up to 256 KiB, and ORION keeps at most 128 themes. Files end in .theme or .json; anything else in the folder is ignored.