nikitabobko / AeroSpace

AeroSpace is an i3-like tiling window manager for macOS
https://nikitabobko.github.io/AeroSpace/guide
MIT License
5.82k stars 90 forks source link

Windows not auto tiling anymore (maybe related to Sanoma 14.6.1 upgrade?) #499

Closed tobalsgithub closed 1 week ago

tobalsgithub commented 2 weeks ago

I'm seeing very weird behavior this morning after my computer updated to macOS 14.6.1 last night. Most of my windows are no longer being positioned correctly.

Let's start with what still seems to be working.

  1. I can assign windows to workspaces just fine
  2. I can move to workspaces just fine
  3. It appears that apps are appropriately being auto-assigned to the right workspaces when they startup
  4. Aerospace seems to be starting up when my computer starts
  5. Any chrome window I have seems to behave perfectly

But weird things are happening within my workspaces and apps that aren't chrome.

I have a workspace for my Messages and What's App client, and I can't get them to automatically tile in any way (vertically, horizontally, or with the accordion). I also can't switch between them at all. I can still move them to another screen, but besides that, it appears that they are not under the control of aerospace at all.

I have a different workspace with a chrome window and an iterm2 terminal. In that workspace, I can switch between tiles appropriately, but the tiles don't align themselves as they should (they don't move at all unless I manually adjust where they sit on the screen). Not sure whether this partial working behavior is due to the fact that there is a chrome window involved or not, but it's definitely odd.

I have yet another workspace where I keep my Slack app, and for whatever reason, it keeps opening only halfway vertically. I can double click the title bar to open it full screen, but that doesn't feel like it should be needed.

Everything was working fine yesterday. Since yesterday, the things that I know of that are different are

  1. My computer upgraded to macOS 14.6.1
  2. I unplugged my external monitor, and then replugged it back in (the behavior above seems to be consistent whether I'm using an external monitor or just my laptop screen).

I love this tool, and I'm super thankful for you working on it 🙇

Here's my config

# Place a copy of this config to ~/.aerospace.toml
# After that, you can edit ~/.aerospace.toml to your liking

# It's not necessary to copy all keys to your config.
# If the key is missing in your config, "default-config.toml" will serve as a fallback

# 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'

# Possible values: (qwerty|dvorak)
# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping
key-mapping.preset = 'qwerty'

# 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
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
on-focus-changed = ['move-mouse window-lazy-center'] # Mouse lazily follows any focus (window or workspace)
# 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 = 0
inner.vertical =   0
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
[mode.main.binding]

# All possible keys:
# - Letters.        a, b, c, ..., z
# - Numbers.        0, 1, 2, ..., 9
# - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9
# - F-keys.         f1, f2, ..., f20
# - Special keys.   minus, equal, period, comma, slash, backslash, quote, semicolon, backtick,
#                   leftSquareBracket, rightSquareBracket, space, enter, esc, backspace, tab
# - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual,
#                   keypadMinus, keypadMultiply, keypadPlus
# - Arrows.         left, down, up, right

# All possible modifiers: cmd, alt, ctrl, shift

# 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-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'

# 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'
alt-a = 'workspace A' # Althea chrome profile
alt-b = 'workspace B'
alt-c = 'workspace C' # Code / Terminal
alt-d = 'workspace D' # Discord
alt-e = 'workspace E'
alt-g = 'workspace G'
alt-i = 'workspace I'
alt-m = 'workspace M' # Music / spotify
alt-n = 'workspace N' # Notes
alt-o = 'workspace O' # Other
alt-p = 'workspace P' # Personal chrome profile
alt-q = 'workspace Q'
alt-r = 'workspace R' # Reminders
alt-s = 'workspace S' # Slack
alt-t = 'workspace T'
alt-u = 'workspace U'
alt-v = 'workspace V'
alt-w = 'workspace W'
alt-x = 'workspace X' # Text apps (texts and whatsapp)
alt-y = 'workspace Y'
alt-z = 'workspace Z'

# 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'
alt-shift-a = 'move-node-to-workspace A'
alt-shift-b = 'move-node-to-workspace B'
alt-shift-c = 'move-node-to-workspace C'
alt-shift-d = 'move-node-to-workspace D'
alt-shift-e = 'move-node-to-workspace E'
alt-shift-g = 'move-node-to-workspace G'
alt-shift-i = 'move-node-to-workspace I'
alt-shift-m = 'move-node-to-workspace M'
alt-shift-n = 'move-node-to-workspace N'
alt-shift-o = 'move-node-to-workspace O'
alt-shift-p = 'move-node-to-workspace P'
alt-shift-q = 'move-node-to-workspace Q'
alt-shift-r = 'move-node-to-workspace R'
alt-shift-s = 'move-node-to-workspace S'
alt-shift-t = 'move-node-to-workspace T'
alt-shift-u = 'move-node-to-workspace U'
alt-shift-v = 'move-node-to-workspace V'
alt-shift-w = 'move-node-to-workspace W'
alt-shift-x = 'move-node-to-workspace X'
alt-shift-y = 'move-node-to-workspace Y'
alt-shift-z = 'move-node-to-workspace Z'

alt-shift-f = 'fullscreen'

# 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'

# 'service' binding mode declaration.
# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes
[mode.service.binding]
esc = ['reload-config', 'mode main']
r = ['flatten-workspace-tree', 'mode main'] # reset layout
#s = ['layout sticky tiling', 'mode main'] # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2
f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout
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']

[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap'
run = ['layout floating', 'move-node-to-workspace S']

[[on-window-detected]]
if.app-id = 'com.hnc.Discord'
run = ['layout floating', 'move-node-to-workspace D']

[[on-window-detected]]
if.app-id = 'notion.id'
run = ['layout floating', 'move-node-to-workspace N']

[[on-window-detected]]
if.app-id = 'com.apple.reminders'
run = ['layout floating', 'move-node-to-workspace R']

[[on-window-detected]]
if.app-id = 'com.apple.MobileSMS'
run = ['layout floating', 'move-node-to-workspace X']

[[on-window-detected]]
if.app-id = 'com.apple.MobileSMS'
run = ['layout floating', 'move-node-to-workspace X']
[[on-window-detected]]
if.app-id = 'net.whatsapp.WhatsApp'
run = ['layout floating', 'move-node-to-workspace X']

[[on-window-detected]]
if.app-id = 'com.spotify.client'
run = ['layout floating', 'move-node-to-workspace M']

[[on-window-detected]]
if.app-id = 'com.googlecode.iterm2'
run = ['layout floating', 'move-node-to-workspace C']

Checklist

<!-- Replace with `aerospace --version` output -->
aerospace CLI client version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201
AeroSpace.app server version: 0.14.2-Beta 0cb8dbdfc5ee73b8cbc200f175f467ebead55201
evgerritz commented 1 week ago

I just fixed an issue where windows from one app would tile nicely, but windows from other apps wouldn't join the tiling. (Only windows from one app could be seen at once in a tiling layout.) Fixed it by disabling Stage Manager in System Preferences → Desktop & Dock. Maybe this is your issue? Couldn't find any documentation on this issue anywhere, unfortunately.

tobalsgithub commented 1 week ago

I appreciate the suggestion! I already have Stage Manager disabled though :( I've tried uninstalling and re-installing aerospace but still seem to have the same issue where certain apps just don't seem to be under the control of aerospace.

tobalsgithub commented 1 week ago

Aha! I found the fix. The problem for me seemed to stem from the way I had my on-window-detected setup, specifically the run command.

I was doing this previously, which I'm sure I copied from some youtube video or something or other. That did appear to work at one point fwiw.

[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap'
run = ['layout floating', 'move-node-to-workspace S']

But I don't really want these windows to be tiling, so I changed it to just this

[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap'
run = 'move-node-to-workspace S' # See the change here!

And now everything seems to be working great again! I'll close this as resolved 🙇