koekeishiya / yabai

A tiling window manager for macOS based on binary space partitioning
MIT License
23.14k stars 641 forks source link

Autocomplete interpreted as own window and tiled thereafter #1150

Closed torgeir closed 11 months ago

torgeir commented 2 years ago

Sometimes (?) popups like mouseovers in Slack are interpreted as their own windows and tiled according to the yabai configuration. This is confusing, and most of all annoying, as their presence is often time limited which makes the window layout "flicker" before returning to its normal state, when the popup dissappears.

An example from this morning:

lMwCMnZI

Explanation:

I have also seen similar issues in Emacs, where the e.g. the company mode autocomplete window is considered its own window and is tiled accordingly.

To resolve the latter one, I suspect being able to create rules that match on e.g. role could be useful to target these windows specifically. This is also easier to debug. For the Slack issue I have no idea how to go about it, nor how to debug it as it appears kinda out of the blue.

Suggestions appreciated!

yqrashawn commented 2 years ago

same things happends in chrome on my side

torgeir commented 1 year ago

I'm still seeing this, btw. How do you guys handle/cope with this 😅 Or is it just because I am running yabai with SIP still disabled?

Edit: I also creates a crazy flashing effect, because everytime the popover opens, it is tiled, which makes the mouse no longer hover the thing that opens the popover, so it is removed. But then as the popover is no longer shown, the mouse returns on top of what made it open the first time, making it appear again - and this cycles into infinity

koekeishiya commented 1 year ago

Make sure you do not have any rules that set manage=on globally for the Slack application.

torgeir commented 11 months ago

I see this from a lot of apps, also e.g. Chrome on all hover boxes that pop up (e.g. hovering over timestamps here on github).

Just to make sure I understand, are you suggesting I disable yabai's management of all these apps completely and toggle it back on with a shortcut? Or are there other rules to e.g. catch browser tab windows specifically, so I can turn it on for all those windows automatically?

koekeishiya commented 11 months ago

yabai will automatically detect if a window should be managed or not, when the layout is set to bsp/stack. manage=on exists so that the user can force windows that misbehave, to tile (as written in the docs -- e.g Emacs and other cross platform applications where macOS is not the primary platform usually have these issues).

If you absolutely need/want to use manage=on in your setup even though the applications do not misbehave originally, at least add a filter for role=AXWindow and subrole=AXStandardWindow to limit the kinds of windows that you are telling yabai to manage. On macOS everything on screen is a window; a menu is a window, a tooltip is a window, a context menu is a window, etc.

https://developer.apple.com/documentation/applicationservices/carbon_accessibility/roles?language=objc

https://developer.apple.com/documentation/applicationservices/carbon_accessibility/subroles?language=objc

torgeir commented 11 months ago

Seems like I at some point in time started expanding my yabairc file, that initially was just a bunch of manage=off combined with layout bsp, to also add a bunch of manage=on that seems to be the cause of this issue.

After removing all manage=on and rather removing management conditionally for windows that I don't want the default bsp layout for in yabairc, this issue goes away.

Thanks!