diff options
Diffstat (limited to 'home/hyprland.nix')
| -rw-r--r-- | home/hyprland.nix | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/home/hyprland.nix b/home/hyprland.nix new file mode 100644 index 0000000..dcd9999 --- /dev/null +++ b/home/hyprland.nix @@ -0,0 +1,169 @@ +{ pkgs, ... }: +{ + + services.hyprpaper = { + enable = true; + settings = { + ipc = "on"; + preload = [ + "/etc/nixos/home/wallpapers/owl1.webp" + "/etc/nixos/home/wallpapers/owl2.webp" + "/etc/nixos/home/wallpapers/owl3.webp" + ]; + wallpaper = [ ", /etc/nixos/home/wallpapers/owl1.webp" ]; + }; + }; + + services.hyprpolkitagent.enable = true; + + services.hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "${pkgs.procps}/bin/pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; + }; + + listener = [ + { + timeout = 300; + on-timeout = "${pkgs.brightnessctl}/bin/brightnessctl -s set 10"; + on-resume = "${pkgs.brightnessctl}/bin/brightnessctl -r"; + } + { + timeout = 600; + on-timeout = "${pkgs.systemd}/bin/loginctl lock-session"; + } + { + timeout = 900; # 15 minutes + on-timeout = "${pkgs.hyprland}/bin/hyprctl dispatch dpms off"; # screen off when timeout has passed + on-resume = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired. + } + { + timeout = 1800; + on-timeout = "${pkgs.systemd}/bin/systemctl suspend"; + } + ]; + }; + }; + wayland.windowManager.hyprland = { + enable = true; + package = pkgs.hyprland; + systemd = { + variables = [ "--all" ]; + enable = true; + enableXdgAutostart = true; + }; + extraConfig = '' + gesture = 3, up, dispatcher, fullscreen 1 + gesture = 3, down, dispatcher, fullscreen 1 + gesture = 4, up, dispatcher, fullscreen 0 + gesture = 4, down, dispatcher, fullscreen 0 + gesture = 2, pinchout, dispatcher, splitratio 0.1 # approximating clockwise to pinchout + gesture = 2, pinchin, dispatcher, splitratio -0.1 # approximating anticlockwise to pinchin + gesture = 4, pinchin, close + gesture = 4, pinchout, dispatcher, exec ${pkgs.ghostty}/bin/ghostty + gesture = 2, left, dispatcher, workspace 1 # approximating left_up/left_down to left/right/up/down + gesture = 2, down, dispatcher, workspace 2 + gesture = 2, right, dispatcher, workspace 3 + gesture = 2, up, dispatcher, workspace 4 + + exec-once = ${pkgs.hyprlock}/bin/hyprlock --immediate; + ''; + xwayland.enable = true; + settings = { + monitor = ", preferred, auto, 1"; + general = { + gaps_out = 10; + }; + input = { + kb_layout = "us,fi"; + kb_options = "grp:alt_shift_toggle"; + scroll_method = "on_button_down"; + scroll_button = 274; + sensitivity = 0; # -1.0 - 1.0, 0 means no modification + repeat_delay = 180; + repeat_rate = 150; + touchpad = { + natural_scroll = true; + disable_while_typing = true; + tap-to-click = true; + middle_button_emulation = true; + }; + }; + decoration = { + dim_inactive = true; + }; + cursor = { + no_hardware_cursors = true; + }; + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + middle_click_paste = true; + }; + "$mainMod" = "SUPER"; + bind = [ + "$mainMod, V, exec, ${pkgs.ghostty}/bin/ghostty --class clipse -e 'clipse' " + "$mainMod, Return, exec, ${pkgs.ghostty}/bin/ghostty" + "$mainMod, d, exec, ${pkgs.walker}/bin/walker --modules applications,translation,webesearch,clipboard,finder" + "$mainMod, B, exec, ${pkgs.firefox}/bin/firefox" + "$mainMod, F, fullscreen" + "$mainMod, C, killactive," + "$mainMod, Tab, cyclenext" + ", Print, exec, ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy && ${pkgs.wl-clipboard}/bin/wl-paste > ~/Pictures/screenshots/Screenshot-$(date +%F_%T).png && dunstify 'Screenshot of the whole screen taken' -t 1000" + ", XF86MonBrightnessUp, exec, brightnessctl s -e 5%+" + ", XF86MonBrightnessDown, exec, brightnessctl s -e 5%-" + ", XF86AudioRaiseVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume,exec,wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + "$mainMod SHIFT, L, exec, hyprlock" + + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + "$mainMod, H, movefocus, l" + "$mainMod, L, movefocus, r" + "$mainMod, K, movefocus, u" + "$mainMod, J, movefocus, d" + + "$mainMod SHIFT, left, swapwindow, l" + "$mainMod SHIFT, right, swapwindow, r" + "$mainMod SHIFT, up, swapwindow, u" + "$mainMod SHIFT, down, swapwindow, d" + + # Switch workspaces with mainMod + [0-9] + "$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" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$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" + ]; + binde = [ ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ]; + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + }; + }; +} |
