diff --git a/flake.nix b/flake.nix index 105e1fe..6c080fd 100644 --- a/flake.nix +++ b/flake.nix @@ -94,6 +94,7 @@ ./modules/games/darwin.nix ./modules/applications/darwin.nix ./modules/desktop/de/darwin.nix + ./modules/desktop/de/aerospace.nix ./modules/hardware/darwin.nix ./modules/nix/darwin.nix ./modules/network/vpn/tailscale-darwin.nix diff --git a/modules/desktop/de/aerospace.nix b/modules/desktop/de/aerospace.nix new file mode 100644 index 0000000..d6be80c --- /dev/null +++ b/modules/desktop/de/aerospace.nix @@ -0,0 +1,9 @@ +{ config, ... }: + +{ + services.aerospace.enable = true; + services.aerospace.settings = ( builtins.fromTOML ( builtins.readFile ../../../stow/.config/aerospace/aerospace.toml )); + homebrew.brews = [ + "FelixKratz/formulae/borders" + ]; +} diff --git a/stow/.config/aerospace/aerospace.toml b/stow/.config/aerospace/aerospace.toml new file mode 100644 index 0000000..029c65d --- /dev/null +++ b/stow/.config/aerospace/aerospace.toml @@ -0,0 +1,155 @@ +# You can use it to add commands that run after AeroSpace startup. +# Available commands : https://nikitabobko.github.io/AeroSpace/commands +after-startup-command = [ + 'exec-and-forget borders active_color=0xfff74f9e inactive_color=0xffffa8f1 width=6.0' +] + +# Start AeroSpace at login - breaks nix darwin +start-at-login = false + +# 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 = 30 + +# 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' + +# Mouse follows focus when focused monitor changes +# Drop it from your config, if you don't like this behavior +# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks +# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse +# Fallback value (if you omit the key): on-focused-monitor-changed = [] +on-focused-monitor-changed = ['move-mouse monitor-lazy-center'] + +# 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 + +# Possible values: (qwerty|dvorak|colemak) +# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping +[key-mapping] +preset = 'qwerty' + +# Gaps between windows (inner-*) and between monitor edges (outer-*). +# Possible values: +# - Constant: gaps.outer.top = 8 +# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24] +# In this example, 24 is a default value when there is no match. +# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'. +# See: +# https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors +[gaps] + inner.horizontal = 6 + inner.vertical = 6 + outer.left = 6 + outer.bottom = 6 + outer.top = 6 + outer.right = 6 + +[mode.main.binding] +# All possible keys: +# - Letters. a, b, c, ..., z +# - Numbers. 0, 1, 2, ..., 9 +# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9 +# - F-keys. f1, f2, ..., f20 +# - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, +# backtick, leftSquareBracket, rightSquareBracket, space, enter, esc, +# backspace, tab, pageUp, pageDown, home, end, forwardDelete, +# sectionSign (ISO keyboards only, european keyboards only) +# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual, +# keypadMinus, keypadMultiply, keypadPlus +# - Arrows. left, down, up, right + +# All possible modifiers: cmd, alt, ctrl, shift +# All possible commands: https://nikitabobko.github.io/AeroSpace/commands + +# App keybinds +alt-shift-f = 'exec-and-forget open ~' +alt-shift-b = 'exec-and-forget /opt/homebrew/bin/firefox --new-window' + +# Layout +# See: https://nikitabobko.github.io/AeroSpace/commands#layout +alt-slash = 'layout tiles horizontal vertical' +alt-comma = 'layout accordion horizontal vertical' +alt-space = 'layout floating tiling' +alt-f = 'fullscreen' + +# Moving Focus +# See: https://nikitabobko.github.io/AeroSpace/commands#focus +alt-h = 'focus left' +alt-j = 'focus down' +alt-k = 'focus up' +alt-l = 'focus right' + +# Moving windows +# 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' + +alt-ctrl-h = 'join-with left' +alt-ctrl-j = 'join-with down' +alt-ctrl-k = 'join-with up' +alt-ctrl-l = 'join-with right' + + +# Resizing Windows +# 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' + +# See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace +alt-shift-1 = 'move-node-to-workspace --focus-follows-window 1' +alt-shift-2 = 'move-node-to-workspace --focus-follows-window 2' +alt-shift-3 = 'move-node-to-workspace --focus-follows-window 3' +alt-shift-4 = 'move-node-to-workspace --focus-follows-window 4' +alt-shift-5 = 'move-node-to-workspace --focus-follows-window 5' +alt-shift-6 = 'move-node-to-workspace --focus-follows-window 6' +alt-shift-7 = 'move-node-to-workspace --focus-follows-window 7' +alt-shift-8 = 'move-node-to-workspace --focus-follows-window 8' +alt-shift-9 = 'move-node-to-workspace --focus-follows-window 9' + +# See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth +alt-tab = 'workspace-back-and-forth' + + +# See: https://nikitabobko.github.io/AeroSpace/commands#mode +# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes +alt-shift-semicolon = 'mode service' +[mode.service.binding] +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'] + +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'] + +down = 'volume down' +up = 'volume up' +shift-down = ['volume set 0', 'mode main']