diff --git a/dot_config/flake/home/PaperWM.spoon/default.nix b/dot_config/flake/home/PaperWM.spoon/default.nix new file mode 100644 index 0000000..06c2849 --- /dev/null +++ b/dot_config/flake/home/PaperWM.spoon/default.nix @@ -0,0 +1,131 @@ +{pkgs, ...}: { + home = { + file.".hammerspoon/Spoons/PaperWM.spoon" = { + source = pkgs.fetchFromGitHub { + owner = "mogenson"; + repo = "PaperWM.spoon"; + rev = "5bc47411eaf4dbbfb950d23d1ec7daf3a0427470"; + hash = "sha256-YBwa8tmo8hTpuZLFJ8JjAzkNF9+4xGSBuE3ziuHVg74="; + }; + }; + + file.".hammerspoon/Spoons/ActiveSpace.spoon" = { + source = pkgs.fetchFromGitHub { + owner = "mogenson"; + repo = "ActiveSpace.spoon"; + rev = "a246cb5a38d0e930a526b44fbd6b6c6d4a36a9d9"; + hash = "sha256-yFhWsb9J56qtcTx56WRhej5oY3zLUkUZjjTd8iMIhFg="; + }; + }; + + file.".hammerspoon/Spoons/WarpMouse.spoon" = { + source = pkgs.fetchFromGitHub { + owner = "mogenson"; + repo = "WarpMouse.spoon"; + rev = "c3b76e02704a15d22e7e6971fe76781db642d0bd"; + hash = "sha256-6hDU7lM59PoMo5ykeTdvomIqEkKkmh1Xam2GIBVgSVY="; + }; + }; + + file.".hammerspoon/init.lua" = { + text = '' + + ActiveSpace = hs.loadSpoon("ActiveSpace") + ActiveSpace.compact = true + ActiveSpace:start() + + WarpMouse = hs.loadSpoon("WarpMouse") + -- WarpMouse.margin = 8 -- optionally set how far past a screen edge the mouse should warp, default is 2 pixels + WarpMouse:start() + + PaperWM = hs.loadSpoon("PaperWM") + PaperWM:bindHotkeys({ + -- switch to a new focused window in tiled grid + focus_left = {{"alt", "cmd"}, "left"}, + focus_right = {{"alt", "cmd"}, "right"}, + focus_up = {{"alt", "cmd"}, "up"}, + focus_down = {{"alt", "cmd"}, "down"}, + + -- switch windows by cycling forward/backward + -- (forward = down or right, backward = up or left) + focus_prev = {{"alt", "cmd"}, "k"}, + focus_next = {{"alt", "cmd"}, "j"}, + + -- move windows around in tiled grid + swap_left = {{"alt", "cmd", "shift"}, "left"}, + swap_right = {{"alt", "cmd", "shift"}, "right"}, + swap_up = {{"alt", "cmd", "shift"}, "up"}, + swap_down = {{"alt", "cmd", "shift"}, "down"}, + + -- alternative: swap entire columns, rather than + -- individual windows (to be used instead of + -- swap_left / swap_right bindings) + -- swap_column_left = {{"alt", "cmd", "shift"}, "left"}, + -- swap_column_right = {{"alt", "cmd", "shift"}, "right"}, + + -- position and resize focused window + center_window = {{"alt", "cmd"}, "c"}, + full_width = {{"alt", "cmd"}, "f"}, + cycle_width = {{"alt", "cmd"}, "r"}, + reverse_cycle_width = {{"ctrl", "alt", "cmd"}, "r"}, + cycle_height = {{"alt", "cmd", "shift"}, "r"}, + reverse_cycle_height = {{"ctrl", "alt", "cmd", "shift"}, "r"}, + + -- increase/decrease width + increase_width = {{"alt", "cmd"}, "l"}, + decrease_width = {{"alt", "cmd"}, "h"}, + + -- move focused window into / out of a column + slurp_in = {{"alt", "cmd"}, "i"}, + barf_out = {{"alt", "cmd"}, "o"}, + + -- move the focused window into / out of the tiling layer + toggle_floating = {{"alt", "cmd", "shift"}, "escape"}, + + -- focus the first / second / etc window in the current space + focus_window_1 = {{"cmd", "shift"}, "1"}, + focus_window_2 = {{"cmd", "shift"}, "2"}, + focus_window_3 = {{"cmd", "shift"}, "3"}, + focus_window_4 = {{"cmd", "shift"}, "4"}, + focus_window_5 = {{"cmd", "shift"}, "5"}, + focus_window_6 = {{"cmd", "shift"}, "6"}, + focus_window_7 = {{"cmd", "shift"}, "7"}, + focus_window_8 = {{"cmd", "shift"}, "8"}, + focus_window_9 = {{"cmd", "shift"}, "9"}, + + -- switch to a new Mission Control space + switch_space_l = {{"alt", "cmd"}, ","}, + switch_space_r = {{"alt", "cmd"}, "."}, + switch_space_1 = {{"alt", "cmd"}, "1"}, + switch_space_2 = {{"alt", "cmd"}, "2"}, + switch_space_3 = {{"alt", "cmd"}, "3"}, + switch_space_4 = {{"alt", "cmd"}, "4"}, + switch_space_5 = {{"alt", "cmd"}, "5"}, + switch_space_6 = {{"alt", "cmd"}, "6"}, + switch_space_7 = {{"alt", "cmd"}, "7"}, + switch_space_8 = {{"alt", "cmd"}, "8"}, + switch_space_9 = {{"alt", "cmd"}, "9"}, + + -- move focused window to a new space and tile + move_window_1 = {{"alt", "cmd", "shift"}, "1"}, + move_window_2 = {{"alt", "cmd", "shift"}, "2"}, + move_window_3 = {{"alt", "cmd", "shift"}, "3"}, + move_window_4 = {{"alt", "cmd", "shift"}, "4"}, + move_window_5 = {{"alt", "cmd", "shift"}, "5"}, + move_window_6 = {{"alt", "cmd", "shift"}, "6"}, + move_window_7 = {{"alt", "cmd", "shift"}, "7"}, + move_window_8 = {{"alt", "cmd", "shift"}, "8"}, + move_window_9 = {{"alt", "cmd", "shift"}, "9"} + }) + + -- number of fingers to detect a horizontal swipe, set to 0 to disable (the default) + PaperWM.swipe_fingers = 3 + + -- increase this number to make windows move farther when swiping + PaperWM.swipe_gain = 1.0, + + PaperWM:start() + ''; + }; + }; +} diff --git a/dot_config/flake/machines/hinge/darwin.nix b/dot_config/flake/machines/hinge/darwin.nix index 7b5d0db..b982122 100644 --- a/dot_config/flake/machines/hinge/darwin.nix +++ b/dot_config/flake/machines/hinge/darwin.nix @@ -8,6 +8,8 @@ in { imports = [ # ../fish.nix # ./sketchybar.nix + + ../../modules/darwin/aerospace ]; nixpkgs = { @@ -117,174 +119,6 @@ in { active_color = "0xFF95bcf9"; }; - services.aerospace = { - enable = false; - - settings = { - # You can use it to add commands that run after login to macOS user session. - # 'start-at-login' needs to be 'true' for 'after-login-command' to work - # Available commands: https://nikitabobko.github.io/AeroSpace/commands - after-login-command = []; - - # You can use it to add commands that run after AeroSpace startup. - # 'after-startup-command' is run after 'after-login-command' - # Available commands : https://nikitabobko.github.io/AeroSpace/commands - after-startup-command = []; - - # Start AeroSpace at login - # start-at-login = true - - # 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 = false; - - # Possible values: (qwerty|dvorak) - # 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 = 4; - inner.vertical = 4; - outer.left = 0; - outer.bottom = 0; - outer.top = 0; - outer.right = 0; - }; - - # 'main' binding mode declaration - # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes - # 'main' binding mode must be always presented - # Fallback value (if you omit the key): mode.main.binding = {} - # [mode.main.binding] - mode.main.binding = { - # All possible commands: https://nikitabobko.github.io/AeroSpace/commands - - # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget - # You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3) - # alt-enter = '''exec-and-forget osascript -e ' - # tell application "Terminal" - # do script - # activate - # end tell' - # ''' - - # 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-shift-left = "focus left"; - alt-shift-down = "focus down"; - alt-shift-up = "focus up"; - alt-shift-right = "focus right"; - - ctrl-alt-shift-left = "focus-monitor left --wrap-around"; - ctrl-alt-shift-right = "focus-monitor right --wrap-around"; - ctrl-alt-shift-up = "focus-monitor up --wrap-around"; - ctrl-alt-shift-down = "focus-monitor down --wrap-around"; - - # 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-shift-minus = "resize smart -50"; - alt-shift-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 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"; - - # 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"; - - # See: https://nikitabobko.github.io/AeroSpace/commands#mode - alt-shift-semicolon = "mode service"; - }; - - mode.service.binding = { - # "service" binding mode declaration. - # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes - 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"]; - - # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 - #s = ["layout sticky tiling", "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"]; - }; - - workspace-to-monitor-force-assignment = { - "1" = "built-in"; - "2" = ["^DELL U2723QE \\(1\\)$" "BenQ EX2710 \\(2\\)$"]; - "3" = ["^DELL U2723QE \\(2\\)$" "BenQ EX2710 \\(1\\)$"]; - }; - }; - }; - programs.fish.enable = true; programs.zsh.enable = true; diff --git a/dot_config/flake/machines/hinge/home.nix b/dot_config/flake/machines/hinge/home.nix index 7241487..bfaf606 100644 --- a/dot_config/flake/machines/hinge/home.nix +++ b/dot_config/flake/machines/hinge/home.nix @@ -65,127 +65,6 @@ require("init") ''; }; - - file.".hammerspoon/Spoons/PaperWM.spoon" = { - source = pkgs.fetchFromGitHub { - owner = "mogenson"; - repo = "PaperWM.spoon"; - rev = "5bc47411eaf4dbbfb950d23d1ec7daf3a0427470"; - hash = "sha256-YBwa8tmo8hTpuZLFJ8JjAzkNF9+4xGSBuE3ziuHVg74="; - }; - }; - - file.".hammerspoon/Spoons/ActiveSpace.spoon" = { - source = pkgs.fetchFromGitHub { - owner = "mogenson"; - repo = "ActiveSpace.spoon"; - rev = "a246cb5a38d0e930a526b44fbd6b6c6d4a36a9d9"; - hash = "sha256-yFhWsb9J56qtcTx56WRhej5oY3zLUkUZjjTd8iMIhFg="; - }; - }; - - file.".hammerspoon/Spoons/WarpMouse.spoon" = { - source = pkgs.fetchFromGitHub { - owner = "mogenson"; - repo = "WarpMouse.spoon"; - rev = "c3b76e02704a15d22e7e6971fe76781db642d0bd"; - hash = "sha256-6hDU7lM59PoMo5ykeTdvomIqEkKkmh1Xam2GIBVgSVY="; - }; - }; - - file.".hammerspoon/init.lua" = { - text = '' - - ActiveSpace = hs.loadSpoon("ActiveSpace") - ActiveSpace.compact = true - ActiveSpace:start() - - WarpMouse = hs.loadSpoon("WarpMouse") - -- WarpMouse.margin = 8 -- optionally set how far past a screen edge the mouse should warp, default is 2 pixels - WarpMouse:start() - - PaperWM = hs.loadSpoon("PaperWM") - PaperWM:bindHotkeys({ - -- switch to a new focused window in tiled grid - focus_left = {{"alt", "cmd"}, "left"}, - focus_right = {{"alt", "cmd"}, "right"}, - focus_up = {{"alt", "cmd"}, "up"}, - focus_down = {{"alt", "cmd"}, "down"}, - - -- switch windows by cycling forward/backward - -- (forward = down or right, backward = up or left) - focus_prev = {{"alt", "cmd"}, "k"}, - focus_next = {{"alt", "cmd"}, "j"}, - - -- move windows around in tiled grid - swap_left = {{"alt", "cmd", "shift"}, "left"}, - swap_right = {{"alt", "cmd", "shift"}, "right"}, - swap_up = {{"alt", "cmd", "shift"}, "up"}, - swap_down = {{"alt", "cmd", "shift"}, "down"}, - - -- alternative: swap entire columns, rather than - -- individual windows (to be used instead of - -- swap_left / swap_right bindings) - -- swap_column_left = {{"alt", "cmd", "shift"}, "left"}, - -- swap_column_right = {{"alt", "cmd", "shift"}, "right"}, - - -- position and resize focused window - center_window = {{"alt", "cmd"}, "c"}, - full_width = {{"alt", "cmd"}, "f"}, - cycle_width = {{"alt", "cmd"}, "r"}, - reverse_cycle_width = {{"ctrl", "alt", "cmd"}, "r"}, - cycle_height = {{"alt", "cmd", "shift"}, "r"}, - reverse_cycle_height = {{"ctrl", "alt", "cmd", "shift"}, "r"}, - - -- increase/decrease width - increase_width = {{"alt", "cmd"}, "l"}, - decrease_width = {{"alt", "cmd"}, "h"}, - - -- move focused window into / out of a column - slurp_in = {{"alt", "cmd"}, "i"}, - barf_out = {{"alt", "cmd"}, "o"}, - - -- move the focused window into / out of the tiling layer - toggle_floating = {{"alt", "cmd", "shift"}, "escape"}, - - -- focus the first / second / etc window in the current space - focus_window_1 = {{"cmd", "shift"}, "1"}, - focus_window_2 = {{"cmd", "shift"}, "2"}, - focus_window_3 = {{"cmd", "shift"}, "3"}, - focus_window_4 = {{"cmd", "shift"}, "4"}, - focus_window_5 = {{"cmd", "shift"}, "5"}, - focus_window_6 = {{"cmd", "shift"}, "6"}, - focus_window_7 = {{"cmd", "shift"}, "7"}, - focus_window_8 = {{"cmd", "shift"}, "8"}, - focus_window_9 = {{"cmd", "shift"}, "9"}, - - -- switch to a new Mission Control space - switch_space_l = {{"alt", "cmd"}, ","}, - switch_space_r = {{"alt", "cmd"}, "."}, - switch_space_1 = {{"alt", "cmd"}, "1"}, - switch_space_2 = {{"alt", "cmd"}, "2"}, - switch_space_3 = {{"alt", "cmd"}, "3"}, - switch_space_4 = {{"alt", "cmd"}, "4"}, - switch_space_5 = {{"alt", "cmd"}, "5"}, - switch_space_6 = {{"alt", "cmd"}, "6"}, - switch_space_7 = {{"alt", "cmd"}, "7"}, - switch_space_8 = {{"alt", "cmd"}, "8"}, - switch_space_9 = {{"alt", "cmd"}, "9"}, - - -- move focused window to a new space and tile - move_window_1 = {{"alt", "cmd", "shift"}, "1"}, - move_window_2 = {{"alt", "cmd", "shift"}, "2"}, - move_window_3 = {{"alt", "cmd", "shift"}, "3"}, - move_window_4 = {{"alt", "cmd", "shift"}, "4"}, - move_window_5 = {{"alt", "cmd", "shift"}, "5"}, - move_window_6 = {{"alt", "cmd", "shift"}, "6"}, - move_window_7 = {{"alt", "cmd", "shift"}, "7"}, - move_window_8 = {{"alt", "cmd", "shift"}, "8"}, - move_window_9 = {{"alt", "cmd", "shift"}, "9"} - }) - PaperWM:start() - ''; - }; }; programs.home-manager.enable = true; diff --git a/dot_config/flake/modules/darwin/aerospace/default.nix b/dot_config/flake/modules/darwin/aerospace/default.nix new file mode 100644 index 0000000..07d4217 --- /dev/null +++ b/dot_config/flake/modules/darwin/aerospace/default.nix @@ -0,0 +1,169 @@ +{...}: { + services.aerospace = { + enable = true; + + settings = { + # You can use it to add commands that run after login to macOS user session. + # 'start-at-login' needs to be 'true' for 'after-login-command' to work + # Available commands: https://nikitabobko.github.io/AeroSpace/commands + after-login-command = []; + + # You can use it to add commands that run after AeroSpace startup. + # 'after-startup-command' is run after 'after-login-command' + # Available commands : https://nikitabobko.github.io/AeroSpace/commands + after-startup-command = []; + + # Start AeroSpace at login + # start-at-login = true + + # 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 = false; + + # Possible values: (qwerty|dvorak) + # 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 = 4; + inner.vertical = 4; + outer.left = 0; + outer.bottom = 0; + outer.top = 0; + outer.right = 0; + }; + + # 'main' binding mode declaration + # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes + # 'main' binding mode must be always presented + # Fallback value (if you omit the key): mode.main.binding = {} + # [mode.main.binding] + mode.main.binding = { + # All possible commands: https://nikitabobko.github.io/AeroSpace/commands + + # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget + # You can uncomment the following lines to open up terminal with alt + enter shortcut (like in i3) + # alt-enter = '''exec-and-forget osascript -e ' + # tell application "Terminal" + # do script + # activate + # end tell' + # ''' + + # 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-shift-left = "focus left"; + alt-shift-down = "focus down"; + alt-shift-up = "focus up"; + alt-shift-right = "focus right"; + + ctrl-alt-shift-left = "focus-monitor left --wrap-around"; + ctrl-alt-shift-right = "focus-monitor right --wrap-around"; + ctrl-alt-shift-up = "focus-monitor up --wrap-around"; + ctrl-alt-shift-down = "focus-monitor down --wrap-around"; + + # 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-shift-minus = "resize smart -50"; + alt-shift-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 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"; + + # 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"; + + # See: https://nikitabobko.github.io/AeroSpace/commands#mode + alt-shift-semicolon = "mode service"; + }; + + mode.service.binding = { + # "service" binding mode declaration. + # See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes + 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"]; + + # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 + #s = ["layout sticky tiling", "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"]; + }; + + workspace-to-monitor-force-assignment = { + "1" = "built-in"; + "2" = ["^DELL U2723QE \\(1\\)$" "BenQ EX2710 \\(2\\)$"]; + "3" = ["^DELL U2723QE \\(2\\)$" "BenQ EX2710 \\(1\\)$"]; + }; + }; + }; +}