-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathyabairc
executable file
·85 lines (71 loc) · 6.19 KB
/
yabairc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/usr/bin/env sh
/opt/homebrew/bin/yabai -m signal --add event=dock_did_restart action="sudo /opt/homebrew/bin/yabai --load-sa"
sudo /opt/homebrew/bin/yabai --load-sa
# global settings
yabai -m config mouse_follows_focus off
yabai -m config focus_follows_mouse autoraise
yabai -m config window_origin_display default
yabai -m config window_placement second_child
yabai -m config window_topmost off
yabai -m config window_shadow on
yabai -m config window_opacity on
yabai -m config window_opacity_duration 0.2
yabai -m config active_window_opacity 1.0
yabai -m config normal_window_opacity 0.90
yabai -m config insert_feedback_color 0xffd0e0e3
yabai -m config split_ratio 0.50
yabai -m config auto_balance off
yabai -m config mouse_modifier fn
yabai -m config mouse_action1 move
yabai -m config mouse_action2 resize
yabai -m config mouse_drop_action swap
# general space settings
yabai -m config layout bsp
yabai -m config top_padding 30
yabai -m config bottom_padding 30
yabai -m config left_padding 30
yabai -m config right_padding 30
yabai -m config window_gap 30
# yabai -m rule --add app=".*" sub-layer=normal
# yabai -m rule --add app!="^(CleanShot X|Screen Studio)$" sub-layer=normal
# Destroy Empty Spaces
yabai -m signal --add label=destroyEmptySpaces event=space_changed action="~/Documents/GitHubRepos/dotfiles/Yabai/Scripts/destroyEmptySpaces.sh"
# Scratchpads
yabai -m rule --add app="^Spotify$" scratchpad="Spotify" grid="11:11:1:1:9:9"
yabai -m rule --add app="^Messages$" scratchpad="iMessages" grid="11:11:1:1:9:9"
yabai -m rule --add app="^Transmission$" scratchpad="Transmission" grid="11:11:1:1:9:9"
yabai -m rule --add app="^Dehancer Lightroom Plugin$" scratchpad="Dehancer" grid="1:1:0:0:1:1"
yabai -m rule --add app="^Soundly$" scratchpad="scratchpad" grid="11:11:1:1:9:9"
# Misc
yabai -m rule --add app="^CleanShot X$" sticky=on manage=off opacity=1.0
yabai -m rule --add app="^Loopback$" manage=off opacity=1.0 grid="11:11:1:1:9:9"
yabai -m rule --add app="^Karabiner-.*" manage=off opacity=1.0 grid="11:11:1:1:9:9"
yabai -m rule --add app="^Kando$" manage=off opacity=1.0
yabai -m rule --add app="^Screen Studio$|^Screen Studio Beta$" subrole="AXDialog" title!="Camera Preview" manage=off opacity=0.0001
yabai -m rule --add app="^Screen Studio$|^Screen Studio Beta$" subrole!="AXDialog" manage=off opacity=1.0
yabai -m rule --add app="^Anybox$" title!=".* – .*" manage=off opacity=1.0
yabai -m rule --add app="^Keyboard Maestro$" subrole!="AXDialog" manage=off
# SuperWhisper
yabai -m rule --add app="superwhisper" subrole="AXDialog" grid="1:2:0:0:1:1" sticky=on manage=off opacity=1.0
# yabai -m signal --add label="swWin" event=window_created app="superwhisper" action="osascript -e 'tell application \"Keyboard Maestro Engine\" to do script \"SW Window State\"'"
# Bear Scratchpads and Main Window
yabai -m rule --add app="^Bear$" title!="^Bear$" manage=off grid="11:11:1:1:9:9"
yabai -m signal --add label=scratchpad_newBear event=window_created app="^Bear$" title!="^Bear$" action='~/Documents/GitHubRepos/dotfiles/Yabai/Scripts/scratchpadToggle.sh toggleSpecial bearScratchpad'
# Safari Scratchpads
yabai -m rule --add app="^Safari$" manage=off grid="11:11:1:1:9:9"
yabai -m signal --add label=scratchpad_newSafari event=window_created app="^Safari$" title!="^(General|Extensions)$" action='~/Documents/GitHubRepos/dotfiles/Yabai/Scripts/scratchpadToggle.sh toggleSpecial Safari'
# Apps to Keep Unmanaged
yabai -m rule --add app="^(TestFlight|iZotope RX 11|MacWhisper|FxFactory Agent|TrashMe 3|CrossOver|Find Any File|Keka|Bartender 5|DaisyDisk|OpenIn|Sideloadly!|iStat Menus Status|iStat Menus|Problem Reporter|PastePal|App Store|IINA|System Information|Dropover|Homerow|System Settings|Alfred Preferences|X-Title Import|BetterTouchTool)$" manage=off opacity=1.0
# Centered Unmanaged Apps - Without Resizing
yabai -m signal --add label=unmanagedAndCenteredApps event=window_created app='^(TestFlight|iZotope RX 11|MacWhisper|TrashMe 3|CrossOver|Find Any File|Keka|Bartender 5|DaisyDisk|Sideloadly!|iStat Menus|Problem Reporter|App Store|IINA|System Information|Dropover|System Settings|Alfred Preferences|X-Title Import|BetterTouchTool)$' action='window="$(yabai -m query --windows --window)"; display="$(/opt/homebrew/bin/yabai -m query --displays --window)"; coords="$(/opt/homebrew/bin/jq --argjson window "$window" --argjson display "$display" -nr "((\$display.frame | .x + .w / 2) - (\$window.frame.w / 2) | tostring) + \":\" + ((\$display.frame | .y + .h / 2) - (\$window.frame.h / 2) | tostring)")"; /opt/homebrew/bin/yabai -m window --move "abs:$coords"'
# Window Titles to Keep Unmanaged
yabai -m rule --add title="^(Audio Hijack Session List|.*Info|Copy|Robert|Trash|Open|Finder Settings)$" manage=off opacity=1.0
# Unmanaged Window Titles to Keep Centered Without Resizing
yabai -m signal --add label=unmanagedAndCenteredTitles event=window_created title='^(Audio Hijack Session List)$' action='window="$(yabai -m query --windows --window)"; display="$(/opt/homebrew/bin/yabai -m query --displays --window)"; coords="$(/opt/homebrew/bin/jq --argjson window "$window" --argjson display "$display" -nr "((\$display.frame | .x + .w / 2) - (\$window.frame.w / 2) | tostring) + \":\" + ((\$display.frame | .y + .h / 2) - (\$window.frame.h / 2) | tostring)")"; /opt/homebrew/bin/yabai -m window --move "abs:$coords"'
# ARC WINDOWS HANDLING
# I am not including sub-layer in this rule, since I apply a sub-layer=normal to all apps anyway. I know I can target the first created window with this.
yabai -m rule --add app="^Arc$" manage=off
# yabai -m signal --add app="^Arc$" event=window_title_changed action="yabai -m config focus_follows_mouse autoraise"
yabai -m signal --add label="arcrules" event=window_created app="^Arc$" title!="^Space [0-9]+$|^$|^Robert$" action="yabai -m window $YABAI_WINDOW_ID --toggle float"
# focus window after active space changes
# yabai -m signal --add event=space_changed action="yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id)"