1
1
Fork 0

icons: partially implement home.pointerCursor to fix XCURSOR_* issues

Signed-off-by: Myned <dev@bjork.tech>
This commit is contained in:
Myned 2025-01-01 11:48:29 -06:00
parent ccf30d8414
commit 0b72dd7dee
Signed by: Myned
GPG key ID: C7224454F7881A34
3 changed files with 69 additions and 14 deletions

View file

@ -19,6 +19,7 @@ with lib; {
dconf.enable = true;
fonts.enable = true;
gtk.enable = true;
icons.enable = true;
qt.enable = true;
#// stylix.enable = true;
xdg.enable = true;

View file

@ -14,28 +14,18 @@ in {
css = readFile ./style.css;
in {
enable = true;
gtk3.extraCss = css;
gtk4 = {
extraConfig.gtk-hint-font-metrics = 1; # Fix blurry fonts
extraCss = css;
};
font = with config.custom.settings.fonts; {
name = sans-serif;
size = 12;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
cursorTheme = with config.custom.settings.icons.cursor; {
inherit name package size;
};
# BUG: home.pointerCursor breaks XCURSOR_PATH for some child windows, so avoid that workaround
cursorTheme = {
size = 24;
name = "GoogleDot-Black";
package = pkgs.google-cursor;
iconTheme = with config.custom.settings.icons.icon; {
inherit name package;
};
theme = {
@ -45,6 +35,15 @@ in {
# https://github.com/nix-community/home-manager/issues/5133
#// package = pkgs.adw-gtk3;
};
gtk3 = {
extraCss = css;
};
gtk4 = {
extraConfig.gtk-hint-font-metrics = 1; # Fix blurry fonts
extraCss = css;
};
};
};
}

View file

@ -0,0 +1,55 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.custom.settings.icons;
in {
options.custom.settings.icons = {
enable = mkOption {default = false;};
cursor = {
# https://github.com/ful1e5/Google_Cursor
name = mkOption {default = "GoogleDot-Black";};
package = mkOption {default = pkgs.google-cursor;};
size = mkOption {default = 24;};
};
icon = {
# https://github.com/PapirusDevelopmentTeam/papirus-icon-theme
name = mkOption {default = "Papirus-Dark";};
package = mkOption {default = pkgs.papirus-icon-theme;};
};
};
config = mkIf cfg.enable {
environment.systemPackages = [cfg.cursor.package cfg.icon.package];
# BUG: home.pointerCursor breaks XCURSOR_PATH for some child windows, so avoid that workaround
# HACK: Copy home-manager index.theme without setting XCURSOR_* environment variables
home-manager.sharedModules = let
# https://github.com/nix-community/home-manager/blob/59a4c43e9ba6db24698c112720a58a334117de83/modules/config/home-cursor.nix#L66C3-L77C8
defaultIndexThemePackage = pkgs.writeTextFile {
name = "index.theme";
destination = "/share/icons/default/index.theme";
text = ''
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=${cfg.cursor.name}
'';
};
in [
{
# https://github.com/nix-community/home-manager/blob/59a4c43e9ba6db24698c112720a58a334117de83/modules/config/home-cursor.nix#L161
home.file.".icons/default/index.theme".source = "${defaultIndexThemePackage}/share/icons/default/index.theme";
home.file.".icons/${cfg.cursor.name}".source = "${cfg.cursor.package}/share/icons/${cfg.cursor.name}";
xdg.dataFile."icons/default/index.theme".source = "${defaultIndexThemePackage}/share/icons/default/index.theme";
xdg.dataFile."icons/${cfg.cursor.name}".source = "${cfg.cursor.package}/share/icons/${cfg.cursor.name}";
}
];
};
}