From 39a54374080dfd6e34a011ffe2f7e0ba9fca4039 Mon Sep 17 00:00:00 2001 From: Nam Anh Date: Fri, 20 Mar 2026 08:04:11 +0700 Subject: [PATCH] feat(generator/gtk): match GTK color scheme with ambxst --- modules/theme/GtkGenerator.qml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/modules/theme/GtkGenerator.qml b/modules/theme/GtkGenerator.qml index 95a4bb96..2661b40d 100644 --- a/modules/theme/GtkGenerator.qml +++ b/modules/theme/GtkGenerator.qml @@ -21,7 +21,7 @@ QtObject { const surfaceContainer = fmt(Colors.surfaceContainer) let css = "/* GTK Colors generated by Ambxst */\n\n" - + css += `@define-color accent_color ${primary};\n` css += `@define-color accent_fg_color ${onPrimary};\n` css += `@define-color accent_bg_color ${primary};\n` @@ -35,8 +35,8 @@ QtObject { css += `@define-color view_fg_color ${onBackground};\n` css += `@define-color card_bg_color ${surfaceContainer};\n` css += `@define-color card_fg_color ${onSurface};\n` - - // Sidebar typically matches window or has slight contrast. + + // Sidebar typically matches window or has slight contrast. // Using window variables as reference. css += `@define-color sidebar_bg_color @window_bg_color;\n` css += `@define-color sidebar_fg_color @window_fg_color;\n` @@ -46,17 +46,23 @@ QtObject { const home = Quickshell.env("HOME") const gtk3Dir = home + "/.config/gtk-3.0" const gtk4Dir = home + "/.config/gtk-4.0" + const isLight = Config.lightMode + const gtkTheme = isLight ? "adw-gtk3" : "adw-gtk3-dark" + const colorScheme = isLight ? "prefer-light" : "prefer-dark" writer.text = css - + // Write to GTK 3/4 and reload theme const cmd = ` mkdir -p "${gtk3Dir}" "${gtk4Dir}" && \\ echo "${css}" | tee "${gtk3Dir}/gtk.css" "${gtk4Dir}/gtk.css" > /dev/null && \\ - gsettings set org.gnome.desktop.interface gtk-theme "" && \\ - gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3 + if command -v gsettings >/dev/null 2>&1; then \\ + gsettings set org.gnome.desktop.interface color-scheme '${colorScheme}' >/dev/null 2>&1 || true; \\ + gsettings set org.gnome.desktop.interface gtk-theme "" >/dev/null 2>&1 || true; \\ + gsettings set org.gnome.desktop.interface gtk-theme '${gtkTheme}' >/dev/null 2>&1 || true; \\ + fi ` - + writerProcess.command = ["sh", "-c", cmd] writerProcess.running = true }