From c9f554e27664ccf9dc1845f99c7e17592b55d94b Mon Sep 17 00:00:00 2001 From: Miguel Palhas Date: Tue, 3 Mar 2026 10:43:56 +0000 Subject: [PATCH] yazi updates --- home/arrakis/default.nix | 3 +- home/common/programs/hyprland/cursor.nix | 7 +- home/common/programs/hyprland/default.nix | 575 ++++++++++++---------- home/common/programs/termfilechooser.nix | 10 +- home/desktop/default.nix | 11 +- 5 files changed, 314 insertions(+), 292 deletions(-) diff --git a/home/arrakis/default.nix b/home/arrakis/default.nix index a7aee6d..046d441 100644 --- a/home/arrakis/default.nix +++ b/home/arrakis/default.nix @@ -26,9 +26,10 @@ ./monitors.nix ]; + custom.hyprland.cursorSize = 32; + wayland.windowManager.hyprland.settings = { exec-once = [ - "hyprctl setcursor Nordzy-cursors 32" ]; workspace = [ diff --git a/home/common/programs/hyprland/cursor.nix b/home/common/programs/hyprland/cursor.nix index 4b66347..c2a8503 100644 --- a/home/common/programs/hyprland/cursor.nix +++ b/home/common/programs/hyprland/cursor.nix @@ -1,6 +1,7 @@ -{ pkgs, inputs, ... }: +{ pkgs, config, inputs, ... }: let nordzy-cursors = pkgs.callPackage ../../../../pkgs/nordzy-cursors/package.nix { }; + cursorSize = config.custom.hyprland.cursorSize; in { home.packages = [ @@ -9,9 +10,9 @@ in home.sessionVariables = { HYPRCURSOR_THEME = "Nordzy-cursors"; # Dark variant (default) - HYPRCURSOR_SIZE = 24; + HYPRCURSOR_SIZE = cursorSize; XCURSOR_THEME = "Nordzy-cursors"; - XCURSOR_SIZE = 24; + XCURSOR_SIZE = cursorSize; }; dconf = { diff --git a/home/common/programs/hyprland/default.nix b/home/common/programs/hyprland/default.nix index 0a5b875..275ad33 100644 --- a/home/common/programs/hyprland/default.nix +++ b/home/common/programs/hyprland/default.nix @@ -1,13 +1,28 @@ { config, inputs, + lib, pkgs, ... }: let rofiLaunchers = import ../../../pkgs/rofi-launchers/package.nix { }; + cfg = config.custom.hyprland; in { + options.custom.hyprland = { + yaziSize = lib.mkOption { + type = lib.types.str; + default = "1400 1400"; + description = "Size of the yazi special workspace window"; + }; + cursorSize = lib.mkOption { + type = lib.types.int; + default = 24; + description = "Cursor size for XCURSOR_SIZE and HYPRCURSOR_SIZE"; + }; + }; + imports = [ ./rofi.nix ./cursor.nix @@ -16,293 +31,307 @@ in ./wallpapers.nix ]; - home.packages = with pkgs; [ - hyprcursor - pamixer - hyprshot - satty - playerctl - hyprsunset - libnotify - cliphist - wf-recorder - slurp - ]; - - home.sessionVariables = { - ELECTRON_OZONE_PLATFORM_HINT = "auto"; - }; - - wayland.windowManager.hyprland = { - enable = true; - package = null; - portalPackage = null; - plugins = [ - inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprexpo - # inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprfocus - # inputs.hyprspace.packages.${pkgs.stdenv.hostPlatform.system}.Hyprspace + config = { + home.packages = with pkgs; [ + hyprcursor + pamixer + hyprshot + satty + playerctl + hyprsunset + libnotify + cliphist + wf-recorder + slurp ]; - settings = { - plugin = { - hyprexpo = { - columns = 3; - gap_size = 5; - bg_col = "rgb(000000)"; - workspace_method = "center current"; - skip_empty = true; - }; - # hyprfocus = { - # enabled = true; - # mode = "flash"; - # flash_opacity = 0.8; # Flash brighter instead of dimmer - # }; - overview = { - autoDrag = true; - exitOnClick = true; - exitOnSwitch = true; - showNewWorkspace = false; - showEmptyWorkspace = false; - }; - }; - input = { - kb_options = "ctrl:nocaps"; - repeat_delay = 150; - touchpad = { - natural_scroll = "yes"; + home.sessionVariables = { + ELECTRON_OZONE_PLATFORM_HINT = "auto"; + }; + + wayland.windowManager.hyprland = { + enable = true; + package = null; + portalPackage = null; + plugins = [ + inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprexpo + # inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprfocus + # inputs.hyprspace.packages.${pkgs.stdenv.hostPlatform.system}.Hyprspace + ]; + settings = { + plugin = { + hyprexpo = { + columns = 3; + gap_size = 5; + bg_col = "rgb(000000)"; + workspace_method = "center current"; + skip_empty = true; + }; + # hyprfocus = { + # enabled = true; + # mode = "flash"; + # flash_opacity = 0.8; # Flash brighter instead of dimmer + # }; + overview = { + autoDrag = true; + exitOnClick = true; + exitOnSwitch = true; + showNewWorkspace = false; + showEmptyWorkspace = false; + }; }; - numlock_by_default = true; - }; + input = { + kb_options = "ctrl:nocaps"; + repeat_delay = 150; - cursor = { - no_hardware_cursors = "yes"; - }; - - general = { - border_size = 1; - gaps_in = 0; - gaps_out = 0; - snap = { - enabled = true; - border_overlap = true; + touchpad = { + natural_scroll = "yes"; + }; + numlock_by_default = true; }; - "col.inactive_border" = "0x99999999"; - "col.active_border" = "0x99999999"; - }; - - misc = { - disable_hyprland_logo = true; - disable_splash_rendering = true; - on_focus_under_fullscreen = 2; - }; - - ecosystem = { - no_update_news = true; - }; - - xwayland = { - force_zero_scaling = true; - }; - - decoration = { - blur = { - enabled = true; - # new_optimizations = false; - popups = false; + cursor = { + no_hardware_cursors = "yes"; }; - shadow = { - enabled = false; - }; - }; - # keep default animations, but speed them all up - animations = { - animation = [ - "global, 1, 2, default" + general = { + border_size = 1; + gaps_in = 0; + gaps_out = 0; + snap = { + enabled = true; + border_overlap = true; + }; + + "col.inactive_border" = "0x99999999"; + "col.active_border" = "0x99999999"; + }; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + on_focus_under_fullscreen = 2; + }; + + ecosystem = { + no_update_news = true; + }; + + xwayland = { + force_zero_scaling = true; + }; + + decoration = { + blur = { + enabled = true; + # new_optimizations = false; + popups = false; + }; + shadow = { + enabled = false; + }; + }; + + # keep default animations, but speed them all up + animations = { + animation = [ + "global, 1, 2, default" + ]; + }; + + env = [ + "GDK_SCALE, 2.0" + "XCURSOR_SIZE, ${toString cfg.cursorSize}" + "HYPRCURSOR_THEME, rose-pine-hyprcursor" + "HYPRCURSOR_SIZE, ${toString cfg.cursorSize}" + ]; + + "exec-once" = [ + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" + "hyprctl setcursor Nordzy-cursors ${toString cfg.cursorSize}" + "hyprsunset" + "nerd-dictation begin --simulate-input-tool WTYPE --suspend-on-start && touch ~/.cache/nerd-dictation-suspended" + "noctalia-shell" + ]; + + layerrule = [ + "blur 1, match:namespace noctalia-background-.*" + "ignore_alpha 0.5, match:namespace noctalia-background-.*" + ]; + workspace = [ + # no gaps when only window + "w[t1], gapsout:0, gapsin:0" + "w[tg1], gapsout:0, gapsin:0" + "f[1], gapsout:0, gapsin:0" + + "special:terminal, on-created-empty:[float; size 1400 1000; move center] kitty, persistent:false" + "special:yazi, on-created-empty:[float; size ${cfg.yaziSize}; move center] kitty --session sessions/yazi, persistent:false" + ]; + + windowrule = [ + # satty + "float on, match:class com.gabm.satty" + + # imv + "float on, match:class imv" + "size 1920 1080, match:class imv" + "move (cursor_x-(window_w*0.5)) (cursor_y-(window_h*0.5)), match:class imv" + + # mpv + "float on, match:class mpv" + "size 1920 1080, match:class mpv" + "move (cursor_x-(window_w*0.5)) (cursor_y-(window_h*0.5)), match:class mpv" + + "float on, match:title termfilechooser" + "size 1200 800, match:title termfilechooser" + "move center, match:title termfilechooser" + + # thunar + "float on, match:class thunar" + "size 1800 1200, match:class thunar" + "move (cursor_x-(window_w*0.5)) (cursor_y-(window_h*0.5)), match:class thunar" + + # bluetooth + "float on, match:class \\.blueman-manager-wrapped" + "size 1200 800, match:class \\.blueman-manager-wrapped" + "move (cursor_x-(window_w*0.5)) (cursor_y-(window_h*0.5)), match:class \\.blueman-manager-wrapped" + + # pavucontrol + "float on, match:class org\\.pulseaudio\\.pavucontrol" + "size 1200 1200, match:class org\\.pulseaudio\\.pavucontrol" + "move (cursor_x-(window_w*0.5)) (cursor_y-(window_h*0.5)), match:class org\\.pulseaudio\\.pavucontrol" + + # metamask + "float on, match:class chrome-nkbihfbeogaeaoehlefnkodbefgpgknn-.*" + + # bitwarden, chrome + "float on, match:class chrome-nngceckbapebfimnlniiiahkandclblb-.*" + + # claude for chrome + "float on, match:class chrome-fcoeoabgfenejglbffodgkkbkcdhcgfn-.*" + "move (cursor_x-(window_w*0.5)) (cursor_y-(window_h*0.5)), match:class chrome-fcoeoabgfenejglbffodgkkbkcdhcgfn-.*" + + # no gaps when only window + "border_size 0, match:float 0, match:workspace w[t1]" + "rounding 0, match:float 0, match:workspace w[t1]" + "border_size 0, match:float 0, match:workspace w[tg1]" + "rounding 0, match:float 0, match:workspace w[tg1]" + "border_size 0, match:float 0, match:workspace f[1]" + "rounding 0, match:float 0, match:workspace f[1]" + + "move center, match:workspace special:terminal" + "move center, match:workspace special:yazi" + ]; + + "$mod" = "SUPER"; + + bind = [ + "$mod, n, exec, noctalia-shell ipc call controlCenter toggle" + "$mod, g, hyprexpo:expo, toggle" + # "$mod, tab, overview:toggle," + "$mod, b, exec, pkill waybar || waybar" + "$mod, t, exec, kitty" + "$mod, v, togglefloating" + "$mod, q, killactive" + "$mod, f, fullscreen, 0" + "$mod SHIFT, f, fullscreen, 1" + + # app launcher + "$mod, space, exec, noctalia-shell ipc call launcher toggle" + # rofi (old) + # "$mod, space, exec, launcher_t2" + + # nerd-dictation + # "$mod, d, exec, nerd-dictation-toggle" + + # printscreen + ", Print, exec, hyprshot -m region --raw | satty --filename - --output-filename ~/downloads/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png" + "SHIFT, Print, exec, hyprshot -m window --raw | satty --filename - --output-filename ~/downloads/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png" + + # move focus with mod + arrows + "$mod, h, movefocus, l" + "$mod, j, movefocus, d" + "$mod, k, movefocus, u" + "$mod, l, movefocus, r" + + # Switch workspaces with mod + [0-9] + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + + # Move active window to a workspace with mod + SHIFT + [0-9] + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + + # Move active window inside workspace + "$mod SHIFT, h, movewindow, l" + "$mod SHIFT, j, movewindow, d" + "$mod SHIFT, k, movewindow, u" + "$mod SHIFT, l, movewindow, r" + + # Scroll through existing workspaces with mod + scroll + "$mod, mouse_down, workspace, e+1" + "$mod, mouse_up, workspace, e-1" + + # special workspaces + "$mod, x, togglespecialworkspace, terminal" + "$mod, x, centerwindow" + "$mod, e, togglespecialworkspace, yazi" + "$mod, e, centerwindow" + ]; + + bindel = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ", XF86MonBrightnessUp, exec, brightnessctl set 5%+" + ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" + ]; + bindl = [ + ", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" + ", XF86AudioMicMute, exec, volumectl -m toggle-mute" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + ", XF86AudioPlay, exec, playerctl play-pause" + ]; + + bindm = [ + # Move/resize windows with mod + LMB/RMB and dragging + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" ]; }; - - env = [ - "GDK_SCALE, 2.0" - "XCURSOR_SIZE, 24" - "HYPRCURSOR_THEME, rose-pine-hyprcursor" - "HYPRCURSOR_SIZE, 24" - ]; - - "exec-once" = [ - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" - "hyprsunset" - "nerd-dictation begin --simulate-input-tool WTYPE --suspend-on-start && touch ~/.cache/nerd-dictation-suspended" - "noctalia-shell" - ]; - - layerrule = [ - "blur 1, match:namespace noctalia-background-.*" - "ignore_alpha 0.5, match:namespace noctalia-background-.*" - ]; - workspace = [ - # no gaps when only window - "w[t1], gapsout:0, gapsin:0" - "w[tg1], gapsout:0, gapsin:0" - "f[1], gapsout:0, gapsin:0" - - "special:terminal, on-created-empty:[float; size 1400 1000; move center] kitty, persistent:false" - "special:yazi, on-created-empty:[float; size 1400 1000; move center] kitty --session sessions/yazi, persistent:false" - ]; - - windowrule = [ - # satty - "float on, match:class com.gabm.satty" - - # imv - "float on, match:class imv" - "move cursor -50% -50%, match:class imv" - - "float on, match:title termfilechooser" - "size 1200 800, match:title termfilechooser" - "move center, match:title termfilechooser" - - # bluetooth - "float on, match:class blueman-manager" - "move cursor -50% -50%, match:class blueman-manager" - "size 600 400, match:class blueman-manager" - - # pavucontrol - "float on, match:class pavucontrol" - "move cursor -50% -50%, match:class pavucontrol" - "size 600 600, match:class pavucontrol" - - # metamask - "float on, match:class chrome-nkbihfbeogaeaoehlefnkodbefgpgknn-.*" - - # bitwarden, chrome - "float on, match:class chrome-nngceckbapebfimnlniiiahkandclblb-.*" - - # claude for chrome - "float on, match:class chrome-fcoeoabgfenejglbffodgkkbkcdhcgfn-.*" - "move cursor -50% -50%, match:class chrome-fcoeoabgfenejglbffodgkkbkcdhcgfn-.*" - - # no gaps when only window - "border_size 0, match:float 0, match:workspace w[t1]" - "rounding 0, match:float 0, match:workspace w[t1]" - "border_size 0, match:float 0, match:workspace w[tg1]" - "rounding 0, match:float 0, match:workspace w[tg1]" - "border_size 0, match:float 0, match:workspace f[1]" - "rounding 0, match:float 0, match:workspace f[1]" - - "move center, match:workspace special:terminal" - "move center, match:workspace special:yazi" - ]; - - "$mod" = "SUPER"; - - bind = [ - "$mod, n, exec, noctalia-shell ipc call controlCenter toggle" - "$mod, g, hyprexpo:expo, toggle" - # "$mod, tab, overview:toggle," - "$mod, b, exec, pkill waybar || waybar" - "$mod, t, exec, kitty" - "$mod, v, togglefloating" - "$mod, q, killactive" - "$mod, f, fullscreen, 0" - "$mod SHIFT, f, fullscreen, 1" - - # app launcher - "$mod, space, exec, noctalia-shell ipc call launcher toggle" - # rofi (old) - # "$mod, space, exec, launcher_t2" - - # nerd-dictation - # "$mod, d, exec, nerd-dictation-toggle" - - # printscreen - ", Print, exec, hyprshot -m region --raw | satty --filename - --output-filename ~/downloads/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png" - "SHIFT, Print, exec, hyprshot -m window --raw | satty --filename - --output-filename ~/downloads/screenshots/$(date +%Y-%m-%d_%H-%M-%S).png" - - # move focus with mod + arrows - "$mod, h, movefocus, l" - "$mod, j, movefocus, d" - "$mod, k, movefocus, u" - "$mod, l, movefocus, r" - - # Switch workspaces with mod + [0-9] - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - - # Move active window to a workspace with mod + SHIFT + [0-9] - "$mod SHIFT, 1, movetoworkspace, 1" - "$mod SHIFT, 2, movetoworkspace, 2" - "$mod SHIFT, 3, movetoworkspace, 3" - "$mod SHIFT, 4, movetoworkspace, 4" - "$mod SHIFT, 5, movetoworkspace, 5" - "$mod SHIFT, 6, movetoworkspace, 6" - - # Move active window inside workspace - "$mod SHIFT, h, movewindow, l" - "$mod SHIFT, j, movewindow, d" - "$mod SHIFT, k, movewindow, u" - "$mod SHIFT, l, movewindow, r" - - # Scroll through existing workspaces with mod + scroll - "$mod, mouse_down, workspace, e+1" - "$mod, mouse_up, workspace, e-1" - - # special workspaces - "$mod, x, togglespecialworkspace, terminal" - "$mod, x, centerwindow" - "$mod, e, togglespecialworkspace, yazi" - "$mod, e, centerwindow" - ]; - - bindel = [ - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ", XF86MonBrightnessUp, exec, brightnessctl set 5%+" - ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" - ]; - bindl = [ - ", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle" - ", XF86AudioMicMute, exec, volumectl -m toggle-mute" - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - ", XF86AudioPlay, exec, playerctl play-pause" - ]; - - bindm = [ - # Move/resize windows with mod + LMB/RMB and dragging - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - ]; }; - }; - services.hyprpaper.enable = false; + services.hyprpaper.enable = false; - services.hypridle = { - enable = true; - settings = { - general = { - after_sleep_cmd = "hyprctl dispatch dpms on"; - ignore_dbus_inhibit = false; - lock_cmd = "noctalia-shell ipc call lockScreen lock"; + services.hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "noctalia-shell ipc call lockScreen lock"; + }; + listener = [ + { + timeout = 900; + on-timeout = "noctalia-shell ipc call lockScreen lock"; + } + { + timeout = 1200; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; }; - listener = [ - { - timeout = 900; - on-timeout = "noctalia-shell ipc call lockScreen lock"; - } - { - timeout = 1200; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; }; }; } diff --git a/home/common/programs/termfilechooser.nix b/home/common/programs/termfilechooser.nix index b7e7896..b03e66b 100644 --- a/home/common/programs/termfilechooser.nix +++ b/home/common/programs/termfilechooser.nix @@ -8,15 +8,7 @@ xdg.configFile."xdg-desktop-portal-termfilechooser/config".text = '' [filechooser] - cmd=${pkgs.writeShellScript "termfilechooser-yazi" '' - output="$1" - chooser=$(mktemp) - kitty -T termfilechooser yazi --chooser-file="$chooser" - if [ -s "$chooser" ]; then - cat "$chooser" > "$output" - fi - rm -f "$chooser" - ''} + cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh default_dir=$HOME ''; } diff --git a/home/desktop/default.nix b/home/desktop/default.nix index 38566f5..25c89bf 100644 --- a/home/desktop/default.nix +++ b/home/desktop/default.nix @@ -31,20 +31,19 @@ LIBVA_DRIVER_NAME = "nvidia"; GDM_BACKEND = "nvidia-drm"; __GLX_VENDOR_LIBRARY_NAME = "nvidia"; - # Larger cursor size for desktop (4K monitors) - XCURSOR_SIZE = lib.mkForce 42; - HYPRCURSOR_SIZE = lib.mkForce 42; + }; + + custom.hyprland = { + yaziSize = "2400 1800"; + cursorSize = 42; }; wayland.windowManager.hyprland.settings = { env = [ "WEBKIT_DISABLE_DMABUF_RENDERER, 1" - "XCURSOR_SIZE, 42" - "HYPRCURSOR_SIZE, 42" ]; exec-once = [ - "hyprctl setcursor Nordzy-cursors 42" "$HOME/.local/bin/hyprpaper-rotate" ];