Gnome 3 hat das nette Feature, dass ein GTK-Theme eine light und eine darkVariante hat, und einzelne GTK-Anwendungen können sich aussuchen, welche Theme-Variante sie nutzen wollen. Nutzt eine Anwendung jedoch nicht GTK, so gibt es trotzdem eine Möglichkeit zumindestens einen dunklen Fenster-Rahmen zu erhalten.
Welche Farbe ein Fenster hat, hängt nur von einer X-Property ab. Starten wir einfach mal xprop
und klicken auf ein dark-theme-Fenster, dann gibt das Programm alle Properties aus. Darunter findet sich dann auch diese Zeile:
_GTK_THEME_VARIANT(UTF8_STRING) = "dark"
Man kann mit xprop
auch Properties setzen:
xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark"
Klickt man dann auf ein Fenster, müsste seine Titelleiste das dark theme nutzen.
Um das gleiche in C mit der xlib zu machen, reicht folgender Code:
void set_dark_theme(Display *dp, Window window) {
Atom atom = XInternAtom(dp, "_GTK_THEME_VARIANT", False);
Atom type = XInternAtom(dp, "UTF8_STRING", False);
XChangeProperty(
dp,
window,
atom,
type,
8,
PropModeReplace,
(const unsigned char*)"dark",
4);
}
Kommentare