# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */  #
# Default Keybinds
# visit https://wiki.hyprland.org/Configuring/Binds/ for more info

$mainMod = SUPER
# Default
$scriptsDir = $HOME/.config/hypr/scripts
$configs = $HOME/.config/hypr/configs
# User
$UserConfigs = $HOME/.config/hypr/UserConfigs
$UserScripts = $HOME/.config/hypr/UserScripts

bind = CTRL ALT, Delete, exec, hyprctl dispatch exit 0
bind = $mainMod, Q, killactive,
bind = $mainMod, F, fullscreen
bind = $mainMod SHIFT, Q, closewindow, 
bind = $mainMod SHIFT, F, togglefloating,
bind = $mainMod ALT, F, exec, hyprctl dispatch workspaceopt allfloat
bind = CTRL ALT, L, exec, $scriptsDir/LockScreen.sh
bind = CTRL ALT, P, exec, $scriptsDir/Wlogout.sh

# FEATURES / EXTRAS
bind = $mainMod, H, exec, $scriptsDir/KeyHints.sh # Small help file
bind = $mainMod ALT, R, exec, $scriptsDir/Refresh.sh # Refresh waybar, swaync, rofi
bind = $mainMod ALT, E, exec, $scriptsDir/RofiEmoji.sh # emoji
bind = $mainMod SHIFT, B, exec, $scriptsDir/ChangeBlur.sh # Toggle blur settings 
bind = $mainMod SHIFT, G, exec, $scriptsDir/GameMode.sh # animations ON/OFF
bind = $mainMod ALT, K, exec, $scriptsDir/SwitchKeyboardLayout.sh # Switch Keyboard Layout
bind = $mainMod ALT, L, exec, $scriptsDir/ChangeLayout.sh # Toggle Master or Dwindle Layout
bind = $mainMod ALT, V, exec, $scriptsDir/ClipManager.sh # Clipboard Manager
bind = $mainMod SHIFT, N, exec, swaync-client -t -sw # swayNC panel

# FEATURES / EXTRAS (UserScripts)
bind = $mainMod, E, exec, $UserScripts/QuickEdit.sh # Quick Edit Hyprland Settings
bind = $mainMod SHIFT, M, exec, $UserScripts/RofiBeats.sh # online music
bind = $mainMod, W, exec, $UserScripts/WallpaperSelect.sh # Select wallpaper to apply
bind = CTRL ALT, W, exec, $UserScripts/WallpaperRandom.sh # Random wallpapers

# Waybar / Bar related
bind = $mainMod, B, exec, killall -SIGUSR1 waybar # Toggle hide/show waybar 
bind = $mainMod CTRL, B, exec, $scriptsDir/WaybarStyles.sh # Waybar Styles Menu
bind = $mainMod ALT, B, exec, $scriptsDir/WaybarLayout.sh # Waybar Layout Menu

# Master Layout
bind = $mainMod CTRL, D, layoutmsg, removemaster
bind = $mainMod, I, layoutmsg, addmaster
bind = $mainMod, J, layoutmsg, cyclenext
bind = $mainMod, K, layoutmsg, cycleprev
bind = $mainMod, M, exec, hyprctl dispatch splitratio 0.3
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod CTRL, Return, layoutmsg, swapwithmaster

# group
bind = $mainMod, G, togglegroup
bind = ALT, tab, changegroupactive  #change focus to another window  

# Special Keys / Hot Keys
bind = , xf86audioraisevolume, exec, $scriptsDir/Volume.sh --inc #volume up
bind = , xf86audiolowervolume, exec, $scriptsDir/Volume.sh --dec #volume down
bind = , xf86AudioMicMute, exec, $scriptsDir/Volume.sh --toggle-mic #mute mic
bind = , xf86audiomute, exec, $scriptsDir/Volume.sh --toggle
bind = , xf86Sleep, exec, systemctl suspend  # sleep button 
bind = , xf86Rfkill, exec, $scriptsDir/AirplaneMode.sh #Airplane mode

# media controls using keyboards
bind = , xf86AudioPlayPause, exec, $scriptsDir/MediaCtrl.sh --pause
bind = , xf86AudioPause, exec, $scriptsDir/MediaCtrl.sh --pause
bind = , xf86AudioPlay, exec, $scriptsDir/MediaCtrl.sh --pause
bind = , xf86AudioNext, exec, $scriptsDir/MediaCtrl.sh --nxt
bind = , xf86AudioPrev, exec, $scriptsDir/MediaCtrl.sh --prv
bind = , xf86audiostop, exec, $scriptsDir/MediaCtrl.sh --stop

# Screenshot keybindings NOTE: You may need to press Fn key as well
bind = $mainMod, Print, exec, $scriptsDir/ScreenShot.sh --now
bind = $mainMod SHIFT, Print, exec, $scriptsDir/ScreenShot.sh --area
bind = $mainMod CTRL, Print, exec, $scriptsDir/ScreenShot.sh --in5 #screenshot in 5 secs
bind = $mainMod ALT, Print, exec, $scriptsDir/ScreenShot.sh --in10 #screenshot in 10 secs
bind = ALT, Print, exec, $scriptsDir/ScreenShot.sh --active #screenshot in 10 secs

# screenshot with swappy (another screenshot tool)
bind = $mainMod SHIFT, S, exec, $scriptsDir/ScreenShot.sh --swappy

# Resize windows
binde = $mainMod SHIFT, left, resizeactive,-50 0
binde = $mainMod SHIFT, right, resizeactive,50 0
binde = $mainMod SHIFT, up, resizeactive,0 -50
binde = $mainMod SHIFT, down, resizeactive,0 50

# Move windows
bind = $mainMod CTRL, left, movewindow, l
bind = $mainMod CTRL, right, movewindow, r
bind = $mainMod CTRL, up, movewindow, u
bind = $mainMod CTRL, down, movewindow, d

# 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

# Workspaces related
bind = $mainMod, tab, workspace, m+1
bind = $mainMod SHIFT, tab, workspace, m-1

# Special workspace
bind = $mainMod SHIFT, U, movetoworkspace, special
bind = $mainMod, U, togglespecialworkspace,

# 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 and follow 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
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod SHIFT, bracketleft, movetoworkspace, -1 # brackets [ or ]
bind = $mainMod SHIFT, bracketright, movetoworkspace, +1

# Move active window to a workspace silently
bind = $mainMod CTRL, 1, movetoworkspacesilent, 1
bind = $mainMod CTRL, 2, movetoworkspacesilent, 2
bind = $mainMod CTRL, 3, movetoworkspacesilent, 3
bind = $mainMod CTRL, 4, movetoworkspacesilent, 4
bind = $mainMod CTRL, 5, movetoworkspacesilent, 5
bind = $mainMod CTRL, 6, movetoworkspacesilent, 6
bind = $mainMod CTRL, 7, movetoworkspacesilent, 7
bind = $mainMod CTRL, 8, movetoworkspacesilent, 8
bind = $mainMod CTRL, 9, movetoworkspacesilent, 9
bind = $mainMod CTRL, 0, movetoworkspacesilent, 10
bind = $mainMod CTRL, bracketleft, movetoworkspacesilent, -1 # brackets [ or ]
bind = $mainMod CTRL, bracketright, movetoworkspacesilent, +1

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bind = $mainMod, period, workspace, e+1
bind = $mainMod, comma, workspace, e-1

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