################ ### MONITORS ### ################ {{- if eq .chezmoi.hostname "wkz-pc" }} monitor = DP-2, 3840x2160@160, 0x0, 1.5, bitdepth,10 {{- else if eq .chezmoi.hostname "wkz-lapdog" }} monitor = eDP-1, 1920x1080@60, 0x0, 1.33 {{- else }} monitor = , preferred, auto, auto {{- end }} xwayland { force_zero_scaling = true } ################### ### MY PROGRAMS ### ################### $terminal = uwsm-app -- kitty $browser = uwsm-app -- zen-browser $hyprlock = uwsm-app -- hyprlock $hyprshot = uwsm-app -- hyprshot ################# ### AUTOSTART ### ################# exec-once = uwsm-app -- udiskie exec-once = uwsm-app -- waybar exec-once = uwsm-app -- dunst exec-once = uwsm-app -- wl-paste --watch cliphist store exec-once = uwsm-app -- hypridle exec-once = uwsm-app -- hyprpaper exec-once = uwsm-app -- hyprsunset exec-once = [workspace 1] uwsm-app -- $terminal exec-once = [workspace 2 silent] uwsm-app -- $browser {{- if eq .chezmoi.hostname "wkz-lapdog" }} exec-once = uwsm-app -- iio-hyprland {{- end }} ############################# ### ENVIRONMENT VARIABLES ### ############################# # See https://wiki.hyprland.org/Configuring/Environment-variables/ # Environment variables stored in ~/.config/uwsm/env and ~/.config/uwsm/env-hyprland ##################### ### LOOK AND FEEL ### ##################### # Refer to https://wiki.hyprland.org/Configuring/Variables/ # https://wiki.hyprland.org/Configuring/Variables/#general general { gaps_in = 0 gaps_out = 0 border_size = 1 col.active_border = rgba(00dd00ff) rgba(006600ff) 90deg col.inactive_border = rgba(646464ff) # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = true layout = dwindle snap { enabled = true window_gap = 4 monitor_gap = 6 respect_gaps = true } } # https://wiki.hyprland.org/Configuring/Variables/#decoration decoration { rounding = 0 active_opacity = 1.0 inactive_opacity = 1.0 shadow { enabled = false range = 4 render_power = 3 color = rgba(151515ee) } # https://wiki.hyprland.org/Configuring/Variables/#blur blur { enabled = false size = 3 passes = 1 vibrancy = 0.1696 } } # https://wiki.hyprland.org/Configuring/Variables/#animations animations { enabled = yes # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = easeOutQuint,0.23,1,0.32,1 bezier = easeInOutCubic,0.65,0.05,0.36,1 bezier = linear,0,0,1,1 bezier = almostLinear,0.5,0.5,0.75,1.0 bezier = quick,0.15,0,0.1,1 animation = windows, 1, 1, quick animation = windowsOut, 1, 0.5, linear, slide animation = layers, 1, 1, quick animation = fade, 0, 2, linear animation = fadeDpms, 1, 4, linear animation = fadeLayersOut, 0, 1, almostLinear animation = workspacesIn, 1, 0.5, quick animation = workspacesOut, 1, 0.7, quick } # Smart gaps: https://wiki.hyprland.org/Configuring/Workspace-Rules/#smart-gaps # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more dwindle { preserve_split = true } # https://wiki.hyprland.org/Configuring/Variables/#misc misc { disable_hyprland_logo = true vfr = true vrr = 2 enable_swallow = true swallow_regex = ^(kitty)$ swallow_exception_regex = ^(xev|wev|vkcube|glxgears|kitty).* allow_session_lock_restore = 1 on_focus_under_fullscreen = 1 } ecosystem { enforce_permissions = true } permission = /usr/bin/grim, screencopy, allow permission = /usr/(lib|lib64)/xdg-desktop-portal-hyprland, screencopy, allow ############# ### INPUT ### ############# # https://wiki.hyprland.org/Configuring/Variables/#input input { kb_layout = ee kb_variant = kb_model = {{- if eq .chezmoi.hostname "wkz-lapdog" }} kb_options = caps:swapescape, fkeys:basic_13-24 {{- else }} kb_options = fkeys:basic_13-24 {{- end }} kb_rules = follow_mouse = 1 sensitivity = -0.05 # -1.0 - 1.0, 0 means no modification. touchpad { natural_scroll = true scroll_factor = 0.6 disable_while_typing = false } } device { name = falbatech-redox kb_layout = us kb_options = fkeys:basic_13-24 } device { name = falbatech-redox-mouse sensitivity = -0.5 accel_profile = flat } # https://wiki.hyprland.org/Configuring/Variables/#gestures gestures { gesture = 3, horizontal, workspace gesture = 3, up, mod: SUPER, fullscreen } ################### ### KEYBINDINGS ### ################### # See https://wiki.hyprland.org/Configuring/Keywords/ $mainMod = SUPER bind = $mainMod, RETURN, exec, $terminal bind = $mainMod, Q, exec, $browser bind = $mainMod, W, killactive, bind = $mainMod CTRL SHIFT, Q, exit, bind = $mainMod, C, togglefloating, bind = $mainMod, SPACE, exec, pkill fuzzel || uwsm-app -- fuzzel bind = $mainMod SHIFT, J, togglesplit, # dwindle bind = $mainMod, F, fullscreen, 1 bind = $mainMod SHIFT, F, fullscreen, 0 # Hyprlock bind = $mainMod SHIFT, L, exec, $hyprlock # Cliphist bind = $mainMod, V, exec, pkill fuzzel || cliphist list | uwsm-app -- fuzzel -d -w 75 --select-index 1 | cliphist decode | wl-copy # Hyprshot bind = $mainMod SHIFT, S, exec, $hyprshot -m region --clipboard-only bind = $mainMod SHIFT CTRL, S, exec, $hyprshot -m window --clipboard-only bind = $mainMod SHIFT ALT, S, exec, $hyprshot -m output --clipboard-only bind = $mainMod SHIFT, B, exec, pkill fuzzel || bluetoothctl -- connect "$(bluetoothctl -- devices Paired | cut -f2- -d ' ' | uwsm-app -- fuzzel -d -l 8 | cut -f1 -d ' ')" bind = $mainMod SHIFT, A, exec, ~/scripts/select-audio-sink.sh # Move focus bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d bind = $mainMod, period, layoutmsg, move +col bind = $mainMod, comma, layoutmsg, move -col # Switch 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 bind = $mainMod, 0, workspace, 10 # Move active window to a 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 bind = $mainMod SHIFT, 0, movetoworkspace, 10 bind = $mainMod SHIFT CTRL, TAB, movecurrentworkspacetomonitor, +1 # Move/resize windows bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow # Laptop multimedia keys for volume and LCD brightness bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ && ~/scripts/volume-control.sh bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- && ~/scripts/volume-control.sh bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && ~/scripts/volume-control.sh bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+ bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%- # Requires playerctl bindl = , XF86AudioNext, exec, playerctl next bindl = , XF86AudioPause, exec, playerctl play-pause bindl = , XF86AudioPlay, exec, playerctl play-pause bindl = , XF86AudioPrev, exec, playerctl previous # Laptop lid bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "HDMI-A-1, 1920x1080@120, 0x0, 1" bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable" bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, 1920x1080@60, 0x0, 1.25" bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "HDMI-A-1, disable" ############################## ### WINDOWS AND WORKSPACES ### ############################## # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules # No border when only 1 window or window is fullscreen windowrule = match:workspace w[1], match:class negative:^(steam)$, match:title negative:Steam, border_size 0 windowrule = match:workspace f[1-2], border_size 0 windowrule { name = pavucontrol-float match:class = ^(org.pulseaudio.pavucontrol)$ match:title = ^(Volume Control)$ float = 1 center = 1 size = (0.35*monitor_w) (0.4*monitor_h) } windowrule { name = showmethekey-float match:class = ^(showmethekey-gtk)$ float = 1 border_size = 0 } windowrule { name = steam-popup-float match:class = ^(steam)$ match:title = negative:Steam float = 1 } windowrule { name = gaming match:class = ^(steam_app_\d+|cs2)$ workspace = 10 immediate = 1 fullscreen = 1 }