From c4e9c3476961587467d8a8592b8a4ff1c218860b Mon Sep 17 00:00:00 2001 From: oddlama Date: Thu, 14 Sep 2023 18:52:30 +0200 Subject: [PATCH] feat: add gtk theme --- modules/optional/graphical/fonts.nix | 36 ++++++++++++++--- users/myuser/graphical/default.nix | 40 +------------------ users/myuser/graphical/i3.nix | 4 ++ users/myuser/graphical/theme.nix | 60 ++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 43 deletions(-) create mode 100644 users/myuser/graphical/theme.nix diff --git a/modules/optional/graphical/fonts.nix b/modules/optional/graphical/fonts.nix index dbdb768..ba7b21c 100644 --- a/modules/optional/graphical/fonts.nix +++ b/modules/optional/graphical/fonts.nix @@ -4,11 +4,37 @@ ... }: { fonts = { - fontconfig.defaultFonts = { - sansSerif = lib.mkBefore ["Segoe UI"]; - #serif = []; - monospace = ["FiraCode Nerd Font"]; - emoji = ["Segoe UI Emoji" "Noto Fonts Emoji"]; + fontconfig = { + # Always prefer emojis even if the original font would provide a glyph + localConf = '' + + + + + monospace + + emoji + + + + sans-serif + + emoji + + + + serif + + emoji + + + + ''; + defaultFonts = { + sansSerif = lib.mkBefore ["Segoe UI"]; + monospace = ["FiraCode Nerd Font"]; + emoji = ["Segoe UI Emoji" "Noto Fonts Emoji"]; + }; }; packages = with pkgs; [ diff --git a/users/myuser/graphical/default.nix b/users/myuser/graphical/default.nix index 9eaaa6f..d6087f7 100644 --- a/users/myuser/graphical/default.nix +++ b/users/myuser/graphical/default.nix @@ -10,6 +10,7 @@ ./firefox.nix ./kitty.nix ./signal.nix + ./theme.nix # XXX: disabled for the time being because gaming under nvidia+wayland has too many bugs # XXX: retest this in the future. Problems were flickering under gles, black screens and refresh issues under vulkan, black wine windows. # ./sway.nix @@ -27,6 +28,7 @@ feh pinentry # For yubikey sirula + gamescope thunderbird xdg-utils xdragon @@ -56,44 +58,6 @@ persistence."/persist".directories = [ "projects" ]; - - pointerCursor = { - gtk.enable = true; - name = "Adwaita-dark"; - package = pkgs.gnome.adwaita-icon-theme; - # TODO XXX: not working - size = 24; - }; - }; - - # Needed to fix cursors in firefox under wayland, see https://github.com/NixOS/nixpkgs/issues/207339#issuecomment-1374497558 - gtk = { - enable = true; - theme = { - package = pkgs.gnome.gnome-themes-extra; - name = "Adwaita-dark"; - }; - - gtk2.extraConfig = "gtk-application-prefer-dark-theme = true"; - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = true; - gtk-cursor-theme-size = 24; - gtk-enable-animations = true; - gtk-xft-antialias = 1; - gtk-xft-dpi = 160; - gtk-xft-hinting = 1; - gtk-xft-hintstyle = "hintslight"; - gtk-xft-rgba = "rgb"; - }; - }; - - qt = { - enable = true; - platformTheme = "gnome"; - style = { - name = "adwaita"; - package = pkgs.adwaita-qt; - }; }; xdg.mimeApps.enable = true; diff --git a/users/myuser/graphical/i3.nix b/users/myuser/graphical/i3.nix index 513b09c..fb06e9a 100644 --- a/users/myuser/graphical/i3.nix +++ b/users/myuser/graphical/i3.nix @@ -7,6 +7,7 @@ }: let inherit (lib) + escapeShellArg mapAttrs' nameValuePair ; @@ -167,6 +168,9 @@ in { xset mouse 1 0 xset r rate 235 60 + [[ -f "$HOME"/${escapeShellArg config.xsession.scriptPath} ]] \ + && source "$HOME"/${escapeShellArg config.xsession.scriptPath} + exec i3 ''; } diff --git a/users/myuser/graphical/theme.nix b/users/myuser/graphical/theme.nix new file mode 100644 index 0000000..86c9d56 --- /dev/null +++ b/users/myuser/graphical/theme.nix @@ -0,0 +1,60 @@ +{pkgs, ...}: { + home.pointerCursor = { + gtk.enable = true; + x11.enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 32; + }; + + xresources.properties = { + "Xft.hinting" = true; + "Xft.antialias" = true; + "Xft.autohint" = false; + "Xft.lcdfilter" = "lcddefault"; + "Xft.hintstyle" = "hintfull"; + "Xft.rgba" = "rgb"; + }; + + gtk = let + gtk34extraConfig = { + gtk-application-prefer-dark-theme = 1; + gtk-cursor-theme-size = 32; + gtk-enable-animations = true; + gtk-xft-antialias = 1; + gtk-xft-dpi = 160; # XXX: delete for wayland? + gtk-xft-hinting = 1; + gtk-xft-hintstyle = "hintfull"; + gtk-xft-rgba = "rgb"; + }; + in { + enable = true; + font = { + package = pkgs.segoe-ui-ttf; + name = "Segoe UI"; + }; + + iconTheme = { + name = "WhiteSur-dark"; + package = pkgs.whitesur-icon-theme; + }; + + theme = { + name = "WhiteSur-dark-solid"; + package = pkgs.whitesur-gtk-theme; + }; + + gtk2.extraConfig = "gtk-application-prefer-dark-theme = true"; + gtk3.extraConfig = gtk34extraConfig; + gtk4.extraConfig = gtk34extraConfig; + }; + + qt = { + enable = true; + platformTheme = "gnome"; + style = { + name = "adwaita"; + package = pkgs.adwaita-qt; + }; + }; +}