From dc837382966333322606d5726430cad7ef360bf0 Mon Sep 17 00:00:00 2001 From: "Wiktor A. Falkowski" Date: Thu, 15 Oct 2026 21:38:12 +0000 Subject: [PATCH] Include KVJ GTK theme --- README.md | 5 +- themes/KVJ/gtk-2.0/gtkrc | 63 +++++++++++ themes/KVJ/gtk-3.0/gtk.css | 222 +++++++++++++++++++++++++++++++++++++ themes/KVJ/index.theme | 10 ++ 4 files changed, 299 insertions(+), 1 deletion(-) create mode 100644 themes/KVJ/gtk-2.0/gtkrc create mode 100644 themes/KVJ/gtk-3.0/gtk.css create mode 100644 themes/KVJ/index.theme diff --git a/README.md b/README.md index 3bc2639..d0b96e3 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ The configs I use on my Gentoo machine. Hyprland runs the session; Quickshell su | `.config/foot/` | Foot terminal settings and color palette | | `.config/fish/` | Interactive shell defaults and aliases | | `.config/fastfetch/` | Fastfetch module layout | +| `themes/KVJ/` | GTK 2 and GTK 3 theme files | ## Session details @@ -34,4 +35,6 @@ Gentoo Linux, Hyprland, Quickshell, Fish, Foot, Fastfetch, and Hyprpaper make up ## Adapting it -The current plant wallpaper is included at [`Pictures/Wallpaper/wallhaven-d5dkjm.jpg`](Pictures/Wallpaper/wallhaven-d5dkjm.jpg). The live config expects wallpapers in `~/Pictures/Wallpapers`, and changes them through `~/.local/bin/wallpaper-set`. This isn’t a portable installer: it also expects the `KVJ` GTK theme and Bibata Modern Classic cursor, and uses `doas` for power and WireGuard actions. Check those paths, programs, and privileges before copying the files to another machine. +The current plant wallpaper is included at [`Pictures/Wallpaper/wallhaven-d5dkjm.jpg`](Pictures/Wallpaper/wallhaven-d5dkjm.jpg). The `KVJ` GTK 2/3 theme lives in [`themes/KVJ/`](themes/KVJ/); install it with `mkdir -p ~/.themes && cp -a themes/KVJ ~/.themes/`. Hyprland sets `GTK_THEME=KVJ`. + +The live config expects wallpapers in `~/Pictures/Wallpapers`, and changes them through `~/.local/bin/wallpaper-set`. It also expects the Bibata Modern Classic cursor and uses `doas` for power and WireGuard actions. Check those paths, programs, and privileges before copying the files to another machine. diff --git a/themes/KVJ/gtk-2.0/gtkrc b/themes/KVJ/gtk-2.0/gtkrc new file mode 100644 index 0000000..b787ab5 --- /dev/null +++ b/themes/KVJ/gtk-2.0/gtkrc @@ -0,0 +1,63 @@ +# KVJ — GTK 2 theme. Uses GTK 2's built-in style without an engine. +gtk-color-scheme = "bg_color:#151515\nfg_color:#D0D0D0\nbase_color:#181818\ntext_color:#D0D0D0\nselected_bg_color:#6C99BB\nselected_fg_color:#F5F5F5\ntooltip_bg_color:#181818\ntooltip_fg_color:#D0D0D0" +gtk-font-name = "Liberation Mono 10" +gtk-icon-theme-name = "Adwaita" + +style "kvj-foot-default" { + xthickness = 1 + ythickness = 1 + + bg[NORMAL] = "#151515" + bg[PRELIGHT] = "#282828" + bg[ACTIVE] = "#303030" + bg[SELECTED] = "#6C99BB" + bg[INSENSITIVE] = "#181818" + + fg[NORMAL] = "#D0D0D0" + fg[PRELIGHT] = "#F5F5F5" + fg[ACTIVE] = "#F5F5F5" + fg[SELECTED] = "#F5F5F5" + fg[INSENSITIVE] = "#757575" + + base[NORMAL] = "#181818" + base[PRELIGHT] = "#202020" + base[ACTIVE] = "#303030" + base[SELECTED] = "#6C99BB" + base[INSENSITIVE] = "#181818" + + text[NORMAL] = "#D0D0D0" + text[PRELIGHT] = "#F5F5F5" + text[ACTIVE] = "#F5F5F5" + text[SELECTED] = "#F5F5F5" + text[INSENSITIVE] = "#757575" +} + +style "kvj-foot-entry" = "kvj-foot-default" { + base[NORMAL] = "#151515" + base[ACTIVE] = "#202020" + text[NORMAL] = "#D0D0D0" + text[SELECTED] = "#F5F5F5" +} + +style "kvj-foot-button" = "kvj-foot-default" { + bg[NORMAL] = "#202020" + bg[PRELIGHT] = "#282828" + bg[ACTIVE] = "#303030" + bg[SELECTED] = "#6C99BB" +} + +style "kvj-foot-menu" = "kvj-foot-default" { + bg[NORMAL] = "#181818" + bg[PRELIGHT] = "#282828" + bg[ACTIVE] = "#303030" + bg[SELECTED] = "#303030" + fg[SELECTED] = "#6C99BB" +} + +widget_class "*" style "kvj-foot-default" +widget_class "*Entry*" style "kvj-foot-entry" +widget_class "*TextView*" style "kvj-foot-entry" +widget_class "*Text*" style "kvj-foot-entry" +widget_class "*Button*" style "kvj-foot-button" +widget_class "*Menu*" style "kvj-foot-menu" +widget_class "*MenuItem*" style "kvj-foot-menu" diff --git a/themes/KVJ/gtk-3.0/gtk.css b/themes/KVJ/gtk-3.0/gtk.css new file mode 100644 index 0000000..8d6fcec --- /dev/null +++ b/themes/KVJ/gtk-3.0/gtk.css @@ -0,0 +1,222 @@ +/* KVJ — GTK 3 theme, matched to foot.ini and Quickshell tokens. */ +@define-color theme_bg_color #151515; +@define-color theme_fg_color #D0D0D0; +@define-color theme_base_color #181818; +@define-color theme_text_color #D0D0D0; +@define-color theme_selected_bg_color #6C99BB; +@define-color theme_selected_fg_color #F5F5F5; +@define-color theme_unfocused_bg_color #181818; +@define-color theme_unfocused_fg_color #D0D0D0; +@define-color theme_unfocused_base_color #151515; +@define-color theme_unfocused_text_color #D0D0D0; +@define-color borders #2F2F2F; +@define-color borders_focus #454545; +@define-color surface #202020; +@define-color surface_hover #282828; +@define-color surface_selected #303030; +@define-color accent #6C99BB; +@define-color success #7B9246; +@define-color warning #D3A04D; +@define-color danger #A53C23; +@define-color teal #5EA8A2; +@define-color muted #757575; + +* { + color: @theme_fg_color; + font-family: "Maple Mono", "Liberation Mono", monospace; + -GtkWidget-focus-line-width: 1; + -GtkWidget-focus-padding: 2; +} + +window, +window.background, +.background { + background-color: @theme_bg_color; + color: @theme_fg_color; +} + +label:disabled, +button:disabled, +entry:disabled, +textview text:disabled { + color: @muted; +} + +entry, +spinbutton, +combobox entry, +textview text, +treeview.view, +list row, +.view { + background-color: @theme_base_color; + color: @theme_text_color; + border-color: @borders; + border-radius: 0; + caret-color: #F5F5F5; + outline-color: @accent; +} + +entry:focus, +spinbutton:focus, +combobox:focus, +textview:focus, +treeview.view:focus, +button:focus { + border-color: @borders_focus; + box-shadow: inset 0 0 0 1px @accent; +} + +selection, +entry selection, +textview text selection, +treeview.view:selected, +row:selected, +.view:selected { + background-color: @theme_selected_bg_color; + color: @theme_selected_fg_color; +} + +button, +combobox button, +spinbutton button, +toolbar button { + background-color: @surface; + color: @theme_fg_color; + border: 1px solid @borders; + border-radius: 0; + box-shadow: none; + padding: 5px 9px; +} + +button:hover, +combobox button:hover, +spinbutton button:hover, +toolbar button:hover { + background-color: @surface_hover; + border-color: @borders_focus; +} + +button:active, +button:checked, +button:selected, +modelbutton:checked { + background-color: @surface_selected; + border-color: @borders_focus; +} + +button.suggested-action, +button.suggested-action:hover { + background-color: @accent; + color: #151515; + border-color: @accent; +} + +button.destructive-action, +button.destructive-action:hover { + background-color: @danger; + color: #F5F5F5; + border-color: @danger; +} + +menu, +.menu, +popover, +popover.background, +tooltip, +tooltip.background { + background-color: #181818; + color: @theme_fg_color; + border: 1px solid @borders; + border-radius: 0; + box-shadow: none; +} + +menuitem, +modelbutton, +popover modelbutton { + background-color: transparent; + color: @theme_fg_color; + border-radius: 0; + padding: 5px 9px; +} + +menuitem:hover, +menuitem:focus, +modelbutton:hover, +modelbutton:focus, +popover modelbutton:hover { + background-color: @surface_hover; + color: #F5F5F5; + outline-color: @accent; +} + +menuitem:checked, +modelbutton:checked { + background-color: @surface_selected; + color: @accent; +} + +headerbar, +toolbar { + background-color: #181818; + color: @theme_fg_color; + border: 0; + border-bottom: 1px solid @borders; + border-radius: 0; + box-shadow: none; +} + +headerbar button { + padding: 4px 8px; +} + +scrollbar trough { + background-color: #151515; + border-radius: 0; +} + +scrollbar slider { + background-color: #505050; + border: 1px solid @borders; + border-radius: 0; + min-width: 7px; + min-height: 7px; +} + +scrollbar slider:hover { + background-color: @accent; +} + +progressbar trough, +levelbar trough { + background-color: @surface; + border: 1px solid @borders; + border-radius: 0; +} + +progressbar progress, +levelbar block.filled { + background-color: @accent; + border-radius: 0; +} + +switch, +check, +radio { + background-color: @surface; + border: 1px solid @borders; + border-radius: 0; +} + +switch:checked, +check:checked, +radio:checked { + background-color: @accent; + border-color: @borders_focus; + color: #151515; +} + +*:backdrop { + color: @theme_unfocused_fg_color; +} diff --git a/themes/KVJ/index.theme b/themes/KVJ/index.theme new file mode 100644 index 0000000..0674152 --- /dev/null +++ b/themes/KVJ/index.theme @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=KVJ +Type=X-GNOME-Metatheme +Comment=Square-edged dark GTK theme based on the Foot and Quickshell palette +Encoding=UTF-8 + +[X-GNOME-Metatheme] +GtkTheme=KVJ +IconTheme=Adwaita +CursorTheme=Adwaita