# Keybinds configuration file

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, BACKSPACE, killactive,
bind = $mainMod CTRL ALT, BACKSPACE, exec, uwsm stop
bind = $mainMod CTRL, BACKSPACE, exec, /usr/bin/hyprlock
#bind = $mainMod, PAUSE, killactive,
bind = $mainMod, Y, togglefloating,
bind = $mainMod SHIFT, Y, workspaceopt, allfloat
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod SHIFT, P, pin
bind = $mainMod SHIFT, P, workspaceopt, allpseudo
bind = $mainMod, O, togglesplit, # dwindle
bind = $mainMod, E, fullscreen, 1
bind = $mainMod SHIFT, E, fullscreen, 0
# bind = $mainMod CTRL, E, fakefullscreen
bind = $mainMod SHIFT, PERIOD, pin
binde = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
binde = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
binde = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
binde = , XF86MonBrightnessUp, exec, brightnessctl set '12.75+'
binde = , XF86MonBrightnessDown, exec, brightnessctl set '12.75-'
binde = , XF86AudioPlay, exec, playerctl play-pause
binde = , XF86AudioNext, exec, playerctl next
binde = , XF86AudioPrev, exec, playerctl previous

#bind = $mainMod ALT, SPACE, exec, hyprctl switchxkblayout

# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d

bind = $mainMod, H, movefocus, l
bind = $mainMod, J, movefocus, d
bind = $mainMod, K, movefocus, u
bind = $mainMod, L, movefocus, r


bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d

bind = $mainMod SHIFT, H, movewindow, l
bind = $mainMod SHIFT, J, movetoworkspace, r+1
bind = $mainMod SHIFT, K, movetoworkspace, r-1
bind = $mainMod SHIFT, L, movewindow, r


# Resize commands
binde = $mainMod CTRL SHIFT, left, resizeactive, -1 0
binde = $mainMod CTRL SHIFT, right, resizeactive, 1 0
binde = $mainMod CTRL SHIFT, up, resizeactive, 0 -1
binde = $mainMod CTRL SHIFT, down, resizeactive, 0 1
binde = $mainMod CTRL SHIFT, H, resizeactive, -32 0
binde = $mainMod CTRL SHIFT, J, resizeactive, 0 32
binde = $mainMod CTRL SHIFT, K, resizeactive, 0 -32
binde = $mainMod CTRL SHIFT, L, resizeactive, 32 0

# Switch workspaces with mainMod + CTRL + [0-9]
bind = $mainMod CTRL, 1, workspace, 1
bind = $mainMod CTRL, 2, workspace, 2
bind = $mainMod CTRL, 3, workspace, 3
bind = $mainMod CTRL, 4, workspace, 4
bind = $mainMod CTRL, 5, workspace, 5
bind = $mainMod CTRL, 6, workspace, 6
bind = $mainMod CTRL, 7, workspace, 7
bind = $mainMod CTRL, 8, workspace, 8
bind = $mainMod CTRL, 9, workspace, 9
bind = $mainMod CTRL, 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

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod CTRL, mouse_down, workspace, r-1
bind = $mainMod CTRL, mouse_up, workspace, r+1

bind = $mainMod SHIFT, mouse_down, movetoworkspace, r-1
bind = $mainMod SHIFT, mouse_up, movetoworkspace, r+1

bind = $mainMod CTRL, K, workspace, r-1
bind = $mainMod CTRL, J, workspace, r+1

bind = $mainMod CTRL, up, workspace, r-1
bind = $mainMod CTRL, down, workspace, r+1

# Special workspace "junkyard"
bind = $mainMod, mouse:274, movetoworkspacesilent, special
bind = $mainMod, C, movetoworkspacesilent, special
bind = $mainMod SHIFT, mouse:274, movetoworkspace, special
bind = $mainMod SHIFT, C, movetoworkspace, special
bind = $mainMod, TAB, togglespecialworkspace
bind = $mainMod CTRL, END, workspace, empty
bind = $mainMod SHIFT, END, movetoworkspace, empty
bind = $mainMod CTRL, HOME, workspace, 1
bind = $mainMod SHIFT, HOME, movetoworkspace, 1

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

# Applications
bind = $mainMod, F, exec, uwsm app nautilus
bind = $mainMod, T, exec, uwsm app kitty
bind = $mainMod, W, exec, uwsm app io.gitlab.librewolf-community.desktop

# Tools (launcher/etc)
bind = $mainMod, SPACE, exec, ~/.config/rofi/launchers/type-1/launcher.sh
bind = $mainMod SHIFT, V, exec, cliphist list | rofi -theme ~/.config/rofi/launchers/type-1/style-5.rasi -dmenu | cliphist decode | wl-copy
bind = $mainMod SHIFT CTRL, V, exec, cliphist list | rofi -theme ~/.config/rofi/launchers/type-1/style-5.rasi -dmenu | cliphist delete
bind = $mainMod, minus, exec, rofi -theme ~/.config/rofi/launchers/type-1/style-5.rasi -show calc -modi calc -no-show-match -no-sort -no-persist-history -calc-command "echo -n '{result}' | wl-copy"
bind = $mainMod, B, exec, pkill waybar || uwsm app waybar
bind = $mainMod SHIFT, ESCAPE, exec, uwsm app plasma-systemmonitor # TODO add my own monitor
bind = $mainMod, N, exec, swaync-client -t -sw

bind = $mainMod SHIFT, S, exec, sh -c "slurp | grim -g - - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshots/$(date +'%Y-%m-%d-%H%M%S_grim.png')"
bind = $mainMod SHIFT CTRL, S, exec, sh -c "grim - | wl-copy && wl-paste > $(xdg-user-dir PICTURES)/screenshots/$(date +'%Y-%m-%d-%H%M%S_grim.png')"
bind = $mainMod CTRL, C, exec, sh -c "hyprpicker | wl-copy"

bind = $mainMod, PERIOD, exec, rofi -theme ~/.config/rofi/launchers/type-3/style-5.rasi -modi emoji -show emoji
