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"
|
||
|
'';
|
||
|
};
|
||
|
};
|
||
|
}
|