110 lines
4.2 KiB
Nix
110 lines
4.2 KiB
Nix
{ lib, pkgs, config, ... }:
|
|
|
|
with lib;
|
|
with lib.plusultra;
|
|
let
|
|
cfg = config.plusultra.desktop.addons.skhd;
|
|
|
|
mkScript = name: file: pkgs.writeShellApplication {
|
|
inherit name;
|
|
checkPhase = "";
|
|
text = builtins.readFile file;
|
|
};
|
|
|
|
open-iterm2 = mkScript "open-iterm2" ./scripts/open-iterm2.sh;
|
|
in
|
|
{
|
|
options.plusultra.desktop.addons.skhd = {
|
|
enable = mkEnableOption "skhd";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
services.skhd = {
|
|
enable = true;
|
|
|
|
skhdConfig = ''
|
|
# Movement
|
|
shift + cmd - h : yabai -m window --focus west
|
|
shift + cmd - j : yabai -m window --focus south
|
|
shift + cmd - k : yabai -m window --focus north
|
|
shift + cmd - l : yabai -m window --focus east
|
|
|
|
# Window Movement
|
|
lctrl + shift + cmd - h : yabai -m window --swap west
|
|
lctrl + shift + cmd - j : yabai -m window --swap south
|
|
lctrl + shift + cmd - k : yabai -m window --swap north
|
|
lctrl + shift + cmd - l : yabai -m window --swap east
|
|
|
|
# Window Resize
|
|
lctrl + cmd - h : yabai -m window --resize left:-50:0; \
|
|
yabai -m window --resize right:-50:0
|
|
lctrl + cmd - j : yabai -m window --resize bottom:0:50; \
|
|
yabai -m window --resize top:0:50
|
|
lctrl + cmd - k : yabai -m window --resize top:0:-50; \
|
|
yabai -m window --resize bottom:0:-50
|
|
lctrl + cmd - l : yabai -m window --resize right:50:0; \
|
|
yabai -m window --resize left:50:0
|
|
|
|
lctrl + alt - h : yabai -m window --resize left:-10:0; \
|
|
yabai -m window --resize right:-10:0
|
|
lctrl + alt - j : yabai -m window --resize bottom:0:10; \
|
|
yabai -m window --resize top:0:10
|
|
lctrl + alt - k : yabai -m window --resize top:0:-10; \
|
|
yabai -m window --resize bottom:0:-10
|
|
lctrl + alt - l : yabai -m window --resize right:10:0; \
|
|
yabai -m window --resize left:10:0
|
|
|
|
lctrl + cmd - e : yabai -m space --balance
|
|
|
|
# Move Window To Space
|
|
lctrl + shift + cmd - m : yabai -m window --space last; yabai -m space --focus last
|
|
lctrl + shift + cmd - p : yabai -m window --space prev; yabai -m space --focus prev
|
|
lctrl + shift + cmd - n : yabai -m window --space next; yabai -m space --focus next
|
|
lctrl + shift + cmd - 1 : yabai -m window --space 1; yabai -m space --focus 1
|
|
lctrl + shift + cmd - 2 : yabai -m window --space 2; yabai -m space --focus 2
|
|
lctrl + shift + cmd - 3 : yabai -m window --space 3; yabai -m space --focus 3
|
|
lctrl + shift + cmd - 4 : yabai -m window --space 4; yabai -m space --focus 4
|
|
|
|
# Focus Space
|
|
# shift + cmd - m : yabai -m space --focus last
|
|
# shift + cmd - p : yabai -m space --focus prev
|
|
# shift + cmd - n : yabai -m space --focus next
|
|
shift + cmd - 1 : yabai -m space --focus 1
|
|
shift + cmd - 2 : yabai -m space --focus 2
|
|
shift + cmd - 3 : yabai -m space --focus 3
|
|
shift + cmd - 4 : yabai -m space --focus 4
|
|
|
|
# Insert Direction
|
|
lctrl + shift + cmd - v : yabai -m window --insert south
|
|
lctrl + shift + cmd - b : yabai -m window --insert east
|
|
lctrl + shift + cmd - s : yabai -m window --insert stack
|
|
|
|
# Floating Windows
|
|
# shift + cmd - space : \
|
|
# yabai -m window --toggle float; \
|
|
# yabai -m window --toggle border
|
|
shift + cmd - space : yabai -m window --toggle float
|
|
|
|
# Terminal
|
|
shift + cmd - return : ${open-iterm2}/bin/open-iterm2
|
|
|
|
# Fullscreen
|
|
alt - f : yabai -m window --toggle zoom-fullscreen
|
|
shift + alt - f : yabai -m window --toggle native-fullscreen
|
|
|
|
# Restart Yabai
|
|
shift + lctrl + alt - r : \
|
|
/usr/bin/env osascript <<< \
|
|
"display notification \"Restarting Yabai\" with title \"Yabai\""; \
|
|
launchctl kickstart -k "gui/$UID/org.nixos.yabai"
|
|
|
|
# Restart Spacebar
|
|
shift + lctrl + alt - s : \
|
|
/usr/bin/env osascript <<< \
|
|
"display notification \"Restarting Spacebar\" with title \"Spacebar\""; \
|
|
launchctl kickstart -k "gui/$UID/org.nixos.spacebar"
|
|
'';
|
|
};
|
|
};
|
|
}
|