-
-
Notifications
You must be signed in to change notification settings - Fork 670
Description
Hi all,
Thank you so much for yabai, it's the only reason I'm able to use a Mac at all given my RSI.
I have one more other issue I deal with, which is short term memory loss. I had worked around this in my Linux days by using XMonad, where there are only 9 spaces and you can put them on whatever space you like without having to "move" them - the displays sort of exist in a static order and telling a display to show a particular space doesn't change their order. For example, if I have 3 displays, and * marks my focus:
[ 1 ] [ 4* ] [ 7 ]
- alt-8 // switch to space 8
[ 1 ] [ 8* ] [ 7 ]
- alt-r // switch to right monitor
[ 1 ] [ 8 ] [ 7* ]
- alt-4 // switch to space 4: automatically moves it to right display
[ 1 ] [ 8 ] [ 4* ]
- alt-8 // switch to space 8: swaps with middle display
[ 1 ] [ 4 ] [ 8* ]
This way, all I need to remember is where I am and where I want to go.
I know Mission Control doesn't... work this way, and when I use multiple monitors I tend to just completely lose track of all my spaces very quickly, since showing them on different displays shuffles around the Mission Control index. I have used the labels @1
through @9
to keep a static order, which works nicely for preventing re-shuffling, but I have run into a few issues with the switching behaviour, namely:
- Spaces get randomly destroyed when you unplug a monitor (Keep windows attached to spaces as displays are disconnected and reconnected? #238)
- Swapping two spaces between the displays (the desired behaviour if the target space is visible on another display) seems literally impossible if both spaces are the last on their display
- Even if I were to create a temporary space, that's a) slow, and b) there seems to be no way to get the ID or mission-control index of the newly-created space, even from within C code
- Inserting a scripting layer to move the newly focused space to the current display works, but is agonizingly slow (requires too much
yabai -m query
and JSON parsing - half a second to a second of lag every time I switch spaces even if the spaces don't have to be moved to another display, or if there is only one display) - I've attempted to modify the C source to add an option for space-switching without display-switching, but it seems to get caught in a loop somewhere, flicking between two displays and ultimately crashing the scripting addition >_>. And even theoretically the approach still breaks down in the "swap" case when both spaces are the last on their respective displays.
I'm happy to hack on this more, but I wanted to see if anyone else was thinking along these lines, and/or had any ideas before I get too into the weeds.
Thank you <3
jneen