gtk: fix icons, and apply Tokyonight as default theme
This commit is contained in:
parent
cce87eb6fb
commit
9aea0945a5
|
@ -1,7 +1,17 @@
|
||||||
{ config, lib, pkgs }:
|
# gtk apps search XDG_ICON_DIRS for icons (nixos specific)
|
||||||
|
# nixos ships the hi-color icon theme by default, which has *some* icons,
|
||||||
|
# but leaves a lot of standard ones unavailable.
|
||||||
|
#
|
||||||
|
# system-wide theme components live in:
|
||||||
|
# - /run/current-system/sw/share/color-schemes/${theme}
|
||||||
|
# - /run/current-system/sw/share/icons/${theme}
|
||||||
|
# - /run/current-system/sw/share/icons/${theme}/cursors (cursor-theme)
|
||||||
|
# - /run/current-system/sw/share/themes/${theme}/gtk-4.0
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.sane.gui.gtk;
|
cfg = config.sane.gui.gtk;
|
||||||
themes = {
|
unsortedThemes = {
|
||||||
|
# crude assortment of themes in nixpkgs; some might not be gtk themes, some gtk themes might not be in this list
|
||||||
inherit (pkgs)
|
inherit (pkgs)
|
||||||
# themes are in <repo:nixos/nixpkgs:pkgs/data/themes>
|
# themes are in <repo:nixos/nixpkgs:pkgs/data/themes>
|
||||||
adapta-gtk-theme
|
adapta-gtk-theme
|
||||||
|
@ -105,6 +115,74 @@ let
|
||||||
yaru-theme
|
yaru-theme
|
||||||
zuki-themes
|
zuki-themes
|
||||||
;
|
;
|
||||||
|
inherit (pkgs.gnome)
|
||||||
|
adwaita-icon-theme
|
||||||
|
gnome-themes-extra
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
|
themes = with pkgs; {
|
||||||
|
color-scheme = {
|
||||||
|
default = emptyDirectory;
|
||||||
|
Dracula = dracula-theme;
|
||||||
|
DraculaPurple = dracula-theme;
|
||||||
|
Dracula-cursors = dracula-theme;
|
||||||
|
};
|
||||||
|
cursor-theme = {
|
||||||
|
Adwaita = gnome.adwaita-icon-theme;
|
||||||
|
};
|
||||||
|
gtk-theme = {
|
||||||
|
Adwaita = gnome.gnome-themes-extra; # gtk-3.0
|
||||||
|
Adwaita-dark = gnome.gnome-themes-extra; # gtk-3.0
|
||||||
|
Arc = arc-theme; # gtk-4.0
|
||||||
|
Arc-Dark = arc-theme; # gtk-4.0
|
||||||
|
Arc-Darker = arc-theme; # gtk-4.0
|
||||||
|
Arc-Lighter = arc-theme; # gtk-4.0
|
||||||
|
Dracula = dracula-theme; # gtk-4.0
|
||||||
|
E17gtk = e17gtk; # gtk-3.0
|
||||||
|
Fluent = fluent-gtk-theme; # gtk-4.0
|
||||||
|
Fluent-compact = fluent-gtk-theme; # gtk-4.0
|
||||||
|
Fluent-Dark = fluent-gtk-theme; # gtk-4.0
|
||||||
|
Fluent-Dark-compact = fluent-gtk-theme; # gtk-4.0
|
||||||
|
Fluent-Light = fluent-gtk-theme; # gtk-4.0
|
||||||
|
Fluent-Light-compact = fluent-gtk-theme; # gtk-4.0, NICE!
|
||||||
|
HighContrast = gnome.gnome-themes-extra; # gtk-3.0
|
||||||
|
Matcha-light-azul = matcha-gtk-theme; # gtk-4.0, NICE!
|
||||||
|
Matcha-light-sea = matcha-gtk-theme; # gtk-4.0, NICE!
|
||||||
|
# additional Matcha-* omitted
|
||||||
|
Nordic = nordic; # gtk-4.0
|
||||||
|
Nordic-bluish-accent = nordic; # gtk-4.0
|
||||||
|
Nordic-darker = nordic; # gtk-4.0
|
||||||
|
Nordic-Polar = nordic; # gtk-4.0, NICE
|
||||||
|
Numix = numix-gtk-theme; # gtk-3.20, meh
|
||||||
|
NumixSolarizedDarkBlue = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkCyan = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkGreen = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkMagenta = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkOrange = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkRed = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkViolet = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedDarkYellow = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightBlue = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightBlueDarkTop = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightCyan = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightGreen = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightMagenta = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightOrange = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightRed = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightViolet = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixSolarizedLightYellow = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
NumixStandard = numix-solarized-gtk-theme; # gtk-3.20
|
||||||
|
Paper = paper-gtk-theme; # gtk-4.0
|
||||||
|
Pop = pop-gtk-theme; # gtk-4.0
|
||||||
|
Pop-dark = pop-gtk-theme; # gtk-4.0
|
||||||
|
Tokyonight-Light-B = tokyo-night-gtk; # gtk-4.0, NICE
|
||||||
|
# other Tokyonight-* omitted
|
||||||
|
};
|
||||||
|
icon-theme = {
|
||||||
|
Adwaita = gnome.adwaita-icon-theme;
|
||||||
|
HighContrast = gnome.gnome-themes-extra; # gtk-3.0
|
||||||
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
@ -114,20 +192,49 @@ in
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = "apply theme to gtk4 apps";
|
description = "apply theme to gtk4 apps";
|
||||||
};
|
};
|
||||||
|
sane.gui.gtk.all = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = "install all known gtk themes (for testing)";
|
||||||
|
};
|
||||||
|
sane.gui.gtk.color-scheme = mkOption {
|
||||||
|
default = "default";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
sane.gui.gtk.cursor-theme = mkOption {
|
||||||
|
default = "Adwaita";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
sane.gui.gtk.gtk-theme = mkOption {
|
||||||
|
default = "Adwaita";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
sane.gui.gtk.icon-theme = mkOption {
|
||||||
|
default = "Adwaita";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.dconf.packages = [
|
programs.dconf.packages = [
|
||||||
(pkgs.writeTextFile {
|
(pkgs.writeTextFile {
|
||||||
name = "dconf-sway-settings";
|
name = "dconf-sway-settings";
|
||||||
destination = "/etc/dconf/db/site.d/10_sway_settings";
|
destination = "/etc/dconf/db/site.d/10_gtk_settings";
|
||||||
text = ''
|
text = ''
|
||||||
[org/gnome/desktop/interface]
|
[org/gnome/desktop/interface]
|
||||||
gtk-theme="Dracula"
|
color-scheme="${cfg.color-scheme}"
|
||||||
icon-theme="Dracula"
|
cursor-theme="${cfg.cursor-theme}"
|
||||||
|
gtk-theme="${cfg.gtk-theme}"
|
||||||
|
icon-theme="${cfg.icon-theme}"
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
environment.systemPackages = lib.attrValues themes;
|
# environment.systemPackages = lib.attrValues themes;
|
||||||
|
environment.systemPackages = [
|
||||||
|
themes.color-scheme."${cfg.color-scheme}"
|
||||||
|
themes.cursor-theme."${cfg.cursor-theme}"
|
||||||
|
themes.gtk-theme."${cfg.gtk-theme}"
|
||||||
|
themes.icon-theme."${cfg.icon-theme}"
|
||||||
|
] ++ lib.optionals cfg.all (lib.attrValues unsortedThemes);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,8 @@ in
|
||||||
(mkIf cfg.enable {
|
(mkIf cfg.enable {
|
||||||
sane.programs.swayApps.enableFor.user.colin = true;
|
sane.programs.swayApps.enableFor.user.colin = true;
|
||||||
sane.gui.gtk.enable = lib.mkDefault true;
|
sane.gui.gtk.enable = lib.mkDefault true;
|
||||||
|
# sane.gui.gtk.gtk-theme = lib.mkDefault "Fluent-Light-compact";
|
||||||
|
sane.gui.gtk.gtk-theme = lib.mkDefault "Tokyonight-Light-B";
|
||||||
|
|
||||||
# swap in these lines to use SDDM instead of `services.greetd`.
|
# swap in these lines to use SDDM instead of `services.greetd`.
|
||||||
# services.xserver.displayManager.sddm.enable = true;
|
# services.xserver.displayManager.sddm.enable = true;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user