{ lib, config, dots, pkgs, inputs, ... }: let cfg = config.custom.gui.aerospace; in { options.custom.gui = with lib; { aerospace = { enable = mkEnableOption "Enable aerospace"; # logFile = mkOption { # type = types.str; # default = "${home-dir}/Library/Logs/aerospace.log"; # description = "Filepath of log output"; # }; }; }; config = lib.mkIf cfg.enable { hm.home.packages = [ inputs.aerospace-scratchpad.packages.${pkgs.stdenv.hostPlatform.system}.default ]; hm.xdg.configFile."aerospace".source = config.hm.lib.file.mkOutOfStoreSymlink "${dots}/config/aerospace"; # launchd.user.agents.aerospace.serviceConfig = { # StandardErrorPath = cfg.logFile; # StandardOutPath = cfg.logFile; # }; # # services.aerospace = { # enable = true; # # package = pkgs.custom.aerospace; # settings = { # enable-normalization-flatten-containers = false; # enable-normalization-opposite-orientation-for-nested-containers = false; # accordion-padding = 0; # on-focused-monitor-changed = [ "move-mouse monitor-lazy-center" ]; # default-root-container-layout = "tiles"; # default-root-container-orientation = "auto"; # after-startup-command = [ # "workspace 10" # "layout h_accordion" # "workspace-back-and-forth" # ]; # # gaps = { # inner = { # horizontal = 15; # vertical = 15; # }; # outer = { # left = 10; # bottom = 5; # top = [ # { monitor."LG ULTRAWIDE" = 50; } # { monitor."ZOWIE XL LCD" = 50; } # 12 # ]; # right = 10; # }; # }; # # mode = { # main = { # binding = { # alt-enter = # let # script = pkgs.writeText "ghostty.applescript" '' # do shell script "open -n -a Ghostty" # ''; # in # "exec-and-forget osascript ${script}"; # # # alt-enter = "exec-and-forget \"open -n -a /Applications/Slack.app\""; # # alt-shift-f = "fullscreen"; # alt-shift-q = "close --quit-if-last-window"; # alt-space = "layout floating tiling"; # alt-e = "layout tiles horizontal vertical"; # alt-t = "layout h_accordion"; # alt-s = "layout v_accordion"; # alt-v = "split vertical"; # alt-shift-v = "split horizontal"; # # alt-v = "join-with down"; # # alt-shift-v = "join-with right"; # alt-h = "focus --boundaries-action wrap-around-the-workspace left"; # alt-l = "focus --boundaries-action wrap-around-the-workspace right"; # alt-j = "focus --boundaries-action wrap-around-the-workspace down"; # alt-k = "focus --boundaries-action wrap-around-the-workspace up"; # alt-shift-h = "move left"; # alt-shift-l = "move right"; # alt-shift-j = "move down"; # alt-shift-k = "move up"; # # cmd-h = [ ]; # Disable "hide application" # cmd-alt-h = [ ]; # Disable "hide others" # cmd-q = [ ]; # Disable "quit" # cmd-shift-q = [ ]; # Disable "logout" # # 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"; # alt-0 = "workspace 10"; # # alt-shift-1 = [ # "move-node-to-workspace 1" # # "workspace 1" # ]; # alt-shift-2 = [ # "move-node-to-workspace 2" # # "workspace 2" # ]; # alt-shift-3 = [ # "move-node-to-workspace 3" # # "workspace 3" # ]; # alt-shift-4 = [ # "move-node-to-workspace 4" # # "workspace 4" # ]; # alt-shift-5 = [ # "move-node-to-workspace 5" # # "workspace 5" # ]; # alt-shift-6 = [ # "move-node-to-workspace 6" # # "workspace 6" # ]; # alt-shift-7 = [ # "move-node-to-workspace 7" # # "workspace 7" # ]; # alt-shift-8 = [ # "move-node-to-workspace 8" # # "workspace 8" # ]; # alt-shift-9 = [ # "move-node-to-workspace 9" # # "workspace 9" # ]; # alt-shift-0 = [ # "move-node-to-workspace 10" # # "workspace 10" # ]; # # alt-shift-c = "reload-config"; # 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"; # }; # }; # # 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" # ]; # # 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" ]; # }; # }; # # resize = { # binding = { # h = "resize width -50"; # j = "resize height +50"; # k = "resize height -50"; # l = "resize width +50"; # enter = "mode main"; # esc = "mode main"; # }; # }; # }; # # workspace-to-monitor-force-assignment = { # "1" = "main"; # "2" = "main"; # "3" = "main"; # "4" = "main"; # "5" = "main"; # "6" = "main"; # "7" = [ # "2" # "main" # ]; # "8" = "main"; # "9" = "main"; # "10" = [ # "2" # "main" # ]; # }; # # on-window-detected = [ # # workspace # # media # { # "if".app-id = "com.spotify.client"; # run = [ "move-node-to-workspace 7" ]; # } # # browser # { # "if".app-id = "app.zen-browser.zen"; # run = [ "move-node-to-workspace 10" ]; # } # { # "if".app-id = "com.kagi.kagimacOS"; # run = [ # "move-node-to-workspace 10" # ]; # } # # { # # "if".app-id = "com.openai.chat"; # # run = [ # # "move-node-to-workspace 10" # # ]; # # } # # { # # "if".app-id = "app.mozilla.firefox"; # # run = [ "move-node-to-workspace 10" ]; # # } # # { # # "if".app-id = "com.google.Chrome"; # # run = [ "move-node-to-workspace 10" ]; # # } # # { # # "if".app-id = "org.chromium.Chromium"; # # run = [ "move-node-to-workspace 10" ]; # # } # # communications # { # "if".app-id = "com.tinyspeck.slackmacgap"; # run = [ "move-node-to-workspace 9" ]; # } # { # "if".app-id = "com.microsoft.teams2"; # run = [ "move-node-to-workspace 9" ]; # } # # special app's layout # ## tiling # { # "if".app-id = "com.mitchellh.ghostty"; # run = [ "layout tiling" ]; # } # ## floating # { # "if".app-id = "com.renfei.SnippetsLab"; # run = [ "layout floating" ]; # } # { # "if".app-id = "com.colliderli.iina"; # run = [ "layout tiling" ]; # } # { # "if".app-id = "com.apple.ActivityMonitor"; # run = [ "layout floating" ]; # } # { # "if".app-id = "com.apple.calculator"; # run = [ "layout floating" ]; # } # { # "if".app-id = "com.apple.finder"; # run = [ "layout floating" ]; # } # { # "if".app-id = "com.1password.1password"; # run = [ "layout floating" ]; # } # { # "if".app-id = "com.chabomakers.Antinote"; # run = [ "layout floating" ]; # } # ]; # }; # }; }; }