clockmost-desktop-theme

One command to re-skin the whole clockmost-linux desktop — and swap between looks cleanly.

clockmost-theme list             # themes + which is active
clockmost-theme current
clockmost-theme apply endfield    # palette + shape + fonts + kitty, in one move
clockmost-theme revert            # back to the state before the first apply

COSMIC stays the compositor; everything themeable on top of it is driven from here.

What a theme controls

themes/<name>/
├── theme.toml             meta, required packages, the three font roles
├── noctalia-palette.json  Material-3 palette  →  ~/.config/noctalia/palettes/<name>.json
├── noctalia.toml          shape deltas merged into ~/.local/state/noctalia/settings.toml
├── cosmic.toml            COSMIC shape: corner_radii / gaps / active_hint / frosted
└── kitty.conf             kitty type + surface (colours come from Noctalia's template)

How apply flows

noctalia-palette.json ─→ ~/.config/noctalia/palettes/<name>.json
        │  noctalia msg color-scheme-set custom <name>
        ▼
Noctalia bar + widgets + launcher            Noctalia templates
        │                                    └─→ GTK / Qt / KDE / kitty / btop
        ▼
noctalia-cosmic-theme bridge  ─→  COSMIC *colours* (theme RON import)

noctalia.toml ──(merge, validate, commit)──→ settings.toml   shape + font_family
cosmic.toml   ──────────────────────────────→ CosmicTheme.{Dark,Light}{,.Builder}/v2/*
theme.toml fonts ──────────────────────────→ CosmicTk interface_font / monospace_font
kitty.conf   ──(marked block)──────────────→ ~/.config/kitty/kitty.conf

Colour is one file (the palette). Shape, fonts and blur are per-surface because cosmic-settings appearance import only carries colour.

Safety

  • First apply snapshots every file it will touch to ~/.local/state/clockmost-theme/baseline/; revert restores it.
  • The Noctalia merge runs on a copy, is noctalia config validate-checked, and is only committed if valid.
  • Missing required packages are a warning, not a failure.

Gotchas baked in

  • COSMIC frosted is a BlurStrength enum with no None — use ExtremelyLow and the frosted_*: false flags. frosted: None breaks libcosmic theme parsing and crashes libcosmic apps.
  • ~/.local/state/noctalia/settings.toml is authoritative; ~/.config/noctalia/ config.toml is only a seed it overrides.
  • COSMIC interface font + some libcosmic apps need a re-login to fully repaint.

Later

Ship as pacman packages via the [clockmost] repo: clockmost-theme (this tool) + clockmost-theme-<name> (theme data under /usr/share/clockmost-themes/ <name>/). Then pacman -S clockmost-theme-endfield && clockmost-theme apply endfield is the whole install.

S
Description
One command to re-skin a whole Linux desktop and switch between themes cleanly
Readme MIT
2.6 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 56.3%
Shell 43.7%