diff --git a/fix-gtk4-dark.sh b/fix-gtk4-dark.sh new file mode 100755 index 0000000..d47c6b5 --- /dev/null +++ b/fix-gtk4-dark.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# fix-gtk4-dark.sh — point ~/.config/gtk-4.0/gtk.css at the dark Breeze +# GTK4 stylesheet so GTK4/libadwaita apps follow the dark desktop theme. +# +# Background: KDE's GTK sync (kde-gtk-config) symlinks gtk.css to the +# LIGHT Breeze stylesheet. GTK loads that file at user priority, which +# overrides libadwaita's dark mode, so GTK4 apps render light no matter +# what. KDE may rewrite the symlink whenever "Apply" is hit on the +# GNOME/GTK Application Style settings page — re-run this script if +# GTK4 apps go light again. Restart affected apps to pick up the change. + +set -euo pipefail + +dark=/usr/share/themes/Breeze/gtk-4.0/gtk-dark.css +target="$HOME/.config/gtk-4.0/gtk.css" + +if [ ! -f "$dark" ]; then + echo "error: $dark not found (is breeze-gtk installed?)" >&2 + exit 1 +fi + +if [ "$(readlink -f "$target" 2>/dev/null)" = "$dark" ]; then + echo "already fixed: $target -> $dark" + exit 0 +fi + +mkdir -p "${target%/*}" +ln -sfn "$dark" "$target" +echo "fixed: $target -> $dark" +echo "restart GTK4 apps to pick up the dark stylesheet"