Theming
Marchyo themes the system from two coordinated sources. The core desktop surfaces — GTK, Hyprland, Waybar, Mako, Ghostty, fzf, bat, hyprlock, starship, the console, the Vicinae launcher, 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, and the remaining targets.
The launcher is a slightly different case: rather than reading base16 slots, Marchyo generates two real Vicinae themes (jylhis-field for dark, jylhis-sheet for light) from the design tokens and registers both, so the full color surface — text, inputs, buttons, list and grid selection, scrollbars, tooltips — is covered rather than just the background/accent basics. See Launcher.
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 tinted-schemes catalog 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 in the tinted-theming/schemes catalog (the base16/ directory):
marchyo.theme = { variant = "dark"; scheme = "gruvbox-dark-medium"; # any tinted-schemes catalog 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, GTK CSS + the dconf color-scheme) are pre-built into the system closure so a switch is an instant symlink swap. The default list is the Jylhis pair; add any tinted-schemes catalog 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.
GTK apps follow a runtime switch on next launch (newly started apps read the
swapped ~/.config/gtk-{3,4}.0/gtk.css; libadwaita apps additionally restyle
live via the dconf color-scheme). The Quickshell bar (marchyo.shell.enable)
recolors live as well — it reads the active theme’s palette through the same
pointer — and Super+Shift+L cycles the theme from the compositor.
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";};