Files
LillyOS/home/desktop/hyprland/keybinds.nix

163 lines
6.4 KiB
Nix

{ lib, nixosConfig, ... }:
let
cfg = nixosConfig.my.desktop;
in
{
wayland.windowManager.hyprland = lib.mkIf (cfg.enable && cfg.hyprland.enable) {
settings = {
"$mod" = "SUPER";
bind = [
"$mod, space, exec, dms ipc call spotlight toggle"
"alt, space, exec, dms ipc call spotlight toggle"
"$mod, Super_L, exec, dms ipc call spotlight toggle"
# Color Picker
"$mod+Shift, C, exec, hyprpicker -a" # Pick color (Hex) >> clipboard
# Screenshots
"Super+Shift, S, exec, hyprshot --freeze --mode region --silent --clipboard-only"
"CTRL+Shift, 4, exec, bash /home/lilly/Scripts/zipline-region.sh"
"CTRL+Shift, 3, exec, /home/lilly/Scripts/zipline-monitor.sh"
"CTRL+Shift, 2, exec, /home/lilly/Scripts/zipline-window.sh"
#bindln = Ctrl,Print,exec,grim - | wl-copy Screenshot >> clipboard & file (clipboard)
#!
##! Window
#/# bind = $mod, ←/↑/→/↓,, # Focus in direction
"$mod, Left, movefocus, l"
"$mod, Right, movefocus, r"
"$mod, Up, movefocus, u"
"$mod, Down, movefocus, d"
"$mod, BracketLeft, movefocus, l"
"$mod, BracketRight, movefocus, r"
#/# bind = $mod+Shift, ←/↑/→/↓,, # Move in direction
"$mod+Shift, Left, movewindow, l"
"$mod+Shift, Right, movewindow, r"
"$mod+Shift, Up, movewindow, u"
"$mod+Shift, Down, movewindow, d"
"Alt, F4, killactive, Close (Windows)"
"$mod, Q, killactive," # Close
"$mod+Shift+Alt, Q, exec, hyprctl kill" # Forcefully zap a window
# Window split ratio
#/# binde = Super, ;/',, # Adjust split ratio
# Positioning mode
"Super+Alt, Space, togglefloating," # Float/Tile
"Super, D, fullscreen, 1" # Maximize
"Super, F, fullscreen, 0" # Fullscreen
"Super+Alt, F, fullscreenstate, 0 3" # Fullscreen spoof
"Super, P, pin" # Pin
#/# bind = Super+Alt, Hash,, # Send to workspace # (1, 2, 3,...)
# We use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev`
"Super+Alt, code:10, movetoworkspacesilent, 1"
"Super+Alt, code:11, movetoworkspacesilent, 2"
"Super+Alt, code:12, movetoworkspacesilent, 3"
"Super+Alt, code:13, movetoworkspacesilent, 4"
"Super+Alt, code:14, movetoworkspacesilent, 5"
"Super+Alt, code:15, movetoworkspacesilent, 6"
"Super+Alt, code:16, movetoworkspacesilent, 7"
"Super+Alt, code:17, movetoworkspacesilent, 8"
"Super+Alt, code:18, movetoworkspacesilent, 9"
"Super+Alt, code:19, movetoworkspacesilent, 10"
# #/# bind = Super+Shift, Scroll ↑/↓,, # Send to workspace left/right
"Super+Shift, mouse_down, movetoworkspace, r-1"
"Super+Shift, mouse_up, movetoworkspace, r+1"
"Super+Alt, mouse_down, movetoworkspace, -1"
"Super+Alt, mouse_up, movetoworkspace, +1"
#/# bind = Super+Shift, Page_↑/↓,, # Send to workspace left/right
"Super+Alt, Page_Down, movetoworkspace, +1"
"Super+Alt, Page_Up, movetoworkspace, -1"
"Super+Shift, Page_Down, movetoworkspace, r+1 "
"Super+Shift, Page_Up, movetoworkspace, r-1"
"Ctrl+Super+Shift, Right, movetoworkspace, r+1"
"Ctrl+Super+Shift, Left, movetoworkspace, r-1"
"Super+Alt, S, movetoworkspacesilent, special" # Send to scratchpad
"Ctrl+Super, S, togglespecialworkspace,"
##! Workspace
# Switching
#/# bind = Super, Hash,, # Focus workspace # (1, 2, 3,...)
# We use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev`
"Super, code:10, workspace, 1"
"Super, code:11, workspace, 2"
"Super, code:12, workspace, 3"
"Super, code:13, workspace, 4"
"Super, code:14, workspace, 5"
"Super, code:15, workspace, 6"
"Super, code:16, workspace, 7"
"Super, code:17, workspace, 8"
"Super, code:18, workspace, 9"
"Super, code:19, workspace, 10"
#/# bind = Ctrl+Super, ←/→,, # Focus left/right
"Ctrl+Super, Right, workspace, r+1"
"Ctrl+Super, Left, workspace, r-1"
#/# bind = Ctrl+Super+Alt, ←/→,, Focus busy left/right
"Ctrl+Super+Alt, Right, workspace, m+1"
"Ctrl+Super+Alt, Left, workspace, m-1"
#/# bind = Super, Page_↑/↓,, # Focus left/right
"Super, Page_Down, workspace, +1"
"Super, Page_Up, workspace, -1"
"Ctrl+Super, Page_Down, workspace, r+1"
"Ctrl+Super, Page_Up, workspace, r-1"
#/# bind = Super, Scroll ↑/↓,, # Focus left/right
"Super, mouse_up, workspace, +1"
"Super, mouse_down, workspace, -1"
"Ctrl+Super, mouse_up, workspace, r+1"
"Ctrl+Super, mouse_down, workspace, r-1"
## Special
"Ctrl+Super, BracketLeft, workspace, -1"
"Ctrl+Super, BracketRight, workspace, +1"
"Ctrl+Super, Up, workspace, r-5"
"Ctrl+Super, Down, workspace, r+5"
##! Apps
"Super, Return, exec, kitty"
"Ctrl+Alt, T, exec, kitty"
"Ctrl+Super, V, exec, pwvucontrol"
"Ctrl+Shift, Escape, exec, \"command -v btop && kitty fish -c btop\"" # Task manager"
# Cursed stuff
## Make window not amogus large
"Ctrl+Super, Backslash, resizeactive, exact 640 480"
];
bindle = [
# Volume / Brightness control
",XF86MonBrightnessUp, exec, qs -c $qsConfig ipc call brightness increment || brightnessctl s 5%+"
",XF86MonBrightnessDown, exec, qs -c $qsConfig ipc call brightness decrement || brightnessctl s 5%-"
",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ -l 1.5"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%- -l 1.5"
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle"
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:274, movewindow"
"$mod, mouse:273, resizewindow"
];
binde = [
"Super, Semicolon, splitratio, -0.1"
"Super, Apostrophe, splitratio, +0.1"
];
binds = {
scroll_event_delay = 0;
hide_special_on_workspace_change = true;
};
cursor = {
zoom_factor = 1;
zoom_rigid = false;
hotspot_padding = 1;
};
};
};
}