From bb707f6ab45bae1a1fc3b8bd0e66279c8c2d4a37 Mon Sep 17 00:00:00 2001 From: "sascha.koenig" Date: Fri, 29 Aug 2025 07:30:45 +0200 Subject: [PATCH] hyprpaper fix --- home/features/desktop/hyprland.nix | 635 +++++++++++++++-------------- home/features/desktop/wayland.nix | 2 +- home/sascha.koenig/AZLT124-L.nix | 18 +- 3 files changed, 341 insertions(+), 314 deletions(-) diff --git a/home/features/desktop/hyprland.nix b/home/features/desktop/hyprland.nix index 6c4bbad..b54b171 100644 --- a/home/features/desktop/hyprland.nix +++ b/home/features/desktop/hyprland.nix @@ -1,328 +1,349 @@ { - home.file.".config/hypr/colors.conf".text = '' - $background = rgb(282A36) - $backgroundRaw = 282A36 - $foreground = rgb(F8F8F2) - $foregroundRaw = F8F8F2 - $selection = rgb(44475A) - $selectionRaw = 44475A - $comment = rgb(6272A4) - $commentRaw = 6272A4 - $red = rgb(FF5555) - $redRaw = FF5555 - $orange = rgb(FFB86C) - $orangeRaw = FFB86C - $yellow = rgb(F1FA8C) - $yellowRaw = F1FA8C - $green = rgb(50FA7B) - $greenRaw = 50FA7B - $purple = rgb(BD93F9) - $purpleRaw = BD93F9 - $cyan = rgb(8BE9FD) - $cyanRaw = 8BE9FD - $pink = rgb(FF79C6) - $pinkRaw = FF79C6 - $accent = $purple - $accentRaw = $purpleRaw - ''; + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.features.desktop.hyprland; +in { + options.features.desktop.hyprland.enable = + mkEnableOption "Hyprland related stuff"; - wayland.windowManager.hyprland = { - settings = { - xwayland = { - force_zero_scaling = true; - }; + config = mkIf cfg.enable { + home.file.".config/hypr/colors.conf".text = '' + $background = rgb(282A36) + $backgroundRaw = 282A36 + $foreground = rgb(F8F8F2) + $foregroundRaw = F8F8F2 + $selection = rgb(44475A) + $selectionRaw = 44475A + $comment = rgb(6272A4) + $commentRaw = 6272A4 + $red = rgb(FF5555) + $redRaw = FF5555 + $orange = rgb(FFB86C) + $orangeRaw = FFB86C + $yellow = rgb(F1FA8C) + $yellowRaw = F1FA8C + $green = rgb(50FA7B) + $greenRaw = 50FA7B + $purple = rgb(BD93F9) + $purpleRaw = BD93F9 + $cyan = rgb(8BE9FD) + $cyanRaw = 8BE9FD + $pink = rgb(FF79C6) + $pinkRaw = FF79C6 + $accent = $purple + $accentRaw = $purpleRaw + ''; - exec-once = [ - "hyprpanel" - "hyprpaper" - "hypridle" - "sleep 1 && hyprpaper-random" - "wl-paste --type text --watch cliphist store" # Stores only text data - "wl-paste --type image --watch cliphist store" # Stores only image data "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\"" - ]; - - env = [ - "XCURSOR_SIZE,32" - "HYPRCURSOR_THEME,Bibata-Modern-Ice" - "WLR_NO_HARDWARE_CURSORS,1" - "GTK_THEME,Dracula" - "XDG_SESSION_TYPE,hyrland" - ]; - - input = { - touchdevice = { - enabled = true; + wayland.windowManager.hyprland = { + settings = { + xwayland = { + force_zero_scaling = true; }; - kb_layout = "de,us"; - kb_variant = ""; - kb_model = ""; - kb_rules = ""; - kb_options = "ctrl:nocaps"; - follow_mouse = 1; - }; - general = { - gaps_in = 5; - gaps_out = 5; - border_size = 1; - "col.active_border" = "rgba(9742b5ee) rgba(9742b5ee) 45deg"; - "col.inactive_border" = "rgba(44475aaa)"; - "col.nogroup_border" = "rgba(282a36dd)"; - "col.nogroup_border_active" = "rgb(bd93f9) rgb(44475a) 90deg"; - no_border_on_floating = false; - layout = "dwindle"; - }; + exec-once = [ + "hyprpanel" + "hyprpaper-random" + "hypridle" + "wl-paste --type text --watch cliphist store" # Stores only text data + "wl-paste --type image --watch cliphist store" # Stores only image data "wl-paste -p -t text --watch clipman store -P --histpath=\"~/.local/share/clipman-primary.json\"" + "xwaylandvideobridge" + ]; - decoration = { - shadow = { - enabled = true; - range = 60; - render_power = 3; - color = "rgba(1E202966)"; - offset = "1 2"; - scale = 0.97; + env = [ + "XCURSOR_SIZE,32" + "HYPRCURSOR_THEME,Bibata-Modern-Ice" + "WLR_NO_HARDWARE_CURSORS,1" + "GTK_THEME,Dracula" + "XDG_SESSION_TYPE,hyrland" + ]; + + input = { + touchdevice = { + enabled = true; + }; + kb_layout = "de,us"; + kb_variant = ""; + kb_model = ""; + kb_rules = ""; + kb_options = "ctrl:nocaps"; + follow_mouse = 1; }; - rounding = 8; - blur = { - enabled = true; - size = 3; - passes = 3; - }; - active_opacity = 0.9; - inactive_opacity = 0.5; - }; - animations = { - enabled = true; - bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; - animation = [ - "windows, 1, 7, myBezier" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 6, default" + general = { + gaps_in = 5; + gaps_out = 5; + border_size = 1; + "col.active_border" = "rgba(9742b5ee) rgba(9742b5ee) 45deg"; + "col.inactive_border" = "rgba(44475aaa)"; + "col.nogroup_border" = "rgba(282a36dd)"; + "col.nogroup_border_active" = "rgb(bd93f9) rgb(44475a) 90deg"; + no_border_on_floating = false; + layout = "dwindle"; + }; + + decoration = { + shadow = { + enabled = true; + range = 60; + render_power = 3; + color = "rgba(1E202966)"; + offset = "1 2"; + scale = 0.97; + }; + rounding = 8; + blur = { + enabled = true; + size = 3; + passes = 3; + }; + active_opacity = 0.9; + inactive_opacity = 0.5; + }; + + animations = { + enabled = true; + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + ]; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + }; + + master = { + new_status = "master"; + }; + + gestures = { + workspace_swipe = false; + }; + + device = [ + { + name = "epic-mouse-v1"; + sensitivity = -0.5; + } + { + name = "zsa-technology-labs-moonlander-mark-i"; + kb_layout = "us"; + } + { + name = "keychron-keychron-k7"; + kb_layout = "us"; + } + ]; + windowrule = [ + "float, class:file_progress" + "float, class:confirm" + "float, class:dialog" + "float, class:download" + "float, class:notification" + "float, class:error" + "float, class:splash" + "float, class:confirmreset" + "float, title:Open File" + "float, title:branchdialog" + "float, class:pavucontrol-qt" + "float, class:pavucontrol" + "fullscreen, class:wlogout" + "float, title:wlogout" + "fullscreen, title:wlogout" + "float, class:mpv" + "idleinhibit focus, class:mpv" + "opacity 1.0 override, class:mpv" + "float, title:^(Media viewer)$" + "float, title:^(Volume Control)$" + "float, title:^(Picture-in-Picture)$" + "float,title:^(floating-pomodoro)$" + "size 250 50, title:^(floating-pomodoro)$" + "move 12 100%-150,title:^(floating-pomodoro)$" + "pin,title:^(floating-pomodoro)$" + "float, initialTitle:.*streamlabs.com.*" + "pin, initialTitle:.*streamlabs.com.*" + "size 800 400, initialTitle:.*streamlabs.com.*" + "move 100%-820 102, initialTitle:.*alert-box.*" + "move 100%-820 512, initialTitle:.*chat-box.*" + "opacity 0.5 override, initialTitle:.*streamlabs.com.*" + "idleinhibit focus, initialTitle:.*streamlabs.com.*" + "noanim, initialTitle:.*streamlabs.com.*" + "noborder, initialTitle:.*streamlabs.com.*" + "noshadow, initialTitle:.*streamlabs.com.*" + "noblur, initialTitle:.*streamlabs.com.*" + "bordercolor rgb(ffffff),xwayland:1" + "opacity 0.0 override, class:^(xwaylandvideobridge)$" + "noanim, class:^(xwaylandvideobridge)$" + "noinitialfocus, class:^(xwaylandvideobridge)$" + "maxsize 1 1, class:^(xwaylandvideobridge)$" + "noblur, class:^(xwaylandvideobridge)$" + "nofocus, class:^(xwaylandvideobridge)$" + ]; + + "$mainMod" = "SUPER"; + + bind = [ + "$mainMod, return, exec, nu -c zellij-ps" + # "$mainMod, t, exec, warp-terminal" + "$mainMod, t, exec, kitty -e nu -c 'nitch; exec nu'" + "$mainMod SHIFT, t, exec, launch-timer" + "$mainMod SHIFT, e, exec, kitty -e zellij_nvim" + "$mainMod, o, exec, hyprctl setprop activewindow opaque toggle" + "$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512" + "$mainMod, b, exec, thunar" + "$mainMod SHIFT, B, exec, vivaldi" + "$mainMod, Escape, exec, wlogout -p layer-shell" + "$mainMod, Space, togglefloating" + "$mainMod, q, killactive" + "$mainMod, M, exit" + "$mainMod, F, fullscreen" + "$mainMod SHIFT, V, togglefloating" + "$mainMod, D, exec, rofi -show" + "$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'" + "$mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy" + "$mainMod SHIFT, S, exec, bemoji" + "$mainMod, P, exec, rofi-pass" + "$mainMod SHIFT, P, pseudo" + "$mainMod, J, togglesplit" + "$mainMod, h, movefocus, l" + "$mainMod, l, movefocus, r" + "$mainMod, k, movefocus, u" + "$mainMod, j, movefocus, d" + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + "$mainMod SHIFT, 1, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + ]; + + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" ]; }; - - dwindle = { - pseudotile = true; - preserve_split = true; - }; - - master = { - new_status = "master"; - }; - - gestures = { - workspace_swipe = false; - }; - - device = [ - { - name = "epic-mouse-v1"; - sensitivity = -0.5; - } - { - name = "zsa-technology-labs-moonlander-mark-i"; - kb_layout = "us"; - } - { - name = "keychron-keychron-k7"; - kb_layout = "us"; - } - ]; - windowrule = [ - "float, class:file_progress" - "float, class:confirm" - "float, class:dialog" - "float, class:download" - "float, class:notification" - "float, class:error" - "float, class:splash" - "float, class:confirmreset" - "float, title:Open File" - "float, title:branchdialog" - "float, class:pavucontrol-qt" - "float, class:pavucontrol" - "fullscreen, class:wlogout" - "float, title:wlogout" - "fullscreen, title:wlogout" - "float, class:mpv" - "idleinhibit focus, class:mpv" - "opacity 1.0 override, class:mpv" - "float, title:^(Media viewer)$" - "float, title:^(Volume Control)$" - "float, title:^(Picture-in-Picture)$" - "float,title:^(floating-pomodoro)$" - "size 250 50, title:^(floating-pomodoro)$" - "move 12 100%-150,title:^(floating-pomodoro)$" - "pin,title:^(floating-pomodoro)$" - "float, initialTitle:.*streamlabs.com.*" - "pin, initialTitle:.*streamlabs.com.*" - "size 800 400, initialTitle:.*streamlabs.com.*" - "move 100%-820 102, initialTitle:.*alert-box.*" - "move 100%-820 512, initialTitle:.*chat-box.*" - "opacity 0.5 override, initialTitle:.*streamlabs.com.*" - "idleinhibit focus, initialTitle:.*streamlabs.com.*" - "noanim, initialTitle:.*streamlabs.com.*" - "noborder, initialTitle:.*streamlabs.com.*" - "noshadow, initialTitle:.*streamlabs.com.*" - "noblur, initialTitle:.*streamlabs.com.*" - "bordercolor rgb(ffffff),xwayland:1" - ]; - - "$mainMod" = "SUPER"; - - bind = [ - "$mainMod, return, exec, nu -c zellij-ps" - # "$mainMod, t, exec, warp-terminal" - "$mainMod, t, exec, kitty -e nu -c 'nitch; exec nu'" - "$mainMod SHIFT, t, exec, launch-timer" - "$mainMod SHIFT, e, exec, kitty -e zellij_nvim" - "$mainMod, o, exec, hyprctl setprop activewindow opaque toggle" - "$mainMod, r, exec, hyprctl dispatch focuswindow \"initialtitle:.*alert-box.*\" && hyprctl dispatch moveactive exact 4300 102 && hyprctl dispatch focuswindow \"initialtitle:.*chat-box.*\" && hyprctl dispatch moveactive exact 4300 512" - "$mainMod, b, exec, thunar" - "$mainMod SHIFT, B, exec, vivaldi" - "$mainMod, Escape, exec, wlogout -p layer-shell" - "$mainMod, Space, togglefloating" - "$mainMod, q, killactive" - "$mainMod, M, exit" - "$mainMod, F, fullscreen" - "$mainMod SHIFT, V, togglefloating" - "$mainMod, D, exec, rofi -show" - "$mainMod, C, exec, bash -c 'FILE=/tmp/screenshot_$(date +%s).png; grim -g \"$(slurp)\" \"$FILE\" && ksnip \"$FILE\"'" - "$mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy" - "$mainMod SHIFT, S, exec, bemoji" - "$mainMod, P, exec, rofi-pass" - "$mainMod SHIFT, P, pseudo" - "$mainMod, J, togglesplit" - "$mainMod, h, movefocus, l" - "$mainMod, l, movefocus, r" - "$mainMod, k, movefocus, u" - "$mainMod, j, movefocus, d" - "$mainMod, 1, workspace, 1" - "$mainMod, 2, workspace, 2" - "$mainMod, 3, workspace, 3" - "$mainMod, 4, workspace, 4" - "$mainMod, 5, workspace, 5" - "$mainMod, 6, workspace, 6" - "$mainMod, 7, workspace, 7" - "$mainMod, 8, workspace, 8" - "$mainMod, 9, workspace, 9" - "$mainMod, 0, workspace, 10" - "$mainMod SHIFT, 1, movetoworkspace, 1" - "$mainMod SHIFT, 2, movetoworkspace, 2" - "$mainMod SHIFT, 3, movetoworkspace, 3" - "$mainMod SHIFT, 4, movetoworkspace, 4" - "$mainMod SHIFT, 5, movetoworkspace, 5" - "$mainMod SHIFT, 6, movetoworkspace, 6" - "$mainMod SHIFT, 7, movetoworkspace, 7" - "$mainMod SHIFT, 8, movetoworkspace, 8" - "$mainMod SHIFT, 9, movetoworkspace, 9" - "$mainMod SHIFT, 0, movetoworkspace, 10" - "$mainMod, mouse_down, workspace, e+1" - "$mainMod, mouse_up, workspace, e-1" - ]; - - bindm = [ - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; }; - }; - services.hypridle = { - enable = true; - settings = { - general = { - before_sleep_cmd = "hyprlock"; - after_sleep_cmd = "hyprctl dispatch dpms on"; - inhibit_sleep = 3; + services.hypridle = { + enable = true; + settings = { + general = { + before_sleep_cmd = "hyprlock"; + after_sleep_cmd = "hyprctl dispatch dpms on"; + inhibit_sleep = 3; + }; + + listener = [ + { + timeout = 300; # 5 min + on-timeout = "hyprlock"; + } + { + timeout = 420; # 5.5 min + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; }; - - listener = [ - { - timeout = 300; # 5 min - on-timeout = "hyprlock"; - } - { - timeout = 420; # 5.5 min - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; }; - }; - programs.hyprlock = { - enable = true; - settings = { - source = "$HOME/.config/hypr/colors.conf"; + services.hyprpaper.enable = true; - "$font" = "JetBrainsMono Nerd Font"; - "$base" = "$background"; - "$text" = "$foreground"; - "$textAlpha" = "$foregroundRaw"; - "$accentAlpha" = "$accentRaw"; + programs.hyprlock = { + enable = true; + settings = { + source = "$HOME/.config/hypr/colors.conf"; - general = { - hide_cursor = true; + "$font" = "JetBrainsMono Nerd Font"; + "$base" = "$background"; + "$text" = "$foreground"; + "$textAlpha" = "$foregroundRaw"; + "$accentAlpha" = "$accentRaw"; + + general = { + hide_cursor = true; + }; + + background = { + monitor = ""; + path = "~/.hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png"; + blur_passes = 0; + color = "$base"; + }; + + label = [ + { + monitor = ""; + text = "$TIME"; + color = "$text"; + font_size = 90; + font_family = "$font"; + position = "30, 0"; + halign = "left"; + valign = "top"; + } + { + monitor = ""; + text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"''; + color = "$text"; + font_size = 25; + font_family = "$font"; + position = "30, -150"; + halign = "left"; + valign = "top"; + } + ]; + + input-field = [ + { + monitor = ""; + size = "300, 60"; + outline_thickness = 4; + dots_size = 0.2; + dots_spacing = 0.2; + dots_center = true; + outer_color = "$accent"; + inner_color = "$background"; + font_color = "$text"; + fade_on_empty = false; + placeholder_text = ''󰌾 Logged in as $USER''; + hide_input = false; + check_color = "$accent"; + fail_color = "$red"; + fail_text = ''$FAIL ($ATTEMPTS)''; + capslock_color = "$yellow"; + position = "0, -35"; + halign = "center"; + valign = "center"; + } + ]; }; - - background = { - monitor = ""; - path = "~/.hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png"; - blur_passes = 0; - color = "$base"; - }; - - label = [ - { - monitor = ""; - text = "$TIME"; - color = "$text"; - font_size = 90; - font_family = "$font"; - position = "30, 0"; - halign = "left"; - valign = "top"; - } - { - monitor = ""; - text = ''cmd[update:43200000] echo "$(date +"%A, %d %B %Y")"''; - color = "$text"; - font_size = 25; - font_family = "$font"; - position = "30, -150"; - halign = "left"; - valign = "top"; - } - ]; - - input-field = [ - { - monitor = ""; - size = "300, 60"; - outline_thickness = 4; - dots_size = 0.2; - dots_spacing = 0.2; - dots_center = true; - outer_color = "$accent"; - inner_color = "$background"; - font_color = "$text"; - fade_on_empty = false; - placeholder_text = ''󰌾 Logged in as $USER''; - hide_input = false; - check_color = "$accent"; - fail_color = "$red"; - fail_text = ''$FAIL ($ATTEMPTS)''; - capslock_color = "$yellow"; - position = "0, -35"; - halign = "center"; - valign = "center"; - } - ]; }; }; } diff --git a/home/features/desktop/wayland.nix b/home/features/desktop/wayland.nix index a28c002..e6b674a 100644 --- a/home/features/desktop/wayland.nix +++ b/home/features/desktop/wayland.nix @@ -14,7 +14,7 @@ in { grim hyprcursor hyprlock - hyprpaper + kdePackages.xwaylandvideobridge nwg-displays nwg-look qt6.qtwayland diff --git a/home/sascha.koenig/AZLT124-L.nix b/home/sascha.koenig/AZLT124-L.nix index fee71a5..825bf5b 100644 --- a/home/sascha.koenig/AZLT124-L.nix +++ b/home/sascha.koenig/AZLT124-L.nix @@ -13,14 +13,9 @@ in { ../features/desktop ]; - options.features.desktop.hyprland.enable = - mkEnableOption "enable Hyprland"; - config = mkMerge [ - # Base configuration { xdg = { - # TODO: better structure enable = true; configFile."mimeapps.list".force = true; mimeApps = { @@ -43,6 +38,17 @@ in { }; }; }; + + services.hyprpaper.settings = { + ipc = "on"; + preload = ["/home/sascha.koenig/.config/hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png"]; + wallpaper = [ + "eDP-1,/home/sascha.koenig/.config/hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png" + "DP-8,/home/sascha.koenig/.config/hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png" + "DP-9,/home/sascha.koenig/.config/hypr/wallpapers/wallhaven-lmmo8r_2560x1600.png" + ]; + }; + features = { cli = { fish.enable = true; @@ -74,7 +80,7 @@ in { "2, monitor:eDP-1" "3, monitor:DP-9" "4, monitor:DP-9" - "5, monitor:DP-8,border:false,rounding:false" + "5, monitor:DP-8" "6, monitor:DP-8" ]; windowrule = [