# Monitor settings #monitor=DP-1,2560x1440@60,0x0,1 # external monitor at desk monitor=eDP-1,1920x1080@60,0x0,1 # built-in display monitor=HDMI-A-1,1920x1080@60,auto,1,mirror, eDP-1 # mirror external monitor at desk - for laptop monitor=,preferred,auto,1,mirror, eDP-1 # default treatment for external monitors #monitor=,preferred,auto,1 # default treatment for external monitors # Environment variables env = XCURSOR_SIZE,24 env = XCURSOR_THEME,Breeze env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland env = XDG_SESSION_DESKTOP,Hyprland env = PATH,$PATH:$HOME/.local/bin:$HOME/.cargo/bin env = WLR_NO_HARDWARE_CURSORS,1 env = GDK_BACKEND, wayland,x11 env = GTK_THEME,Materia:dark env = QT_QPA_PLATFORM,wayland;xcb env = QT_QPA_PLATFORMTHEME,qt6ct env = SDL_VIDEODRIVER,wayland #auto-runs exec-once = ~/.config/hypr/xdg-portal-hyprland #exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = dbus-update-activation-environment --systemd all exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME # exec-once = /usr/lib/polkit-kde-authentication-agent-1 exec-once = wl-clipboard-history -t exec-once = swww init exec-once = gammastep exec-once = waybar exec-once = wl-paste -p --watch wl-copy -p '' # THE FOLLOWING LINES ARE A TEST TO GET IDLE LOCKING/SLEEP WORKING # Turn monitors off if locked (swaylock running) and idle for 10 seconds #exec-once = swayidle -w timeout 10 'if pgrep -x swaylock; then hyprctl dispatch dpms off; fi' resume 'hyprctl dispatch dpms on' # # Sleep if locked (swaylock running) and idle for 10 seconds $lock = swaylock -C $HOME/.config/swaylock/config exec-once = swayidle -w timeout 180 'if pgrep -x swaylock; then systemctl suspend; fi' before-sleep '$lock' & # Lock screen after idle for 300s and turn monitors off after 330 exec-once = swayidle -w timeout 300 '$lock' timeout 330 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' & # IF ABANDONING ABOVE METHODS, UNCOMMENT BELOW #exec-once = swaylock #exec-once = xss-lock -- swaylock -n -i /usr/share/pixmaps/background.jpg exec-once = fcitx5 -d exec-once = dunst # exec-once = /usr/lib/kdeconnectd # set $gnome-schema org.gnome.desktop.interface exec-once = gsettings set $gnome-schema gtk-theme 'Arc Dark' exec-once = gsettings set $gnome-schema icon-theme 'Arc Dark' # exec-once = /usr/bin/emacs --daemon exec-once = blueman-applet exec-once = nm-applet exec-once = kdeconnect-indicator input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = follow_mouse = 1 numlock_by_default = true touchpad { disable_while_typing = true #disable_while_typing = false natural_scroll = yes middle_button_emulation = true drag_lock = false tap-to-click = true } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } general { gaps_in = 2 gaps_out = 4 border_size = 2 #col.active_border = rgba(ef629fee) rgba(eecda3ff) 45deg #col.active_border = rgba(b90efaff) rgba(f0fe2fee) 45deg col.active_border = rgba(00ffb2ff) rgba(00ff66ff) 90deg col.inactive_border = rgba(595959ff) layout = dwindle } group { } decoration { rounding = 10 blur { enabled = true size = 3 passes = 1 xray = true new_optimizations = on } drop_shadow = yes shadow_range = 4 shadow_render_power = 3 col.shadow = rgba(1a1a1aee) } animations { enabled = yes bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier animation = windowsOut, 1, 7, default, popin 80% animation = border, 1, 10, default animation = borderangle, 1, 8, default animation = fade, 1, 7, default animation = workspaces, 1, 6, default } dwindle { pseudotile = yes preserve_split = yes } master { new_is_master = true } gestures { workspace_swipe = true workspace_swipe_numbered = true } misc { disable_hyprland_logo = false #force_default_wallpaper = -1 } # device:epic mouse V1 { # sensitivity = -0.5 # } # Window Rules # - General Rules windowrule = idleinhibit fullscreen, firefox windowrule = idleinhibit focus, firefox windowrule = idleinhibit fullscreen, floorp windowrule = idleinhibit fullscreen, ghostty windowrule = idleinhibit focus, mpv windowrule = idleinhibit focus, ^(emacs)$ windowrule = idleinhibit focus, ^(Emacs)$ windowrule = float, polkit-kde-authentication-agent-1 windowrule = float, ^(praat)$ windowrule = float, Rofi windowrule = float, Gimp windowrule = float, Nautilus windowrule = float, notification windowrule = tile, Spotify windowrule = tile, Minecraft # - Workspace Rules windowrule = workspace 2, KeePassXC windowrule = workspace 3, firefox windowrule = workspace 3, floorp windowrule = workspace 4, Spotify windowrule = workspace 6, discord windowrule = workspace 6, Signal windowrule = workspace 10, Minecraft # - Opacity Rules #windowrule = opacity 1.0 override 0.6, firefox windowrule = opacity 1.0, firefox windowrule = opacity 1.0 override 0.6,^(kitty)$ windowrule = opacity 1.0 override 0.6, alacritty $mainMod = SUPER $altMod = ALT $ctrlMod = CTRL # NATIVE PROGRAM BINDS bind = $altMod, Return, exec, $HOME/.local/bin/ghostty bind = $mainMod, Return, exec, $HOME/.local/bin/ghostty # for apps that yoink alt- binds bind = $altMod SHIFT, Return, exec, contour bind = $mainMod SHIFT, D, exec, discord --enable-blink-features=MiddleClickAutoscroll bind = $mainMod SHIFT, E, exec, emacsclient -c -a 'emacs' bind = $mainMode SHIFT, F, exec, focus-linux bind = $mainMod, SPACE, exec, pkill wofi || wofi bind = $mainMod, E, exec, nautilus # SUPER alone to open wofi - hit again to kill #bindr = $mainMod, $mainMod_L, exec, pkill wofi || wofi --show drun # SUBMAPS # # Resize Submap bind = $mainMod, R, submap, resize submap = resize bind=, escape,submap,reset binde=, left, resizeactive, -10 0 bindr=, left, submap, reset binde=, right, resizeactive, 10 0 bindr=, right, submap, reset binde=, up, resizeactive, 0 10 bindr=, up, submap, reset binde=, down, resizeactive, 0 -10 bindr=, down, submap, reset binde=, H, resizeactive, -10 0 bindr=, H, submap, reset binde=, J, resizeactive, 0 -10 bindr=, J, submap, reset binde=, K, resizeactive, 0 10 bindr=, K, submap, reset binde=, L, resizeactive, 10 0 bindr=, L, submap, reset submap=reset # Browser Submap bind = $mainMod, B, submap, browser_select submap = browser_select bind =, B, exec, brave --enable-blink-features=MiddleClickAutoscroll bind =, B, submap, reset bind =, F, exec, firefox bind =, F, submap, reset bind=, escape,submap,reset submap=reset # Flatpak Binds bind = $mainMod, S, exec, flatpak run com.spotify.Client bind = $mainMod SHIFT, V, submap, video_stuff submap = video_stuff bind = , O, exec, flatpak run com.obsproject.Studio bind = , O, submap, reset bind = , V, exec , flatpak run org.kde.kdenlive bind = , V, submap, reset bind=, escape,submap,reset submap = reset bind = $mainMod, P, pseudo, # dwindle # Script Binds bind = $mainMod, W, exec, ~/scripts/wp bind = $mainMod SHIFT, W, exec, ~/scripts/bar_and_wp # Other Binds bind = $mainMod, C, killactive, bind = $mainMod control, Q, exec, $lock bind = $mainMod, F4, exit, bind = $mainMod, V, togglefloating, bind = $mainMod SHIFT, S, togglesplit, # dwindle bind = $mainMod, F, fullscreen, # Screenshots $screenshotarea = hyprctl keyword animation "fadeOut,0,0,default"; grimblast --notify copy area; hyprctl keyword animation "fadeOut,1,4,default" bind = , Print, exec, $screenshotarea bind = SHIFT, Print, exec, grimblast --notify --cursor copy output # Multimedia Keys # pause/play, next/prev audio bindl =, XF86AudioPlay, exec, playerctl play-pause bindl =, XF86AudioNext, exec, playerctl next bindl =, XF86AudioPrev, exec, playerctl previous # volume control bindel=, XF86AudioRaiseVolume, exec, pamixer -i 5 bindel=, XF86AudioLowerVolume, exec, pamixer -d 5 bindel=, XF86AudioMute, exec, pamixer -t # brightness control binde=, XF86MonBrightnessDown, exec, brightnessctl set 10%- binde=, XF86MonBrightnessUp, exec, brightnessctl set 10%+ # touchpad/other binde=, XF86TouchpadToggle, exec, ~/scripts/hypr-tp-toggle bind=, XF86Sleep, exec, systemctl suspend # Window and Workspace Control # Move focus with mainMod + hjkl bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d bind = $mainMod, comma, focusmonitor, -1 bind = $mainMod, period, focusmonitor, +1 # Move Windows bind = $mainMod SHIFT, H, movewindow, l bind = $mainMod SHIFT, L, movewindow, r bind = $mainMod SHIFT, K, movewindow, u bind = $mainMod SHIFT, J, movewindow, d bind = $mainMod SHIFT, comma, movecurrentworkspacetomonitor, -1 bind = $mainMod SHIFT, period, movecurrentworkspacetomonitor, +1 # Resize Windows binde = $mainMod, right, resizeactive, 10 0 binde = $mainMod, left, resizeactive, -10 0 binde = $mainMod, up, resizeactive, 0 -10 binde = $mainMod, down, resizeactive, 0 10 # Switch workspaces with mainMod + [0-9] 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 bind = $mainMod, 0, workspace, 10 # Move active window to a workspace with mainMod + SHIFT + [0-9] 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 bind = $mainMod SHIFT, 0, movetoworkspace, 10 bind = $mainMod SHIFT CTRL, right, movetoworkspace, +1 bind = $mainMod SHIFT CTRL, left, movetoworkspace, -1 # Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1 # Tab through existing workspaces bind = $mainMod, Tab, workspace, e+1 bind = $mainMod SHIFT, Tab, workspace, e-1 bind = $mainMod CTRL, right, workspace, +1 bind = $mainMod CTRL, left, workspace, -1 # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow