env = WLR_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1
env = WLR_NO_HARDWARE_CURSORS,1
env = TERMINAL,alacritty

$scripts = /home/user/.config/scripts

exec-once=hyprpaper
monitor=DP-2,preferred,0x550,1
monitor=DP-1,preferred,1920x0,1,bitdepth,10
monitor=HDMI-A-1,preferred,5760x550,1
exec-once=wl-paste --type text --watch cliphist store
exec-once=wl-paste --type image --watch cliphist store
exec-once=sleep 2 && hyprctl dispatch workspace 11
exec-once=/usr/lib/mate-polkit/polkit-mate-authentication-agent-1

workspace=DP-1,11
workspace=DP-2,21
workspace=HDMI-A-1,1

workspace=1,monitor:HDMI-A-1, default:true
workspace=2,monitor:HDMI-A-1
workspace=3,monitor:HDMI-A-1
workspace=4,monitor:HDMI-A-1
workspace=5,monitor:HDMI-A-1
workspace=6,monitor:HDMI-A-1
workspace=7,monitor:HDMI-A-1
workspace=8,monitor:HDMI-A-1
workspace=9,monitor:HDMI-A-1

workspace=11,monitor:DP-1, default:true
workspace=12,monitor:DP-1
workspace=13,monitor:DP-1
workspace=14,monitor:DP-1
workspace=15,monitor:DP-1
workspace=16,monitor:DP-1
workspace=17,monitor:DP-1
workspace=18,monitor:DP-1
workspace=19,monitor:DP-1

workspace=21,monitor:DP-2, default:true
workspace=22,monitor:DP-2
workspace=23,monitor:DP-2
workspace=24,monitor:DP-2
workspace=25,monitor:DP-2
workspace=26,monitor:DP-2
workspace=27,monitor:DP-2
workspace=28,monitor:DP-2
workspace=29,monitor:DP-2

windowrulev2 = tile, class:.*
windowrulev2 = float, title:^(rofi)(.*)$
windowrulev2 = center,title:^(rofi)(.*)$
windowrulev2 = noborder,title:^(rofi)(.*)$
windowrulev2 = stayfocused, title:^()$,class:^(steam)$
windowrulev2 = minsize 1 1, title:^()$,class:^(steam)$
windowrulev2 = stayfocused, title:^()$,class:^(steam)$
windowrule = noanim,waybar

exec-once=waybar

binds {
    scroll_event_delay=1
}

input {
    kb_layout = us
    follow_mouse = 1
    kb_options = compose:rctrl, caps:super, altwin:swap_alt_win
    numlock_by_default = true
}

general {
    gaps_in = 1
    gaps_out = 5
    border_size = 2
    col.active_border = rgba(002f5fee)
    col.inactive_border = rgba(ffffff00)
    layout = dwindle
}

xwayland {
  force_zero_scaling = true
}

misc {
    disable_hyprland_logo = 1
}

decoration {

    rounding = 1

    blur {
        enabled = false
    }
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05
    animation = windows, 1, 2, myBezier
    animation = windowsOut, 1, 2, default, popin 80%
    animation = border, 1, 2, default
    animation = borderangle, 1, 2, default
    animation = fade, 1, 2, default
    animation = workspaces, 1, 1, default
}

dwindle {
    preserve_split = yes
    # no_gaps_when_only = 1
    force_split = 2
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = on
    workspace_swipe_invert = false
}

$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bindr = $mainMod, SUPER_L, exec, pkill rofi || rofi -show drun
bindr = $mainMod, SUPER_R, exec, pkill rofi || rofi -show drun
bind = $mainMod, return, exec, $scripts/launch_alacritty.sh $(hyprctl activewindow -j | jq .pid)
bind = $mainMod SHIFT, return, exec, alacritty
bind = $mainMod, Q, killactive,
bind = $mainMod, A, exec, nautilus
bind = $mainMod, B, exec, MOZ_ENABLE_WAYLAND=1 firefox
bind = $mainMod, M, fullscreen, 1
bind = $mainMod, F11, fullscreen
bind = $mainMod, F, togglefloating,
bind = $mainMod, SPACE, togglesplit, # dwindle
bind = CONTROL_L ALT_L, L, exec, swaylock
bind = $mainMod, C, exec, cliphist list | awk '{print $0, "\0icon\x1fcom.github.davidmhewitt.clipped"}' | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy
bind = $mainMod, Y, exec, /home/user/.config/rofi/rofi-ykman.sh

bind = $mainMod, Escape, exec, rofi -show power-menu -modi power-menu:$scripts/rofi-power-menu

bind = ,XF86MonBrightnessUp, exec, xbacklight -inc 10
bind = ,XF86MonBrightnessDown, exec, xbacklight -dec 10
bind = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%+ --limit 1.0
bind = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-
bind = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bind = ,mouse_right, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+ --limit 1.0
bind = ,mouse_left, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-
bind = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bind = ,XF86AudioNext, exec, playerctl next
bind = ,XF86AudioPrev, exec, playerctl previous
bind = $mainMod,XF86AudioMute, exec, playerctl play-pause
bind = $mainMod,XF86AudioRaiseVolume, exec, playerctl next
bind = $mainMod,XF86AudioLowerVolume, exec, playerctl previous
bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy

# Move focus with mainMod + arrow keys
bind = $mainMod, H, exec, $scripts/vim-hypr-nav.sh l
bind = $mainMod, L, exec, $scripts/vim-hypr-nav.sh r
bind = $mainMod, K, exec, $scripts/vim-hypr-nav.sh u
bind = $mainMod, J, exec, $scripts/vim-hypr-nav.sh d
bind = $mainMod CONTROL_L, H, swapwindow, l
bind = $mainMod CONTROL_L, L, swapwindow, r
bind = $mainMod CONTROL_L, K, swapwindow, u
bind = $mainMod CONTROL_L, J, swapwindow, d
bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, L, movewindow, r
bind = $mainMod SHIFT, K, movewindow, u
bind = $mainMod SHIFT, J, movewindow, d
binde = $mainMod ALT, L, resizeactive, 20 0
binde = $mainMod ALT, H, resizeactive, -20 0
binde = $mainMod ALT, K, resizeactive, 0 -20
binde = $mainMod ALT, J, resizeactive, 0 20

bind = $mainMod, 1, exec, hyprsome workspace 1
bind = $mainMod, 2, exec, hyprsome workspace 2
bind = $mainMod, 3, exec, hyprsome workspace 3
bind = $mainMod, 4, exec, hyprsome workspace 4
bind = $mainMod, 5, exec, hyprsome workspace 5
bind = $mainMod, 6, exec, hyprsome workspace 6
bind = $mainMod, 7, exec, hyprsome workspace 7
bind = $mainMod, 8, exec, hyprsome workspace 8
bind = $mainMod, 9, exec, hyprsome workspace 9

bind = $mainMod SHIFT, 1, exec, hyprsome movefocus 1
bind = $mainMod SHIFT, 2, exec, hyprsome movefocus 2
bind = $mainMod SHIFT, 3, exec, hyprsome movefocus 3
bind = $mainMod SHIFT, 4, exec, hyprsome movefocus 4
bind = $mainMod SHIFT, 5, exec, hyprsome movefocus 5
bind = $mainMod SHIFT, 6, exec, hyprsome movefocus 6
bind = $mainMod SHIFT, 7, exec, hyprsome movefocus 7
bind = $mainMod SHIFT, 8, exec, hyprsome movefocus 8
bind = $mainMod SHIFT, 9, exec, hyprsome movefocus 9

bind = $mainMod SHIFT, T, exec, hyprsome move-empty
bind = $mainMod, T, exec, hyprsome focus-empty

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, TAB, workspace, m+1
bind = $mainMod SHIFT, TAB, workspace, m-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow