diff options
-rw-r--r-- | usecases/desktop/graphical/gtk-colors.scss | 125 | ||||
-rw-r--r-- | usecases/desktop/graphical/gtk.nix | 28 |
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 | }; |