# hyprland.conf - managed by Ansible # Monitor layout (left to right): # 1. DP-1 TERRA 3280W 2560x1440@144 (0x0) # 2. DVI-D-1 BenQ BL2405 1920x1080@60 (rotated 90° CW, effective width 1080) # 3. HDMI-A-1 TERRA 3280W 2560x1440@144 (3640x0) monitor=DP-1,2560x1440@144,0x0,1 monitor=DVI-D-1,1920x1080@60,2560x0,1,transform,1 monitor=HDMI-A-1,2560x1440@144,3640x0,1 # Session services: hyprpaper, waybar, dunst, hypridle, hyprlauncher, cliphist # Managed by systemd user units under ~/.config/systemd/user/ # All WantedBy=graphical-session.target for uwsm integration # Environment variables for NVIDIA env = LIBVA_DRIVER_NAME,nvidia env = XDG_SESSION_TYPE,wayland env = GBM_BACKEND,nvidia-drm env = __GLX_VENDOR_LIBRARY_NAME,nvidia env = WLR_NO_HARDWARE_CURSORS,1 env = NVD_BACKEND,direct # Input input { kb_layout = de follow_mouse = 1 sensitivity = 0 } device { name = pixart-usb-optical-mouse left_handed = 1 } general { gaps_in = 5 gaps_out = 10 border_size = 2 col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg col.inactive_border = rgba(595959aa) layout = dwindle } # Decoration decoration { rounding = 10 blur { enabled = true size = 3 passes = 1 } } # Animations animations { enabled = yes } # Dwindle layout dwindle { preserve_split = yes } # Keybindings $mainMod = SUPER bind = $mainMod, Q, exec, kitty bind = $mainMod, C, killactive, bind = $mainMod, M, exit, bind = $mainMod, E, exec, kitty -e yazi bind = $mainMod, V, togglefloating, bind = $mainMod, D, exec, hyprlauncher bind = $mainMod, P, pseudo bind = $mainMod, J, layoutmsg, togglesplit # Worktime safers bind = $mainMod, F, fullscreen, 0 # Toggle fullscreen bind = $mainMod, R, exec, hyprctl reload # Reload Hyprland config bind = $mainMod, SPACE, togglefloating # Toggle float (popup window) bind = $mainMod, TAB, cyclenext # Cycle through windows bind = $mainMod SHIFT, TAB, cyclenext, prev # Cycle backwards bind = $mainMod, GRAVE, togglespecialworkspace # Scratchpad (toggle) bind = $mainMod SHIFT, GRAVE, movetoworkspace, special # Send to scratchpad bind = $mainMod CTRL, K, exec, grep -E '^bind\s*=.*#' ~/.config/hypr/hyprland.conf | sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/' | fuzzel -d # Home row navigation aliases (keep arrows too) bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r # HJKL + SHIFT = move window in direction (home row) bind = $mainMod SHIFT, H, movewindow, l bind = $mainMod SHIFT, L, movewindow, r bind = $mainMod SHIFT, K, movewindow, u bind = $mainMod SHIFT, J, movewindow, d # Window resize via home row (SUPER+ALT) bind = $mainMod ALT, H, resizeactive, -40 0 bind = $mainMod ALT, L, resizeactive, 40 0 bind = $mainMod ALT, K, resizeactive, 0 -40 bind = $mainMod ALT, J, resizeactive, 0 40 # Lock screen bind = $mainMod CTRL, L, exec, hyprlock # Screenshots bind = , Print, exec, grimblast copysave area bind = $mainMod, Print, exec, grimblast copysave active bind = $mainMod SHIFT, Print, exec, grimblast copysave output bind = $mainMod ALT, Print, exec, grim -g "$(slurp)" - | satty -f - # Focus bind = $mainMod, left, movefocus, l # Workspace to monitor pinning workspace = 1, monitor:DP-1, default:true workspace = 2, monitor:DVI-D-1, default:true workspace = 3, monitor:HDMI-A-1, default:true bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d # Move window to adjacent tile/monitor bind = $mainMod SHIFT, left, movewindow, l bind = $mainMod SHIFT, right, movewindow, r bind = $mainMod SHIFT, up, movewindow, u bind = $mainMod SHIFT, down, movewindow, d # Apps bind = $mainMod, B, exec, google-chrome-stable # Workspaces bind = $mainMod, 1, workspace, 1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 # Move to workspace bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 bind = $mainMod SHIFT, 4, movetoworkspace, 4 bind = $mainMod SHIFT, 5, movetoworkspace, 5 bind = $mainMod SHIFT, 6, movetoworkspace, 6 bind = $mainMod SHIFT, 7, movetoworkspace, 7 bind = $mainMod SHIFT, 8, movetoworkspace, 8 bind = $mainMod SHIFT, 9, movetoworkspace, 9