Skip to content

Themes

Prism ships five palettes. Choose one under Settings → Appearance → Palette.

Prism The original. Cool blues on a clean surface.
Clay Warm earth tones. Easier on the eyes in a bright kitchen.
Harvest Late autumn. Amber, bark and a low sun.
Snow Day Cold light and pale blue. Quiet, and easy to read.
Arcade Sixteen-bit console. Saturated primaries on near-black.

What is per-screen and what is not

The palette is for the whole house. Change it on a phone and the kitchen display changes too. It is a decision about how your home looks, and a house where every screen is a different colour is a house where something looks broken.

Light and dark are per-screen. That is a decision about the room a particular screen is in — a hallway display at night and a tablet in a bright kitchen want different answers, and both are right at the same time.

The same split applies to the screensaver timeout and text size, which are also per-screen.

Readability

Every palette is checked before it can ship. Contrast is measured on eight text pairs in both light and dark; anything that falls below a readable ratio is rejected rather than shipped and apologised for.

This is stricter than it sounds for a reason. Prism is read from across a room, often by someone who is not wearing their glasses, sometimes by a child. A palette that looks striking on a laptop and turns the calendar into grey on grey is worse than no palette at all, because the person looking at it usually cannot tell whether the fault is the theme or the screen.

If a palette makes Prism unreadable

Add ?theme=default to the address:

http://your-prism-address/?theme=default

That resets to the default palette and saves the change, so the screen comes back the next time it loads too.

It exists because a wall display has no keyboard, and a palette with a broken background and text pairing can make the Settings page itself unreadable — which would otherwise mean opening a terminal to recover a colour choice.

Sharing a theme

A theme is nothing but colour values, so it can be passed between households. Three ways, and they differ in what happens to your work:

  • As a file: Settings → Display → Palette → Share → Download file saves the palette in use as a .json file. Send it however you like; the other household installs it with Import, next to Browse. No GitHub account is needed, and the file goes only to the people you send it to.
  • Through the gallery: anyone can install it, and it stays yours. Submitting needs a GitHub account.
  • As a contribution: it ships with Prism for everyone, which needs the Contributor License Agreement, because Prism then distributes it.

Neither of the last two is better. community/themes/README.md has the detail, including what is checked and what is not allowed.

An imported file gets the same checks as a gallery theme. It is refused if its name matches a built-in palette or a theme already installed, so an import never replaces one; remove the old one first or rename the theme in the file.

Beyond colour

A palette also carries three shape values, which is what stops the themes reading as tints of one another:

  • Corner rounding — square through to soft. Arcade is square; Snow Day is the roundest.
  • Density — how much space sits inside and between cards. Snow Day is airy, Arcade is tight.
  • Border weight — from none to heavy. Snow Day has no borders at all and separates things with space; Arcade outlines everything.

All three are capped. Past a point they stop being style and start looking like a layout fault, and whoever installed the theme cannot tell the difference.

What a theme cannot change

Themes set surface and text colours. They do not currently change:

  • family member colours, which are per-person and set on each member
  • the fixed colours used for chore status and task priority
  • fonts, spacing or corner radius

Family member colours are deliberately excluded: they identify a person across the whole app, and a palette should not be able to reassign who is green.