summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMinijackson <minijackson@riseup.net>2022-12-18 16:10:24 +0100
committerMinijackson <minijackson@riseup.net>2022-12-18 16:10:46 +0100
commitf103d343b012a5c002f7110302c62b1d2c6f0931 (patch)
treedbaa522d809baf856ef2dcb3db8d1d5b4fda61b5
parent50f7ae5cd2ba8630f0bd97a2e7bb38ee07943c2f (diff)
downloadnixos-config-reborn-f103d343b012a5c002f7110302c62b1d2c6f0931.tar.gz
nixos-config-reborn-f103d343b012a5c002f7110302c62b1d2c6f0931.zip
gtk: add gtk3 theme
-rw-r--r--usecases/desktop/graphical/gtk-colors.scss125
-rw-r--r--usecases/desktop/graphical/gtk.nix28
2 files changed, 152 insertions, 1 deletions
diff --git a/usecases/desktop/graphical/gtk-colors.scss b/usecases/desktop/graphical/gtk-colors.scss
new file mode 100644
index 0000000..b8868de
--- /dev/null
+++ b/usecases/desktop/graphical/gtk-colors.scss
@@ -0,0 +1,125 @@
1// When color definition differs for dark and light variant
2// it gets @if ed depending on $variant
3
4$blue_1: @fadedBlue@;
5$blue_2: #62a0ea;
6$blue_3: @neutralBlue@;
7$blue_4: #1c71d8;
8$blue_5: @brightBlue@;
9$green_1: @fadedGreen@;
10$green_2: #57e389;
11$green_3: @neutralGreen@;
12$green_4: #2ec27e;
13$green_5: @brightGreen@;
14$yellow_1: @fadedYellow@;
15$yellow_2: #f8e45c;
16$yellow_3: @neutralYellow@;
17$yellow_4: #f5c211;
18$yellow_5: @brightYellow@;
19$orange_1: @fadedOrange@;
20$orange_2: #ffa348;
21$orange_3: @neutralOrange@;
22$orange_4: #e66100;
23$orange_5: @brightOrange@;
24$red_1: @fadedRed@;
25$red_2: #ed333b;
26$red_3: @neutralRed@;
27$red_4: #c01c28;
28$red_5: @brightRed@;
29$purple_1: @fadedMagenta@;
30$purple_2: #c061cb;
31$purple_3: @neutralMagenta@;
32$purple_4: #813d9c;
33$purple_5: @brightMagenta@;
34$brown_1: #cdab8f;
35$brown_2: #b5835a;
36$brown_3: #986a44;
37$brown_4: #865e3c;
38$brown_5: #63452c;
39
40$light_1: @foreground0@;
41$light_2: @foreground1@;
42$light_3: @foreground2@;
43$light_4: @foreground3@;
44$light_5: @foreground4@;
45
46$dark_1: @background4@;
47$dark_2: @background3@;
48$dark_3: @background2@;
49$dark_4: @background1@;
50$dark_5: @background0@;
51
52$base_color: if($variant == 'light', $light_1, lighten(desaturate($dark_4, 100%), 2%));
53$text_color: if($variant == 'light', black, white);
54$bg_color: if($variant == 'light', $light_2, darken(desaturate($dark_3, 100%), 4%));
55$fg_color: if($variant == 'light', #2e3436, #eeeeec);
56
57$selected_fg_color: $light_1;
58$selected_bg_color: if($variant == 'light', $blue_3, darken($blue_3, 20%));
59$selected_borders_color: if($variant== 'light', darken($selected_bg_color, 15%), darken($selected_bg_color, 30%));
60$borders_color: if($variant == 'light', darken($bg_color, 18%), darken($bg_color, 10%));
61$alt_borders_color: if($variant == 'light', darken($bg_color, 24%), darken($bg_color, 18%));
62$borders_edge: if($variant == 'light', transparentize(white, 0.2), transparentize($fg_color, 0.93));
63$link_color: if($variant == 'light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 20%));
64$link_visited_color: if($variant == 'light', darken($selected_bg_color, 20%), lighten($selected_bg_color, 10%));
65$top_hilight: $borders_edge;
66$dark_fill: mix($borders_color, $bg_color, 50%);
67$headerbar_color: if($variant == 'light', lighten($bg_color, 5%), darken($bg_color, 3%));
68$menu_color: if($variant == 'light', $base_color, mix($bg_color, $base_color, 20%));
69$popover_bg_color: $bg_color;
70$popover_hover_color: lighten($bg_color, 5%);
71
72$scrollbar_bg_color: if($variant == 'light', mix($bg_color, $fg_color, 80%), mix($base_color, $bg_color, 50%));
73$scrollbar_slider_color: mix($fg_color, $bg_color, 60%);
74$scrollbar_slider_hover_color: mix($fg_color, $bg_color, 80%);
75$scrollbar_slider_active_color: if($variant=='light', darken($selected_bg_color, 10%), lighten($selected_bg_color, 10%));
76
77$warning_color: #f57900;
78$error_color: #cc0000;
79$success_color: if($variant == 'light', $green_3, darken($green_3, 10%));
80$destructive_color: if($variant == 'light', $red_3, darken($red_3, 10%));
81
82$osd_fg_color: #eeeeec;
83$osd_text_color: white;
84$osd_bg_color: if($variant == 'light', transparentize(darken(desaturate($dark_3, 100%), 4%),0.1), transparentize(darken(desaturate($dark_3, 100%), 10%),0.1));
85$osd_insensitive_bg_color: transparentize(mix($osd_fg_color, opacify($osd_bg_color, 1), 10%), 0.5);
86$osd_insensitive_fg_color: mix($osd_fg_color, opacify($osd_bg_color, 1), 50%);
87$osd_borders_color: transparentize(black, 0.3);
88
89$sidebar_bg_color: mix($bg_color, $base_color, 50%);
90$base_hover_color: transparentize($fg_color, 0.95);
91
92$tooltip_borders_color: transparentize(white, 0.9);
93$shadow_color: transparentize(black, 0.9);
94
95$drop_target_color: #4e9a06;
96
97//insensitive state derived colors
98$insensitive_fg_color: mix($fg_color, $bg_color, 50%);
99$insensitive_bg_color: mix($bg_color, $base_color, 60%);
100$insensitive_borders_color: $borders_color;
101
102//colors for the backdrop state, derived from the main colors.
103$backdrop_base_color: if($variant == 'light', darken($base_color, 1%), lighten($base_color, 1%));
104$backdrop_text_color: mix($text_color, $backdrop_base_color, 80%);
105$backdrop_bg_color: $bg_color;
106$backdrop_fg_color: mix($fg_color, $backdrop_bg_color, 50%);
107$backdrop_insensitive_color: if($variant == 'light', darken($backdrop_bg_color, 15%), lighten($backdrop_bg_color, 15%));
108$backdrop_selected_fg_color: if($variant == 'light', $backdrop_base_color, $backdrop_text_color);
109$backdrop_borders_color: mix($borders_color, $bg_color, 80%);
110$backdrop_dark_fill: mix($backdrop_borders_color, $backdrop_bg_color, 35%);
111$backdrop_sidebar_bg_color: mix($backdrop_bg_color, $backdrop_base_color, 50%);
112
113$backdrop_scrollbar_bg_color: darken($backdrop_bg_color, 3%);
114$backdrop_scrollbar_slider_color: mix($backdrop_fg_color, $backdrop_bg_color, 40%);
115
116$backdrop_menu_color: if($variant == 'light', $backdrop_base_color, mix($backdrop_bg_color, $backdrop_base_color, 20%));
117
118//special cased widget colors
119$suggested_bg_color: $selected_bg_color;
120$suggested_border_color: $selected_borders_color;
121$progress_bg_color: $selected_bg_color;
122$progress_border_color: $selected_borders_color;
123$checkradio_bg_color: if($variant == 'light', $selected_bg_color, lighten($selected_bg_color,10%));
124$checkradio_fg_color: $selected_fg_color;
125$checkradio_borders_color: if($variant == 'light', darken($checkradio_bg_color,20%), darken($checkradio_bg_color,40%));
diff --git a/usecases/desktop/graphical/gtk.nix b/usecases/desktop/graphical/gtk.nix
index 4a9f501..0151492 100644
--- a/usecases/desktop/graphical/gtk.nix
+++ b/usecases/desktop/graphical/gtk.nix
@@ -4,6 +4,32 @@ inputs: {
4 pkgs, 4 pkgs,
5 ... 5 ...
6}: let 6}: let
7 gtk3Colors = ./gtk-colors.scss;
8
9 gtk3CssFile =
10 pkgs.stdenv.mkDerivation ({
11 name = "gtk3.css";
12
13 src = pkgs.gtk3.src;
14
15 nativeBuildInputs = with pkgs; [sassc];
16
17 patchPhase = ''
18 cp -f ${gtk3Colors} gtk/theme/Adwaita/_colors.scss
19 substituteAllInPlace gtk/theme/Adwaita/_colors.scss
20 '';
21
22 dontConfigure = true;
23 dontInstall = true;
24
25 buildPhase = ''
26 sassc -a -M -t expanded gtk/theme/Adwaita/gtk-contained-dark.scss $out
27 # These lines contains includes of assets
28 sed -i -e '/-gtk-icon/d' $out;
29 '';
30 }
31 // config.theme.colors);
32
7 gtk4NamedColors = with config.theme.colors; { 33 gtk4NamedColors = with config.theme.colors; {
8 # From the main CSS 34 # From the main CSS
9 # ----------------- 35 # -----------------
@@ -94,7 +120,7 @@ in {
94 }; 120 };
95 121
96 xdg.configFile = { 122 xdg.configFile = {
97 # "gtk-3.0/gtk.css".source = gtkCssFile; 123 "gtk-3.0/gtk.css".source = gtk3CssFile;
98 "gtk-4.0/gtk.css".source = gtk4CssFile; 124 "gtk-4.0/gtk.css".source = gtk4CssFile;
99 }; 125 };
100 }; 126 };