297 lines
10 KiB
Nix
297 lines
10 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
wayland.windowManager.hyprland.settings = {
|
|
exec = [
|
|
"hyprctl dispatch submap global"
|
|
];
|
|
|
|
submap = [
|
|
"global"
|
|
];
|
|
|
|
# Shell keybinds
|
|
bindi = [
|
|
"$mod, Super_L, global, caelestia:launcher" # bind to `bind` because `bindi` maps to it
|
|
# Launcher
|
|
];
|
|
bindin =
|
|
[
|
|
"$mod, catchall, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse:272, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse:273, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse:274, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse:275, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse:276, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse:277, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse_up, global, caelestia:launcherInterrupt"
|
|
"$mod, mouse_down, global, caelestia:launcherInterrupt"
|
|
|
|
"$mod, K, global, caelestia:launcherInterrupt"
|
|
"$mod, H, global, caelestia:launcherInterrupt"
|
|
"$mod, J, global, caelestia:launcherInterrupt"
|
|
"$mod, L, global, caelestia:launcherInterrupt"
|
|
|
|
"$mod, S, global, caelestia:launcherInterrupt"
|
|
"$mod, G, global, caelestia:launcherInterrupt"
|
|
"$mod, T, global, caelestia:launcherInterrupt"
|
|
"$mod, D, global, caelestia:launcherInterrupt"
|
|
"$mod, Escape, global, caelestia:launcherInterrupt"
|
|
"$mod, PERIOD, global, caelestia:launcherInterrupt"
|
|
"$mod, E, global, caelestia:launcherInterrupt"
|
|
|
|
"$mod, W, global, caelestia:launcherInterrupt"
|
|
"$mod, Q, global, caelestia:launcherInterrupt"
|
|
"$mod, C, global, caelestia:launcherInterrupt"
|
|
"$mod, Return, global, caelestia:launcherInterrupt"
|
|
]
|
|
++ (
|
|
# Go to workspace group #
|
|
builtins.concatLists (builtins.genList (
|
|
i: let
|
|
ws = i + 1;
|
|
in [
|
|
"$mod, ${toString ws}, global, caelestia:launcherInterrupt"
|
|
]
|
|
)
|
|
9)
|
|
)
|
|
++ [
|
|
"$mod, 0, global, caelestia:launcherInterrupt"
|
|
];
|
|
bind =
|
|
[
|
|
# Misc
|
|
"Control+Alt, Delete, exec, caelestia:session"
|
|
"$mod ALT, A, global, caelestia:showall"
|
|
"$mod ALT, L, global, caelestia:lock"
|
|
|
|
# Restore lock - these are `bindl` in your original, but `exec` should be fine here.
|
|
# However, `bindl` is typically for a *release* event. If `caelestia shell -d` is a daemon,
|
|
# and `caelestia:lock` is a quickshell internal, you might need to reconsider.
|
|
# For direct translation, they go into `bindl` list.
|
|
|
|
# Media - handled by bindl below
|
|
|
|
# Apps
|
|
"$mod, Return, exec, app2unit -- kitty"
|
|
"$mod, W, exec, app2unit -- firefox"
|
|
"$mod, E, exec, app2unit -- thunar"
|
|
"$mod, Q, killactive"
|
|
"$mod ALT, E, exec, app2unit -- nemo"
|
|
"Control+Alt, Escape, exec, app2unit -- qps"
|
|
"Control+Alt, V, exec, app2unit -- pavucontrol"
|
|
|
|
# Utilities
|
|
"$mod SHIFT, S, global, caelestia:screenshotFreeze"
|
|
"$mod SHIFT ALT, S, global, caelestia:screenshot"
|
|
"$mod ALT, R, exec, caelestia record -s"
|
|
"Control+Alt, R, exec, caelestia record"
|
|
"$mod SHIFT ALT, R, exec, caelestia record -r"
|
|
"$mod SHIFT, C, exec, hyprpicker -a" # Colour picker
|
|
|
|
# Sleep
|
|
"$mod SHIFT, PRINT, exec, systemctl suspend-then-hibernate"
|
|
|
|
# Clipboard and emoji picker
|
|
"$mod, V, exec, pkill fuzzel || caelestia clipboard"
|
|
"$mod ALT, V, exec, pkill fuzzel || caelestia clipboard -d"
|
|
"$mod, Period, exec, pkill fuzzel || caelestia emoji -p"
|
|
|
|
# Testing
|
|
# This is a `bindl` (key release), so move it to `bindl` list below.
|
|
|
|
# Window actions
|
|
"$mod, H, movefocus, l"
|
|
"$mod, L, movefocus, r"
|
|
"$mod, K, movefocus, u"
|
|
"$mod, J, movefocus, d"
|
|
"$mod SHIFT, H, movewindow, l"
|
|
"$mod SHIFT, L, movewindow, r"
|
|
"$mod SHIFT, K, movewindow, u"
|
|
"$mod SHIFT, J, movewindow, d"
|
|
"$mod CTRL, Backslash, centerwindow, 1"
|
|
"$mod CTRL ALT, Backslash, resizeactive, exact 55% 70%"
|
|
"$mod CTRL ALT, Backslash, centerwindow, 1"
|
|
"$mod ALT, Backslash, exec, caelestia pip"
|
|
"$mod, P, pin"
|
|
"$mod, F, fullscreen, 0"
|
|
"$mod ALT, F, fullscreen, 1"
|
|
|
|
# Special workspace toggles
|
|
"Control+Shift, Escape, exec, caelestia toggle sysmon"
|
|
"$mod, Escape, exec, caelestia toggle sysmon"
|
|
"$mod, M, exec, caelestia toggle music"
|
|
"$mod, D, exec, caelestia toggle communication"
|
|
"$mod, R, exec, caelestia toggle todo"
|
|
|
|
"$mod, G, togglespecialworkspace, gaming"
|
|
"$mod SHIFT, G, movetoworkspace, special:gaming"
|
|
|
|
"$mod, T, exec, caelestia toggle steam"
|
|
|
|
# "$mod, T, togglespecialworkspace, special:steam"
|
|
# "$mod SHIFT, T, movetoworkspace, special:steam"
|
|
|
|
# Toggle special workspace
|
|
"$mod, S, exec, caelestia toggle specialws"
|
|
|
|
# Window groups
|
|
"$mod, Comma, togglegroup"
|
|
"$mod SHIFT, Comma, lockactivegroup, toggle"
|
|
|
|
# Go to workspace -1/+1 (mouse binds are `bind` for mouse-wheel)
|
|
"$mod, mouse_down, workspace, -1"
|
|
"$mod, mouse_up, workspace, +1"
|
|
|
|
# Move window to workspace -1/+1
|
|
"$mod ALT, mouse_down, movetoworkspace, -1"
|
|
"$mod ALT, mouse_up, movetoworkspace, +1"
|
|
|
|
# Move window to/from special workspace
|
|
"$mod CTRL SHIFT, up, movetoworkspace, special:special"
|
|
"$mod CTRL SHIFT, down, movetoworkspace, e+0"
|
|
"$mod ALT, S, movetoworkspace, special:special"
|
|
]
|
|
++ (
|
|
# Go to workspace #
|
|
let
|
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
in
|
|
builtins.concatLists (builtins.genList (
|
|
i: let
|
|
ws = i + 1;
|
|
in [
|
|
"$mod, ${toString ws}, exec, ${wsaction} workspace ${toString ws}"
|
|
]
|
|
)
|
|
9) # For workspaces 1-9
|
|
)
|
|
++ [
|
|
# "$mod, 0, exec, ${config.wayland.windowManager.hyprland.settings.workspaceRule."0".exec} workspace 10" # Workaround for workspace 0
|
|
# Re-adding `wsaction` since it's used here.
|
|
"$mod, 0, exec, ~/.config/hypr/scripts/wsaction.fish workspace 10"
|
|
]
|
|
++ (
|
|
# Go to workspace group #
|
|
let
|
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
in
|
|
builtins.concatLists (builtins.genList (
|
|
i: let
|
|
ws = i + 1;
|
|
in [
|
|
"Control+$mod, ${toString ws}, exec, ${wsaction} -g workspace ${toString ws}"
|
|
]
|
|
)
|
|
9)
|
|
)
|
|
++ [
|
|
"Control+$mod, 0, exec, ~/.config/hypr/scripts/wsaction.fish -g workspace 10"
|
|
]
|
|
++ (
|
|
# Move window to workspace #
|
|
let
|
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
in
|
|
builtins.concatLists (builtins.genList (
|
|
i: let
|
|
ws = i + 1;
|
|
in [
|
|
"$mod SHIFT, ${toString ws}, exec, ${wsaction} movetoworkspace ${toString ws}"
|
|
]
|
|
)
|
|
9)
|
|
)
|
|
++ [
|
|
"$mod SHIFT, 0, exec, ~/.config/hypr/scripts/wsaction.fish movetoworkspace 10"
|
|
]
|
|
++ (
|
|
# Move window to workspace group #
|
|
let
|
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
in
|
|
builtins.concatLists (builtins.genList (
|
|
i: let
|
|
ws = i + 1;
|
|
in [
|
|
"Control+$mod ALT, ${toString ws}, exec, ${wsaction} -g movetoworkspace ${toString ws}"
|
|
]
|
|
)
|
|
9)
|
|
)
|
|
++ [
|
|
"Control+$mod ALT, 0, exec, ~/.config/hypr/scripts/wsaction.fish -g movetoworkspace 10"
|
|
];
|
|
|
|
binde = [
|
|
"$mod, Minus, splitratio, -0.1"
|
|
"$mod, Equal, splitratio, 0.1"
|
|
"Control+$mod, left, workspace, -1"
|
|
"$mod, Page_Up, workspace, -1"
|
|
"Control+$mod, right, workspace, +1"
|
|
"$mod, Page_Down, workspace, +1"
|
|
"$mod ALT, Page_Up, movetoworkspace, -1"
|
|
"$mod ALT, Page_Down, movetoworkspace, +1"
|
|
"Control+$mod SHIFT, right, movetoworkspace, +1"
|
|
"Control+$mod SHIFT, left, movetoworkspace, -1"
|
|
"Alt, Tab, cyclenext, activewindow" # `binde` for cycle next
|
|
"Control+Alt, Tab, changegroupactive, f" # `binde` for change group active
|
|
];
|
|
|
|
bindm = [
|
|
"$mod, mouse:272, movewindow"
|
|
"$mod, Z, movewindow"
|
|
"$mod, mouse:273, resizewindow"
|
|
"$mod, X, resizewindow"
|
|
];
|
|
|
|
bindl = [
|
|
# Restore lock
|
|
"$mod ALT, L, exec, caelestia shell -d"
|
|
"$mod ALT, L, global, caelestia:lock" # This is a Hyprland `global` command, not an `exec`
|
|
|
|
# Brightness
|
|
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
|
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
|
|
|
# Media
|
|
"Control+$mod, Space, global, caelestia:mediaToggle"
|
|
", XF86AudioPlay, global, caelestia:mediaToggle"
|
|
", XF86AudioPause, global, caelestia:mediaToggle"
|
|
"Control+$mod, Equal, global, caelestia:mediaNext"
|
|
", XF86AudioNext, global, caelestia:mediaNext"
|
|
"Control+$mod, Minus, global, caelestia:mediaPrev"
|
|
", XF86AudioPrev, global, caelestia:mediaPrev"
|
|
", XF86AudioStop, global, caelestia:mediaStop"
|
|
|
|
# Utilities (screenshot is `bindl` in your original)
|
|
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
|
|
|
|
# Volume
|
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
"$mod SHIFT, M, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
|
|
# Clipboard and emoji picker (alternate paste is `bindl`)
|
|
"Control+Shift+Alt, V, exec, sleep 0.5s && ydotool type -d 1 \"$(cliphist list | head -1 | cliphist decode)\""
|
|
|
|
# Testing
|
|
"$mod ALT, f12, exec, notify-send -u low -i dialog-information-symbolic 'Test notification' \"Here's a really long message to test truncation and wrapping\\nYou can middle click or flick this notification to dismiss it!\" -a 'Shell' -A \"Test1=I got it!\" -A \"Test2=Another action\""
|
|
];
|
|
|
|
bindel = [
|
|
# Volume
|
|
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%+"
|
|
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-"
|
|
];
|
|
|
|
bindr = [
|
|
# Kill/restart
|
|
"Control+$mod SHIFT, R, exec, qs -c caelestia kill"
|
|
"Control+$mod ALT, R, exec, qs -c caelestia kill; caelestia shell -d"
|
|
];
|
|
};
|
|
}
|