diff --git a/modules/home/rsydn/base.nix b/modules/home/rsydn/base.nix index dcf744d..92f9a58 100644 --- a/modules/home/rsydn/base.nix +++ b/modules/home/rsydn/base.nix @@ -2,7 +2,7 @@ home.stateVersion = "24.05"; imports = [ - ./programs/aerospace.nix + ./programs/aerospace ./programs/helix.nix ./programs/neovim.nix ./programs/ghostty.nix diff --git a/modules/home/rsydn/programs/aerospace.nix b/modules/home/rsydn/programs/aerospace.nix deleted file mode 100644 index c8cf63e..0000000 --- a/modules/home/rsydn/programs/aerospace.nix +++ /dev/null @@ -1,102 +0,0 @@ -{ pkgs, lib, ... }: -let - inherit (builtins) map toString listToAttrs; - - workspaceNumbers = map toString (lib.range 1 9); - - workspaceFocusBindings = listToAttrs (map (ws: { - name = "alt-${ws}"; - value = "workspace ${ws}"; - }) workspaceNumbers); - - workspaceSendBindings = listToAttrs (map (ws: { - name = "alt-shift-${ws}"; - value = "move-node-to-workspace ${ws}"; - }) workspaceNumbers); -in { - programs.aerospace = { - enable = true; - package = pkgs.aerospace; - - launchd = { - enable = true; - keepAlive = true; - }; - - userSettings = { - enable-normalization-flatten-containers = true; - enable-normalization-opposite-orientation-for-nested-containers = true; - default-root-container-layout = "tiles"; - default-root-container-orientation = "auto"; - key-mapping.preset = "qwerty"; - - gaps = { - inner = { - horizontal = 8; - vertical = 8; - }; - outer = { - top = 12; - bottom = 12; - left = 12; - right = 12; - }; - }; - - on-focused-monitor-changed = [ "move-mouse monitor-lazy-center" ]; - on-focus-changed = [ "move-mouse window-lazy-center" ]; - - mode = { - main.binding = { - "alt-h" = "focus left"; - "alt-j" = "focus down"; - "alt-k" = "focus up"; - "alt-l" = "focus right"; - - "alt-shift-h" = "move left"; - "alt-shift-j" = "move down"; - "alt-shift-k" = "move up"; - "alt-shift-l" = "move right"; - - "alt-minus" = "resize smart -50"; - "alt-equal" = "resize smart +50"; - - "alt-b" = "balance-sizes"; - "alt-slash" = "layout tiles horizontal vertical"; - "alt-comma" = "layout accordion horizontal vertical"; - "alt-space" = "layout floating tiling"; - - "alt-enter" = ''exec-and-forget open -na "Ghostty"''; - "alt-backspace" = "close"; - - "alt-tab" = "workspace-back-and-forth"; - "alt-shift-tab" = "move-workspace-to-monitor --wrap-around next"; - - "alt-r" = "mode resize"; - "alt-shift-semicolon" = "mode service"; - } // workspaceFocusBindings // workspaceSendBindings; - - resize.binding = { - h = "resize width -100"; - l = "resize width +100"; - j = "resize height -100"; - k = "resize height +100"; - r = "balance-sizes"; - enter = "mode main"; - esc = "mode main"; - }; - - service.binding = { - esc = [ "reload-config" "mode main" ]; - r = [ "flatten-workspace-tree" "mode main" ]; - f = [ "layout floating tiling" "mode main" ]; - backspace = [ "close-all-windows-but-current" "mode main" ]; - h = [ "join-with left" "mode main" ]; - j = [ "join-with down" "mode main" ]; - k = [ "join-with up" "mode main" ]; - l = [ "join-with right" "mode main" ]; - }; - }; - }; - }; -} diff --git a/modules/home/rsydn/programs/aerospace/default.nix b/modules/home/rsydn/programs/aerospace/default.nix new file mode 100644 index 0000000..7cb1196 --- /dev/null +++ b/modules/home/rsydn/programs/aerospace/default.nix @@ -0,0 +1,24 @@ +{ pkgs, lib, ... }: +let + workspaceHelpers = import ./workspaces.nix { inherit lib; }; + + modes = import ./modes.nix { + inherit (workspaceHelpers) workspaceFocusBindings workspaceSendBindings; + }; + + userSettings = import ./user-settings.nix { + modes = modes; + }; +in { + programs.aerospace = { + enable = true; + package = pkgs.aerospace; + + launchd = { + enable = true; + keepAlive = true; + }; + + userSettings = userSettings; + }; +} diff --git a/modules/home/rsydn/programs/aerospace/modes.nix b/modules/home/rsydn/programs/aerospace/modes.nix new file mode 100644 index 0000000..7174533 --- /dev/null +++ b/modules/home/rsydn/programs/aerospace/modes.nix @@ -0,0 +1,52 @@ +{ workspaceFocusBindings, workspaceSendBindings }: +{ + main.binding = { + "alt-h" = "focus left"; + "alt-j" = "focus down"; + "alt-k" = "focus up"; + "alt-l" = "focus right"; + + "alt-shift-h" = "move left"; + "alt-shift-j" = "move down"; + "alt-shift-k" = "move up"; + "alt-shift-l" = "move right"; + + "alt-minus" = "resize smart -50"; + "alt-equal" = "resize smart +50"; + + "alt-b" = "balance-sizes"; + "alt-slash" = "layout tiles horizontal vertical"; + "alt-comma" = "layout accordion horizontal vertical"; + "alt-space" = "layout floating tiling"; + + "alt-enter" = ''exec-and-forget open -na "Ghostty"''; + "alt-backspace" = "close"; + + "alt-tab" = "workspace-back-and-forth"; + "alt-shift-tab" = "move-workspace-to-monitor --wrap-around next"; + + "alt-r" = "mode resize"; + "alt-shift-semicolon" = "mode service"; + } // workspaceFocusBindings // workspaceSendBindings; + + resize.binding = { + h = "resize width -100"; + l = "resize width +100"; + j = "resize height -100"; + k = "resize height +100"; + r = "balance-sizes"; + enter = "mode main"; + esc = "mode main"; + }; + + service.binding = { + esc = [ "reload-config" "mode main" ]; + r = [ "flatten-workspace-tree" "mode main" ]; + f = [ "layout floating tiling" "mode main" ]; + backspace = [ "close-all-windows-but-current" "mode main" ]; + h = [ "join-with left" "mode main" ]; + j = [ "join-with down" "mode main" ]; + k = [ "join-with up" "mode main" ]; + l = [ "join-with right" "mode main" ]; + }; +} diff --git a/modules/home/rsydn/programs/aerospace/user-settings.nix b/modules/home/rsydn/programs/aerospace/user-settings.nix new file mode 100644 index 0000000..f68fd8a --- /dev/null +++ b/modules/home/rsydn/programs/aerospace/user-settings.nix @@ -0,0 +1,26 @@ +{ modes }: +{ + enable-normalization-flatten-containers = true; + enable-normalization-opposite-orientation-for-nested-containers = true; + default-root-container-layout = "tiles"; + default-root-container-orientation = "auto"; + key-mapping.preset = "qwerty"; + + gaps = { + inner = { + horizontal = 8; + vertical = 8; + }; + outer = { + top = 12; + bottom = 12; + left = 12; + right = 12; + }; + }; + + on-focused-monitor-changed = [ "move-mouse monitor-lazy-center" ]; + on-focus-changed = [ "move-mouse window-lazy-center" ]; + + mode = modes; +} diff --git a/modules/home/rsydn/programs/aerospace/workspaces.nix b/modules/home/rsydn/programs/aerospace/workspaces.nix new file mode 100644 index 0000000..678b139 --- /dev/null +++ b/modules/home/rsydn/programs/aerospace/workspaces.nix @@ -0,0 +1,18 @@ +{ lib }: +let + inherit (builtins) listToAttrs map toString; + + workspaceNumbers = map toString (lib.range 1 9); + + workspaceFocusBindings = listToAttrs (map (ws: { + name = "alt-${ws}"; + value = "workspace ${ws}"; + }) workspaceNumbers); + + workspaceSendBindings = listToAttrs (map (ws: { + name = "alt-shift-${ws}"; + value = "move-node-to-workspace ${ws}"; + }) workspaceNumbers); +in { + inherit workspaceNumbers workspaceFocusBindings workspaceSendBindings; +}