Skip to content

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.

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
marchyo.theme = {
enable = true;
variant = "dark";
};

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";
};

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% larger

Each surface scales from its own base size and rounds to a whole number, so the proportions between surfaces are preserved.

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.

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
};

To use the light theme:

marchyo.theme = {
variant = "light";
};