Back to Lab

Theming the Fluxer desktop client

Two CSS themes for Fluxer Desktop, and what it takes to make a theme survive updates.

  • Learning

What this is

Two custom themes for the Fluxer desktop app: Cyberpunk Terminal, a neon terminal look built from eight modules, and Grund, a minimal neutral theme.

How it works

Fluxer themes are plain CSS. Cyberpunk Terminal is split into modules so each part can be turned on or off: colours, fonts, a CRT effect with scanlines, glow and flicker on the chat column only, and a background image behind the chat.

What I learned

  • Theme variables survive updates; class names do not. The colour module uses only Fluxer’s own theme variables and has never broken. Modules that target the app’s internal class names can break whenever Fluxer renames a class in an update. Grund uses only the variables for that reason.
  • The chat column is not the background you would expect. It is coloured by the composer-surface variable, not the primary background. It is also its own stacking context, which is what makes an overlay effect like the CRT scanlines possible there.
  • Images go in as theme assets. fluxer-theme-asset("name") in the CSS turns into a link to an uploaded image, so a background needs no external hosting.
  • Themes used to disappear after an app update, because they are stored per origin and the origin changed. Newer versions keep the origin fixed.