From 33d1cf017fb4668742ecf80f2b41d9dd9473efb5 Mon Sep 17 00:00:00 2001 From: nevaforget <> Date: Sat, 12 Sep 2026 02:01:14 +0200 Subject: [PATCH] fix(theme): install the GTK theme at all, and make it Mocha MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two defects, found while porting moonix's switch back. Nothing installed a GTK theme. settings.ini named Colloid-Grey-Dark-Catppuccin and the PKGBUILD symlinked /usr/share/themes/Colloid-Grey-Dark-Catppuccin/gtk-4.0/ into /etc/xdg, but no package in either list ships it: colloid-catppuccin-theme-git is a split package of colloid-icon-theme-git running `install.sh -s catppuccin`, which installs icons only, and kvantum-theme-catppuccin-git is Qt. A fresh install got Adwaita and three dangling symlinks. post-install.sh already had the error branch for this — "GTK4 theme not found … libadwaita apps will use fallback theme" — firing on every fresh machine. The package name is what hid it: colloid-catppuccin-theme-git reads like a GTK theme and is an icon set. aur.txt now says so in a comment, and the icon entry stays — there is no Mocha icon counterpart and none is needed. The theme was also never Mocha. Colloid's catppuccin tweak produces Frappé with a grey accent (base #292c3c, selection #ccd0da); #1e1e2e and #b4befe appear nowhere in its gtk.css. Kvantum, Zed and the lock screen were all Mocha, so GTK was the one layer out of step, unnoticed because the two dark bases sit close together. catppuccin-gtk-theme-mocha is maintained by Catppuccin itself and ships the upstream 1.0.3 release zips. No change in shape: their GTK theme is Colloid, carried as a git submodule and recolored, so widget shapes and spacing are exactly what they were. The name will not match moonix, ever. Arch installs the release zips, whose directories carry the full build name including the +default tweak marker; nixpkgs builds the same 1.0.3 from source without tweaks and drops the suffix. moonix therefore keeps rewriting this one value when it deploys settings.ini — a permanent difference now, not a migration step. --- CLAUDE.md | 2 +- DECISIONS.md | 8 ++++++++ README.md | 2 +- defaults/etc/greetd/regreet.toml | 2 +- defaults/xdg/gtk-3.0/settings.ini | 2 +- defaults/xdg/gtk-4.0/settings.ini | 2 +- packages/aur.txt | 9 +++++++++ scripts/post-install.sh | 2 +- 8 files changed, 23 insertions(+), 6 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 2b1b310..f2151a6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -158,7 +158,7 @@ System-wide generic-family defaults via `defaults/etc/fonts/conf.d/65-moonarch-f ## Qt Theming (Catppuccin via Kvantum) -Qt apps (e.g. VLC) get the Catppuccin Mocha look via the **Kvantum** style engine — GTK theming (Colloid) does not cover Qt, and the Qt5 GTK-follow path (`qt5-styleplugins`) is unmaintained and not in the official repos. +Qt apps (e.g. VLC) get the Catppuccin Mocha look via the **Kvantum** style engine — GTK theming does not cover Qt, and the Qt5 GTK-follow path (`qt5-styleplugins`) is unmaintained and not in the official repos. - **Style — `QT_STYLE_OVERRIDE=kvantum` is the workhorse.** A single value themes **both Qt5 (VLC 3) and Qt6**. `QT_QPA_PLATFORMTHEME` cannot: one value selects either the Qt5 `qt5ct` plugin or the Qt6 `qt6ct` plugin, never both. The style override sidesteps that, so we ship `kvantum` + `kvantum-qt5` (Qt6 + Qt5 style plugins) and **skip `qt5ct`**. - **Theme:** `kvantum-theme-catppuccin-git` (AUR) installs all flavors to `/usr/share/Kvantum/`; `defaults/xdg/Kvantum/kvantum.kvconfig` selects `catppuccin-mocha-lavender` (matches the ecosystem Lavender accent `#b4befe`). diff --git a/DECISIONS.md b/DECISIONS.md index 32be754..70bdc57 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -1,5 +1,13 @@ # Decisions +## 2026-09-12 – GTK theme: the package was never installed, and it was never Mocha + +- **Who**: Dominik, ClaudeCode +- **Why**: Two separate defects, found while porting moonix's Mocha switch back. (1) **Nothing installed a GTK theme at all.** `settings.ini` named `Colloid-Grey-Dark-Catppuccin` and the PKGBUILD symlinked `/usr/share/themes/Colloid-Grey-Dark-Catppuccin/gtk-4.0/` into `/etc/xdg`, but no package in either list ships it: `colloid-catppuccin-theme-git` is a split package of `colloid-icon-theme-git` running `install.sh -s catppuccin`, which installs **icons only**, and `kvantum-theme-catppuccin-git` is Qt. A fresh install therefore got Adwaita and three dangling symlinks. `post-install.sh` even had the error branch for it — "GTK4 theme not found … libadwaita apps will use fallback theme" — which fires on every fresh machine and was read as noise. (2) **The theme was never Mocha.** Colloid's `catppuccin` tweak produces Frappé with a grey accent (base `#292c3c`, selection `#ccd0da`); `#1e1e2e` and `#b4befe` appear nowhere in its `gtk.css`. Kvantum, Zed and the lock screen were all Mocha, so GTK was the one layer out of step — invisible because the two dark bases sit close together. +- **Tradeoffs**: (1) **Which package** — `catppuccin-gtk-theme-mocha`, maintained by Catppuccin itself, shipping the upstream 1.0.3 release zips for all fourteen accents. The alternative was building Colloid from source with the catppuccin tweak, which is what produced Frappé in the first place. No loss in shape either way: Catppuccin's GTK theme *is* Colloid — it carries `vinceliuice/Colloid-gtk-theme` as a git submodule and only recolors it, so widget shapes, radii and spacing are unchanged. (2) **Icons stay Colloid** — `colloid-catppuccin-theme-git` keeps its entry; it is the icon set and has no Mocha counterpart. Its name reads like a GTK theme, which is what hid defect (1); the list now says so in a comment. (3) **The name will not match moonix, ever** — Arch installs the release zips, whose directories carry the full build name including the `+default` tweak marker: `catppuccin-mocha-lavender-standard+default`. nixpkgs builds the same 1.0.3 from source with no tweaks and names it `catppuccin-mocha-lavender-standard`. Neither side can take the other's name without going out of its way, so moonix keeps rewriting this one value when it deploys `settings.ini` — no longer a migration measure but a permanent difference, and documented as such on both sides. (4) **Why the rewrite matters at all** — GTK3 reads `settings.ini` directly, and the dconf entry only reaches applications that ask GSettings, which on Wayland the GTK3 ones do not. A name that does not resolve puts every GTK3 application on Adwaita silently, which is precisely defect (1). +- **How**: `packages/aur.txt` gains `catppuccin-gtk-theme-mocha`, with comments recording what each of the two theme packages actually provides. Theme name updated in `defaults/xdg/gtk-3.0/settings.ini`, `gtk-4.0/settings.ini`, `defaults/etc/greetd/regreet.toml`, `scripts/post-install.sh` (`THEME_NAME`) and the three GTK4 symlinks in the PKGBUILD. `README.md` and `CLAUDE.md` follow. In moonix, `gtkSettings` now rewrites the new name instead of the Colloid one, with the comment rewritten to say the rewrite is permanent. +- **Worth checking on the next fresh install**: that `post-install.sh` no longer takes its "GTK4 theme not found" branch. That message firing is the signal that the theme package is missing again. + ## 2026-09-11 – gtklock replaces swaylock - **Who**: Dominik, ClaudeCode diff --git a/README.md b/README.md index bba1383..64cb8db 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ desktop that can be rebuilt from scratch in minutes. | **Display Management** | [kanshi](https://sr.ht/~emersion/kanshi/) + [wdisplays-persistent](https://github.com/sfs-pra/wdisplays) | kanshi auto-switches output profiles on hotplug. wdisplays-persistent saves changes directly to kanshi config. | | **Notifications** | [swaync](https://github.com/ErikReider/SwayNotificationCenter) | GTK4 notification daemon with DND toggle, grouping, MPRIS support. Fractional scaling via native GTK4. | | **Clipboard** | [cliphist](https://github.com/sentriz/cliphist) + quickshell | Clipboard history stored in runtime dir, wiped on session start. The quickshell bar provides the picker (`Super+C`) with search, image thumbnails, and per-entry delete. | -| **GTK Theme** | Colloid-Grey-Dark-Catppuccin | Catppuccin Mocha palette, grey accent, explicit dark variant. | +| **GTK Theme** | catppuccin-mocha-lavender-standard+default | Catppuccin Mocha with the Lavender accent, matching Kvantum and the lock screen. Catppuccin's GTK theme is Colloid recolored -- it carries vinceliuice's theme as a submodule -- so the widget shapes are unchanged from before. | | **Icons** | Colloid-Grey-Catppuccin-Dark | Catppuccin-colored icon set matching the GTK theme. | | **Cursor** | Sweet-cursors | Visible on dark backgrounds without clashing. | | **Font** | UbuntuSans Nerd Font | Clean sans-serif with full Nerd Font glyph coverage for bar/terminal icons. | diff --git a/defaults/etc/greetd/regreet.toml b/defaults/etc/greetd/regreet.toml index a9fc3b1..0b3b6ea 100644 --- a/defaults/etc/greetd/regreet.toml +++ b/defaults/etc/greetd/regreet.toml @@ -10,7 +10,7 @@ application_prefer_dark_theme = true cursor_theme_name = "Sweet-cursors" font_name = "UbuntuSans Nerd Font 12" icon_theme_name = "Colloid-Grey-Catppuccin-Dark" -theme_name = "Colloid-Grey-Dark-Catppuccin" +theme_name = "catppuccin-mocha-lavender-standard+default" [commands] reboot = ["systemctl", "reboot"] diff --git a/defaults/xdg/gtk-3.0/settings.ini b/defaults/xdg/gtk-3.0/settings.ini index a5d1a79..ec485b9 100644 --- a/defaults/xdg/gtk-3.0/settings.ini +++ b/defaults/xdg/gtk-3.0/settings.ini @@ -2,7 +2,7 @@ # ABOUTME: User overrides go in ~/.config/gtk-3.0/settings.ini [Settings] -gtk-theme-name=Colloid-Grey-Dark-Catppuccin +gtk-theme-name=catppuccin-mocha-lavender-standard+default gtk-icon-theme-name=Colloid-Grey-Catppuccin-Dark gtk-font-name=UbuntuSans Nerd Font 11 gtk-cursor-theme-name=Sweet-cursors diff --git a/defaults/xdg/gtk-4.0/settings.ini b/defaults/xdg/gtk-4.0/settings.ini index 992d949..78db128 100644 --- a/defaults/xdg/gtk-4.0/settings.ini +++ b/defaults/xdg/gtk-4.0/settings.ini @@ -2,7 +2,7 @@ # ABOUTME: User overrides go in ~/.config/gtk-4.0/settings.ini [Settings] -gtk-theme-name=Colloid-Grey-Dark-Catppuccin +gtk-theme-name=catppuccin-mocha-lavender-standard+default gtk-icon-theme-name=Colloid-Grey-Catppuccin-Dark gtk-cursor-theme-name=Sweet-cursors gtk-cursor-theme-size=24 diff --git a/packages/aur.txt b/packages/aur.txt index 39952ff..57d8940 100644 --- a/packages/aur.txt +++ b/packages/aur.txt @@ -5,6 +5,15 @@ # paru # Theming +# GTK widgets. Maintained by Catppuccin itself; ships the upstream release +# zips, so the theme directory carries the full build name including the +# `+default` tweak marker. NixOS builds the same 1.0.3 from source without +# tweaks and therefore names it without that suffix -- moonix rewrites this +# name when it deploys the settings.ini, and has to keep doing so. +catppuccin-gtk-theme-mocha +# Icons only, despite the name: a split package of colloid-icon-theme-git +# running `install.sh -s catppuccin`. It installs nothing under +# /usr/share/themes, which is why the GTK theme above has to be its own entry. colloid-catppuccin-theme-git kvantum-theme-catppuccin-git diff --git a/scripts/post-install.sh b/scripts/post-install.sh index e2798b2..965acd8 100755 --- a/scripts/post-install.sh +++ b/scripts/post-install.sh @@ -87,7 +87,7 @@ fi # --- User-level GTK4 symlinks for libadwaita apps --- -THEME_NAME="Colloid-Grey-Dark-Catppuccin" +THEME_NAME="catppuccin-mocha-lavender-standard+default" THEME_GTK4="/usr/share/themes/$THEME_NAME/gtk-4.0" if [[ -d "$THEME_GTK4" ]]; then