The advantage I've found with multiple monitors is the ability to independently switch the "desktop" that's showing on each.
I can have a desktop for coding, a desktop for reference docs and previews, another for working on non-coding tasks, one with general browsing, one for chat/email/calendar, etc.
I've not found a satisfying way (on Mac OS on my Macbook or with various WMs — Sway is my go-to) to quickly replicate this ability to have multiple task oriented sets of windows visible at the same time and make them quickly switchable without multiple physical screens.
I may be misunderstanding your description, but isn’t this how macOS built-in spaces already work? I use this daily, and swap desktops with ctrl+left/right and the ctrl+num keyboard shortcut to get direct space switching (I have 4 for roughly the same purposes as you describe). When using multiple displays, I can even make each display have independent spaces.
It's exactly how it works but only if you have mutliple screens.
My comment was that, for this reason, 2 or 3 smaller (ish- ~27") 16:9 4k screens [1] (previously, 4–6 even smaller 4:3 screens) works much better for me because I can switch the spaces on my Macbook and i3/Sway virtual desktops on my Linux machine individually for each screen.
If we're talking about having a smaller number of giant screens it would need to be able to be partitioned into logical "zones" for virtual desktops to enable this way of managing sets of windows together, and I've not found anything that really does this, let alone does it well (though honorable mention to HerbstluftWM [2] which I think, with patience, could probably do something pretty close).
[1] preferably 16:10 but that seems to have died out as an aspect ratio :(
I'm in complete agreement with you. I use i3 (still using Xorg) and find the ability to have multiple desktops that I can move atomically between monitors to be far better than having to position windows individually. I put reference material, chat, etc, on the side monitor and then can very quickly move it back to the primary monitor when I need it. I find a normal 16:9 monitor to be just right for two side by side windows, or a tile of three, with one tall window taking half of the screen and two terminals top and bottom on the other side.
I hate using the mouse to manage windows, and having one huge ultrawide just feels like a nightmare to manage -- I'd need some way to split it logically into 2 or 3 virtual monitors.
With i3/Sway having the limitation of 1 workspace per monitor AND each app only being in 1 workspace, I could still use that logical splitting at times even on normal 16:9 displays.
I do this too. Main monitor has sets of desktops for “primary” tasks (e.g. IDE windows) while the secondary has several “auxiliary” desktops (one for email, one for chat, one for documentation, etc).
The ability to mix and match these between monitors is seriously powerful and basically eliminates window micromanagement and seriously curbs alt/cmd-tabbing. Everything stays put as switching desktops becomes the primary form of navigation.
How would you organise such a multiple display setup in sway?
I use sway on my laptop only, but Gnome 45 and macOS is easier for me, for now. When it comes to multiple displays. The best feature of sway for me is the ability to assign apps to their workspaces, and also assign hotkeys to these workspaces. So e.g. cmd+alt+e opens Files app (nautilus) and it’s always on its files workspace that I activate with cmd+e. Quite very useful for me. I almost never open windows tiled, very seldom that I have two at one screen.
So with multiple displays, I am quite unsure how to organise that, which logic to apply here. Maybe I alt-tab out of old habit, but it’s so much easier, cognitively speaking, comparing to remembering all the logic for my multiple displays setup.
- Assigns the standard hotkeys to focus specific workspaces
- Assigns a hotkey for Rofi to filter and focus apps directly
- Assigns hotkeys to move a workspace to the current output/display
- Sets hotkeys to move a workspace 1 output left/right
Now I can quickly bring the most relevant contexts for a task to each display, and can also quickly switch to another context and back as needed.
It's not perfect, but it's pretty good. I'd like some apps to be on multiple workspaces, for example. And I am exploring the idea of a way to search for and bring an app onto the main display as a centered float temporarily then dismiss it back to where it came from with a single key — for example to bring up a Slack channel front and centre, reply to a message, then quickly dismiss it again.
I’m not sure what the high-level strategy is, but do note that there’s the
move workspace to output right
and so on bindings to help out. I’ll typically keep a workspace as “whatever windows I happen to have put in it, over time” and then I’ll bounce them around to monitors as needed.
I can have a desktop for coding, a desktop for reference docs and previews, another for working on non-coding tasks, one with general browsing, one for chat/email/calendar, etc.
I've not found a satisfying way (on Mac OS on my Macbook or with various WMs — Sway is my go-to) to quickly replicate this ability to have multiple task oriented sets of windows visible at the same time and make them quickly switchable without multiple physical screens.