|
|
@@ -1,17 +1,18 @@
|
|
|
#!/bin/zsh
|
|
|
-TERMINAL_PATH=/Applications/Alacritty.app/
|
|
|
-BROWSER_PATH=/Applications/Firefox.app/
|
|
|
-FINDER_PATH=/System/Library/CoreServices/Finder.app/
|
|
|
-COMMUNICATIONS_PATH=/Applications/Slack.app/
|
|
|
-MUSIC_PATH=/Applications/Spotify.app/
|
|
|
-NOTETAKING_PATH=/Applications/Obsidian.app/
|
|
|
-PROJECTTRACKING_PATH=/Applications/Asana.app/
|
|
|
-PROJECTDOCS_PATH=/Applications/Notion.app/
|
|
|
-VIDEOCALL_PATH=$HOME/Applications/Google\ Meet.app/
|
|
|
+export TERMINAL_PATH=/Applications/Alacritty.app/
|
|
|
+export BROWSER_PATH=/Applications/Firefox.app/
|
|
|
+export FINDER_PATH=/System/Library/CoreServices/Finder.app/
|
|
|
+export COMMUNICATIONS_PATH=/Applications/Slack.app/
|
|
|
+export MUSIC_PATH=/Applications/Spotify.app/
|
|
|
+export NOTETAKING_PATH=/Applications/Obsidian.app/
|
|
|
+export PROJECTTRACKING_PATH=/Applications/Asana.app/
|
|
|
+export PROJECTDOCS_PATH=/Applications/Notion.app/
|
|
|
+export VIDEOCALL_PATH=$HOME/Applications/Google\ Meet.app/
|
|
|
|
|
|
-ALT_COMMUNICATIONS_PATH=/Applications/Signal.app/
|
|
|
-ALT_NOTETAKING_PATH=/Applications/Obsidian.app/
|
|
|
+export ALT_COMMUNICATIONS_PATH=/Applications/Signal.app/
|
|
|
+export ALT_NOTETAKING_PATH=/Applications/Obsidian.app/
|
|
|
|
|
|
+valid_selection=true
|
|
|
case $1 in
|
|
|
terminal)
|
|
|
open $TERMINAL_PATH ;;
|
|
|
@@ -32,16 +33,21 @@ case $1 in
|
|
|
open $PROJECTTRACKING_PATH ;;
|
|
|
projectdocs)
|
|
|
open $PROJECTDOCS_PATH ;;
|
|
|
+ *)
|
|
|
+ valid_selection=false
|
|
|
esac
|
|
|
|
|
|
-# If there are 3+ windows in the space, then make selected the largest window
|
|
|
-windows=$(yabai -m query --windows)
|
|
|
-active_space=$(jq 'map(select(."has-focus"==true)) | map(.space) | first' <<< $windows)
|
|
|
-shared_windows=$(jq --argjson space "$active_space" 'map(select(.space==$space)) | map( { ("size"): (.frame.w * .frame.h), "id": .id, "focus": ."has-focus", "title": .title } ) | sort_by(.size)' <<< $windows)
|
|
|
-if [ $(jq 'length' <<< $shared_windows ) -gt 2 ]; then
|
|
|
- focused_window=$(jq 'map(select(.focus)) | first | .id' <<< $shared_windows)
|
|
|
- largest_window=$(jq 'last | .id' <<< $shared_windows)
|
|
|
- if [ "$focused_window" != "$largest_window" ]; then
|
|
|
- yabai -m window $focused_window --swap $largest_window
|
|
|
+if [ "$valid_selection" = true ] ; then
|
|
|
+ # If there are 3+ windows in the space, then make selected the largest window
|
|
|
+ windows=$(yabai -m query --windows)
|
|
|
+ active_space=$(jq 'map(select(."has-focus"==true)) | map(.space) | first' <<< $windows)
|
|
|
+ shared_windows=$(jq --argjson space "$active_space" 'map(select(.space==$space)) | map( { ("size"): (.frame.w * .frame.h), "id": .id, "focus": ."has-focus", "title": .title } ) | sort_by(.size)' <<< $windows)
|
|
|
+ if [ $(jq 'length' <<< $shared_windows ) -gt 2 ]; then
|
|
|
+ focused_window=$(jq 'map(select(.focus)) | first | .id' <<< $shared_windows)
|
|
|
+ largest_window=$(jq 'last | .id' <<< $shared_windows)
|
|
|
+ if [ "$focused_window" != "$largest_window" ]; then
|
|
|
+ yabai -m window $focused_window --swap $largest_window
|
|
|
+ fi
|
|
|
fi
|
|
|
fi
|
|
|
+
|