Theming
Marchyo themes the system from two coordinated sources. The core desktop surfaces — GTK, Hyprland, Waybar, Mako, Ghostty, fzf, bat, hyprlock, starship, the console, and the Plymouth boot splash — are themed directly from the Jylhis Design System (their Stylix targets are explicitly disabled). Stylix supplies the base16 color scheme and fonts, and themes everything else — Qt, fontconfig, vicinae, and the remaining targets.
Options
Section titled “Options”| Option | Type | Default | Description |
|---|---|---|---|
marchyo.theme.enable |
bool |
true |
Enable the theming system |
marchyo.theme.variant |
"dark" or "light" |
"dark" |
Theme variant preference |
marchyo.theme.scheme |
string or null |
null |
Override the base16 color scheme (a base16-schemes name) |
marchyo.theme.fontScale |
number (0.5–4.0) |
1.25 |
Global font-size multiplier applied to every text surface |
marchyo.theme.themes |
list of string |
["jylhis-dark" "jylhis-light"] |
Themes available for runtime switching (pre-built into the closure) |
marchyo.theme.wallpaper.enable |
bool |
true |
Enable the generated Marchyo grid wallpaper where supported |
marchyo.theme.wallpaper.package |
package |
pkgs.marchyo-wallpapers |
Package providing generated Marchyo wallpaper assets |
Basic usage
Section titled “Basic usage”marchyo.theme = { enable = true; variant = "dark";};Color schemes
Section titled “Color schemes”By default the theme is the Jylhis Design System palette, derived from its tokens.json:
| Variant | Palette |
|---|---|
"dark" |
Jylhis Field (the dark ground) |
"light" |
Jylhis Sheet (the light ground) |
Both variants sit on a cool, near-neutral ground with a single bronze interactive accent, a benchmark-vermilion brand mark, and a structural contour blue used for linework only. Code colors are Emacs Modus Operandi (light) / Vivendi (dark), so syntax reads identically in every editor and terminal.
To use a different base16 scheme instead, set marchyo.theme.scheme to the name of a .yaml file shipped by the base16-schemes package:
marchyo.theme = { variant = "dark"; scheme = "gruvbox-dark-medium"; # any base16-schemes name, e.g. "nord"};Stylix carries the design system’s three type roles across the system. The defaults are:
| Role | Family | Package |
|---|---|---|
Display / headings (serif) |
Zilla Slab | pkgs.zilla-slab |
Body (sansSerif) |
Hanken Grotesk | pkgs.hanken-grotesk |
| Monospace | BlexMono Nerd Font (IBM Plex Mono, Nerd Font patched) | pkgs.nerd-fonts.blex-mono |
The Nerd Font patch of IBM Plex Mono is used for monospace because the desktop chrome — Waybar, Mako, hyprlock, Ghostty — needs the icon glyphs. To use a different stack, set the Stylix font options directly:
stylix.fonts.monospace = { package = pkgs.nerd-fonts.jetbrains-mono; name = "JetBrainsMono Nerd Font";};Font size
Section titled “Font size”marchyo.theme.fontScale is a single multiplier that resizes every text
surface at once — the Stylix-driven apps (Qt, fontconfig, GNOME/KDE) and the
directly-themed chrome alike (the terminal, Waybar, notifications, the lock
screen, the launcher, GTK apps, and the TTY console). It defaults to 1.25
(noticeably larger than upstream defaults). Set it to 1.0 to restore the
historical sizes, or higher for HiDPI-at-distance or accessibility:
marchyo.theme.fontScale = 1.5; # everything ~50% largerEach surface scales from its own base size and rounds to a whole number, so the proportions between surfaces are preserved.
Runtime theme switching
Section titled “Runtime theme switching”marchyo.theme.themes lists the themes available for runtime switching — no rebuild needed. Each listed theme’s desktop assets (Waybar CSS, Mako config, Hyprland colors, Ghostty colors, wallpaper) are pre-built into the system closure so a switch is an instant symlink swap. The default list is the Jylhis pair; add any base16-schemes name to make it switchable:
marchyo.theme.themes = [ "jylhis-dark" "jylhis-light" "nord" "gruvbox-dark-hard"];Runtime switching covers the directly-themed surfaces; Stylix-derived targets (Qt, fontconfig, …) follow the build-time variant/scheme until a rebuild. The switch is ephemeral — the next activation resets to the declarative default.
Wallpaper
Section titled “Wallpaper”A generated Marchyo grid wallpaper is enabled by default wherever it is supported. To disable it, or to supply your own wallpaper asset package:
marchyo.theme.wallpaper = { enable = false; # skip the generated wallpaper # package = pkgs.my-wallpapers; # or swap in a different asset package};Light mode
Section titled “Light mode”To use the light theme:
marchyo.theme = { variant = "light";};