config/modules/macos/tiling/aerospace.nix

169 lines
5.4 KiB
Nix
Raw Permalink Normal View History

{
config,
pkgs,
...
2025-05-12 15:19:01 -07:00
}:
{
2025-05-01 12:41:47 -07:00
services.aerospace = {
2025-05-07 10:22:05 -07:00
enable = config.shared.darwin.tiling.enable;
2025-05-01 12:41:47 -07:00
settings = {
# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization
enable-normalization-flatten-containers = true;
enable-normalization-opposite-orientation-for-nested-containers = true;
# See: https://nikitabobko.github.io/AeroSpace/guide#layouts
# The 'accordion-padding' specifies the size of accordion padding
# You can set 0 to disable the padding feature
accordion-padding = 0;
# Possible values: tiles|accordion
default-root-container-layout = "tiles";
# Possible values: horizontal|vertical|auto
# "auto" means: wide monitor (anything wider than high) gets horizontal orientation,
# tall monitor (anything higher than wide) gets vertical orientation
default-root-container-orientation = "auto";
key-mapping.preset = "qwerty";
gaps = {
inner = {
horizontal = 0;
vertical = 0;
};
outer = {
left = 0;
bottom = 0;
2025-05-03 21:41:46 -07:00
top = 40;
2025-05-01 12:41:47 -07:00
right = 0;
};
};
# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag
# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key
# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app
automatically-unhide-macos-hidden-apps = true;
mode.main.binding = {
# See: https://nikitabobko.github.io/AeroSpace/commands#layout
alt-slash = "layout tiles horizontal vertical";
alt-comma = "layout accordion horizontal vertical";
# See: https://nikitabobko.github.io/AeroSpace/commands#focus
alt-h = "focus left";
alt-j = "focus down";
alt-k = "focus up";
alt-l = "focus right";
# See: https://nikitabobko.github.io/AeroSpace/commands#move
alt-shift-h = "move left";
alt-shift-j = "move down";
alt-shift-k = "move up";
alt-shift-l = "move right";
# See: https://nikitabobko.github.io/AeroSpace/commands#resize
alt-minus = "resize smart -50";
alt-equal = "resize smart +50";
# See: https://nikitabobko.github.io/AeroSpace/commands#workspace
alt-1 = "workspace 1";
alt-2 = "workspace 2";
alt-3 = "workspace 3";
alt-4 = "workspace 4";
alt-5 = "workspace 5";
alt-6 = "workspace 6";
alt-7 = "workspace 7";
alt-8 = "workspace 8";
alt-9 = "workspace 9";
2025-05-01 12:41:47 -07:00
# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace
alt-shift-1 = "move-node-to-workspace 1";
alt-shift-2 = "move-node-to-workspace 2";
alt-shift-3 = "move-node-to-workspace 3";
alt-shift-4 = "move-node-to-workspace 4";
alt-shift-5 = "move-node-to-workspace 5";
alt-shift-6 = "move-node-to-workspace 6";
alt-shift-7 = "move-node-to-workspace 7";
alt-shift-8 = "move-node-to-workspace 8";
alt-shift-9 = "move-node-to-workspace 9";
2025-05-01 12:41:47 -07:00
2025-05-12 15:19:01 -07:00
cmd-h = [ ]; # Disable "hide application"
cmd-alt-h = [ ]; # Disable "hide others"
2025-05-03 10:37:41 -07:00
# # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth
# alt-tab = "workspace-back-and-forth";
# # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor
# alt-shift-tab = "move-workspace-to-monitor --wrap-around next";
2025-05-01 12:41:47 -07:00
# See: https://nikitabobko.github.io/AeroSpace/commands#mode
alt-shift-semicolon = "mode service";
};
mode.service.binding = {
2025-05-12 15:19:01 -07:00
esc = [
"reload-config"
"mode main"
];
r = [
"flatten-workspace-tree"
"mode main"
]; # reset layout
f = [
"layout floating tiling"
"mode main"
]; # Toggle between floating and tiling layout
backspace = [
"close-all-windows-but-current"
"mode main"
];
2025-05-01 12:41:47 -07:00
# sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
#s = ["layout sticky tiling", "mode main"]
2025-05-12 15:19:01 -07:00
alt-shift-h = [
"join-with left"
"mode main"
];
alt-shift-j = [
"join-with down"
"mode main"
];
alt-shift-k = [
"join-with up"
"mode main"
];
alt-shift-l = [
"join-with right"
"mode main"
];
2025-05-01 12:41:47 -07:00
down = "volume down";
up = "volume up";
2025-05-12 15:19:01 -07:00
shift-down = [
"volume set 0"
"mode main"
];
2025-05-01 12:41:47 -07:00
};
2025-05-07 08:20:01 -07:00
after-startup-command = [
"exec-and-forget sketchybar"
2025-05-07 23:24:08 -07:00
"exec-and-forget open /Applications/SwipeAeroSpace.app"
2025-05-07 08:20:01 -07:00
];
2025-05-01 12:41:47 -07:00
exec-on-workspace-change = [
"/bin/bash"
"-c"
"/run/current-system/sw/bin/sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE"
];
on-window-detected = [
#Ghostty currently renders tabs as individual processes
#Fix comes from https://ghostty.org/docs/help/macos-tiling-wms
{
"if" = {
app-id = "com.mitchellh.ghostty";
};
2025-05-12 15:19:01 -07:00
run = [ "layout floating" ];
check-further-callbacks = true;
}
];
2025-05-01 12:41:47 -07:00
};
};
}