Reported symptom: Electron applications and a Chromium-based browser, all set to follow the system, went light when the desktop went light and never came back. Nothing reported an error, and the portal was serving the correct value the whole time. Cause: ColorScheme set gtk-theme to "Adwaita-dark" for dark and "Adwaita" for light. Neither is installed on Fedora 44 -- only adw-gtk3 and adw-gtk3-dark are. GTK responds to an unknown theme name by falling back to its built-in default, which is LIGHT. So asking for light worked by accident, asking for dark silently produced light, and anything that takes its cue from the GTK theme rather than the portal stayed light no matter what org.freedesktop.appearance said. Verified: the portal emits correctly in both directions, so this was never the portal's fault. Second cause, the mirror of the first: gtk-3.0/settings.ini and gtk-4.0/settings.ini were pinned to adw-gtk3-dark and prefer-dark=1 and never regenerated. Under GNOME that file is ignored because gnome-settings-daemon publishes over XSETTINGS; under Hyprland nothing does, so for GTK3 it is authoritative -- and it contradicted the scheme in light mode. They are now generated from a template on every switch, gitignored as machine state, and seeded by link-dotfiles, the same shape kitty's current-theme.conf already uses. These directories are symlinked into the repository, so writing the live file directly would dirty the working tree on every theme switch. The failure was silent by construction, so it gets a test rather than a comment: gtk-theme-contract asserts every theme name Panama sets is actually installed, and that the generated GTK config agrees with the scheme in both directions. Verified it catches both original bugs. Claude-Session: https://claude.ai/code/session_01BRvzt4H8XXLPVH5MyYdk9L
21 lines
924 B
Plaintext
21 lines
924 B
Plaintext
# GENERATED FILE -- edit settings.ini.template instead.
|
|
#
|
|
# The theme name and dark preference below follow Panama's colour
|
|
# scheme, so this file is regenerated on every switch and is not
|
|
# committed. Under GNOME, gnome-settings-daemon publishes these over
|
|
# XSETTINGS and this file is ignored; under Hyprland there is no
|
|
# settings daemon, so for GTK3 it is authoritative -- which is why it
|
|
# has to change with the scheme rather than being pinned to dark.
|
|
#
|
|
[Settings]
|
|
# libadwaita apps normally take their dark preference from the
|
|
# org.freedesktop.appearance portal (served by xdg-desktop-portal-gtk, which
|
|
# reads gsettings). This file is the fallback for plain GTK4 apps and for the
|
|
# window before the portal answers.
|
|
gtk-application-prefer-dark-theme=@PREFER_DARK@
|
|
gtk-theme-name=@GTK_THEME@
|
|
gtk-icon-theme-name=Adwaita
|
|
gtk-font-name=Adwaita Sans 11
|
|
gtk-cursor-theme-name=oreo_blue_cursors
|
|
gtk-cursor-theme-size=24
|