|
@@ -1,50 +1,19 @@
|
|
|
-{ pkgs
|
|
|
|
|
-, config
|
|
|
|
|
-, lib
|
|
|
|
|
-, ...
|
|
|
|
|
-}:
|
|
|
|
|
-let
|
|
|
|
|
- cfg = config.programs.aerospace;
|
|
|
|
|
- aerospace-focus = "${lib.getExe pkgs.aerospace-tmux-focus}";
|
|
|
|
|
-in
|
|
|
|
|
{
|
|
{
|
|
|
- home.packages = [ pkgs.aerospace-tmux-focus ];
|
|
|
|
|
-
|
|
|
|
|
- launchd.agents.aerospace = {
|
|
|
|
|
- enable = lib.mkForce true;
|
|
|
|
|
- config = {
|
|
|
|
|
- ProgramArguments = [
|
|
|
|
|
- "${cfg.package}/Applications/AeroSpace.app/Contents/MacOS/AeroSpace"
|
|
|
|
|
- "--started-at-login"
|
|
|
|
|
- ];
|
|
|
|
|
- KeepAlive = true;
|
|
|
|
|
- RunAtLoad = true;
|
|
|
|
|
- };
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
programs.aerospace = {
|
|
programs.aerospace = {
|
|
|
enable = true;
|
|
enable = true;
|
|
|
userSettings = {
|
|
userSettings = {
|
|
|
start-at-login = true;
|
|
start-at-login = true;
|
|
|
|
|
|
|
|
mode.main.binding = {
|
|
mode.main.binding = {
|
|
|
- # window focus
|
|
|
|
|
- ctrl-left = "exec-and-forget ${aerospace-focus} left";
|
|
|
|
|
- ctrl-down = "exec-and-forget ${aerospace-focus} down";
|
|
|
|
|
- ctrl-up = "exec-and-forget ${aerospace-focus} up";
|
|
|
|
|
- ctrl-right = "exec-and-forget ${aerospace-focus} right";
|
|
|
|
|
-
|
|
|
|
|
# vim-style window focusing
|
|
# vim-style window focusing
|
|
|
- ctrl-h = "exec-and-forget ${aerospace-focus} left";
|
|
|
|
|
- ctrl-j = "exec-and-forget ${aerospace-focus} down";
|
|
|
|
|
- ctrl-k = "exec-and-forget ${aerospace-focus} up";
|
|
|
|
|
- ctrl-l = "exec-and-forget ${aerospace-focus} right";
|
|
|
|
|
-
|
|
|
|
|
- # move windows
|
|
|
|
|
- ctrl-shift-left = "move left";
|
|
|
|
|
- ctrl-shift-down = "move down";
|
|
|
|
|
- ctrl-shift-up = "move up";
|
|
|
|
|
- ctrl-shift-right = "move right";
|
|
|
|
|
|
|
+ # ctrl-h = "exec-and-forget ${aerospace-focus} left";
|
|
|
|
|
+ # ctrl-j = "exec-and-forget ${aerospace-focus} down";
|
|
|
|
|
+ # ctrl-k = "exec-and-forget ${aerospace-focus} up";
|
|
|
|
|
+ # ctrl-l = "exec-and-forget ${aerospace-focus} right";
|
|
|
|
|
+ ctrl-h = "focus left";
|
|
|
|
|
+ ctrl-j = "focus down";
|
|
|
|
|
+ ctrl-k = "focus up";
|
|
|
|
|
+ ctrl-l = "focus right";
|
|
|
|
|
|
|
|
# vim-style window moving
|
|
# vim-style window moving
|
|
|
ctrl-shift-h = "move left";
|
|
ctrl-shift-h = "move left";
|
|
@@ -53,31 +22,22 @@ in
|
|
|
ctrl-shift-l = "move right";
|
|
ctrl-shift-l = "move right";
|
|
|
|
|
|
|
|
# jump to workspace
|
|
# jump to workspace
|
|
|
- ctrl-b = "workspace B"; # Browser
|
|
|
|
|
- ctrl-e = "workspace E"; # Finder
|
|
|
|
|
- ctrl-m = "workspace M"; # Mail
|
|
|
|
|
- ctrl-n = "workspace N"; # Notes
|
|
|
|
|
- ctrl-s = "workspace S"; # Signal
|
|
|
|
|
- ctrl-t = "workspace T"; # Terminal
|
|
|
|
|
- ctrl-v = "workspace V"; # Video
|
|
|
|
|
|
|
+ ctrl-1 = "workspace 1"; # Browser
|
|
|
|
|
+ ctrl-2 = "workspace 2"; # Terminal
|
|
|
|
|
+ ctrl-3 = "workspace 3"; # Mail
|
|
|
|
|
+ ctrl-4 = "workspace 4"; # Video
|
|
|
|
|
|
|
|
# move window to workspace
|
|
# move window to workspace
|
|
|
- ctrl-shift-b = "move-node-to-workspace B";
|
|
|
|
|
- ctrl-shift-e = "move-node-to-workspace E";
|
|
|
|
|
- ctrl-shift-t = "move-node-to-workspace T";
|
|
|
|
|
- ctrl-shift-m = "move-node-to-workspace M";
|
|
|
|
|
- ctrl-shift-n = "move-node-to-workspace N";
|
|
|
|
|
- ctrl-shift-s = "move-node-to-workspace S";
|
|
|
|
|
- ctrl-shift-v = "move-node-to-workspace V";
|
|
|
|
|
|
|
+ ctrl-shift-1 = "move-node-to-workspace 1";
|
|
|
|
|
+ ctrl-shift-2 = "move-node-to-workspace 2";
|
|
|
|
|
+ ctrl-shift-3 = "move-node-to-workspace 3";
|
|
|
|
|
+ ctrl-shift-4 = "move-node-to-workspace 4";
|
|
|
|
|
|
|
|
# follow window to workspace
|
|
# follow window to workspace
|
|
|
- ctrl-cmd-b = [ "move-node-to-workspace B" "workspace B" ];
|
|
|
|
|
- ctrl-cmd-e = [ "move-node-to-workspace E" "workspace E" ];
|
|
|
|
|
- ctrl-cmd-t = [ "move-node-to-workspace T" "workspace M" ];
|
|
|
|
|
- ctrl-cmd-m = [ "move-node-to-workspace M" "workspace N" ];
|
|
|
|
|
- ctrl-cmd-n = [ "move-node-to-workspace N" "workspace S" ];
|
|
|
|
|
- ctrl-cmd-s = [ "move-node-to-workspace S" "workspace T" ];
|
|
|
|
|
- ctrl-cmd-v = [ "move-node-to-workspace V" "workspace V" ];
|
|
|
|
|
|
|
+ ctrl-cmd-1 = [ "move-node-to-workspace 1" "workspace 1" ];
|
|
|
|
|
+ ctrl-cmd-2 = [ "move-node-to-workspace 2" "workspace 2" ];
|
|
|
|
|
+ ctrl-cmd-3 = [ "move-node-to-workspace 3" "workspace 3" ];
|
|
|
|
|
+ ctrl-cmd-4 = [ "move-node-to-workspace 4" "workspace 4" ];
|
|
|
|
|
|
|
|
# window management
|
|
# window management
|
|
|
ctrl-q = "close";
|
|
ctrl-q = "close";
|
|
@@ -92,13 +52,14 @@ in
|
|
|
ctrl-shift-space = "layout accordion horizontal vertical";
|
|
ctrl-shift-space = "layout accordion horizontal vertical";
|
|
|
|
|
|
|
|
# resize mode
|
|
# resize mode
|
|
|
- ctrl-r = "mode resize";
|
|
|
|
|
|
|
+ ctrl-shift-r = "mode resize";
|
|
|
|
|
|
|
|
# application launchers; not necessary since we're using app launcher
|
|
# application launchers; not necessary since we're using app launcher
|
|
|
- # ctrl-return = "exec-and-forget open -a Terminal";
|
|
|
|
|
- # ctrl-e = "exec-and-forget open -a Finder";
|
|
|
|
|
- # ctrl-b = "exec-and-forget open -a Safari";
|
|
|
|
|
- ctrl-d = "exec-and-forget open -a Raycast";
|
|
|
|
|
|
|
+ alt-enter = "exec-and-forget open -a Ghostty";
|
|
|
|
|
+ alt-e = "exec-and-forget open -a Finder";
|
|
|
|
|
+ alt-b = "exec-and-forget open -a Vivaldi.app";
|
|
|
|
|
+ alt-v = "exec-and-forget open -a \"Vivaldi.app\" -n --args --profile-directory=YouTube";
|
|
|
|
|
+ # ctrl-d = "exec-and-forget open -a Raycast";
|
|
|
|
|
|
|
|
# reload configuration; probably not necessary since we're using hm
|
|
# reload configuration; probably not necessary since we're using hm
|
|
|
# ctrl-ctrl-r = "reload-config";
|
|
# ctrl-ctrl-r = "reload-config";
|
|
@@ -125,15 +86,13 @@ in
|
|
|
ctrl-r = "mode main";
|
|
ctrl-r = "mode main";
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ # FIXME: these don't work, probably because of toml
|
|
|
on-window-detected = [
|
|
on-window-detected = [
|
|
|
# disable on "Picture-in-Picture"
|
|
# disable on "Picture-in-Picture"
|
|
|
{
|
|
{
|
|
|
check-further-callbacks = false;
|
|
check-further-callbacks = false;
|
|
|
- "if" = {
|
|
|
|
|
- app-id = "com.brave.Browser";
|
|
|
|
|
- window-title-regex-substring = "Picture in Picture";
|
|
|
|
|
- };
|
|
|
|
|
- run = [ "layout floating" ];
|
|
|
|
|
|
|
+ "if".window-title-regex-substring = "youtube";
|
|
|
|
|
+ run = [ "move-node-to-workspace 4" ];
|
|
|
}
|
|
}
|
|
|
{
|
|
{
|
|
|
check-further-callbacks = false;
|
|
check-further-callbacks = false;
|