4 ms·
I used to navigate workspaces spatially too, but then I increased to three monitors and the traditional workspace model broke down big time. Namely, switching t
by burntsushi 13y ago
I used to navigate workspaces spatially too, but then I increased to three monitors and the traditional workspace model broke down big time. Namely, switching to a different workspace switched whatever was displayed on all of my monitors. I couldn't easily compose groups of windows onto my displays.
The solution (for me) was to throw out a spatial representation of workspaces and adopt a more dynamic approach. Instead of being fixed to a set of N workspaces in a particular geometry, I switched to having a fluid list of named workspaces. What makes this work particularly well on multiple monitors is that each workspace can be viewed on any monitor. So for example, with three monitors, I have three workspaces visible at any point in time. And yes, I can flip the workspace on one monitor to the other monitor.
This ends up being great for my work flow, since I can maintain my work area for any particular project without cluttering up the rest of my desktop. For example, when I'm working on the window manager that implements this functionality, I might have a workspace called "wingo" for code. And when I want to switch back to working on the X client library for Go, I go to my workspace "xgb" and it has me right where I left off.
And of course, I have workspaces like "browser", "mail", "irc", etc. I have some temporary workspaces too, which are used for scratch work.
Any workspace can be removed. And I can add a new workspace with any name at any time.
If you're interested, this is all implemented in my hybrid stacking/tiling window manager: https://github.com/BurntSushi/wingo https://github.com/BurntSushi/wingo
(Similar features exist in i3 and xmonad, but both are emphatically tiling window managers.)