Anselm R Garbe wrote: > I tried different multihead approaches in between 4.9 and 5.1 with > dwm. I remember the following: [...] > You haven't mentioned my favorite approach:
* Currently, each tag is visible or hidden. Change this so that a tag can be visible on a specific screen. * Showing a tag on a screen that is already visible on another screen hides it from that other screen. Thus, a tag is visible on at most one screen. * If a window would be visible on more than one screen (because it has more than one tag, and one tag is visible on one screen whereas another tag is visible on another screen), then just show it on one screen. (The algorithm to determine that screen doesn't matter all that much, it can be optimized later.) * Provide keybindings to cycle between screens, or to focus a specific screen. (Given that most people will have a small number of screens, perhaps one keybinding to cycle to the "next" screen would suffice.) Perhaps I should have said "head" rather than "screen"? I hope you understand what I mean. Advantages: * Naturally handles adding/removing screens: If a screen has disappeared, there is no observable difference between windows that were hidden and windows that were visible on the screen that has disappeared. You show the tag and whether it was hidden or visible on another screen, its windows are then shown on the current screen. * Windows can freely move between screens by just showing its tag on another screen. * Matches my mental model of tags: a tag is a collection of windows that are semantically related and needed for a task. Sometimes I wish to work on a task on one screen, sometimes on the other. For example: I have a "development" task and a "information reading" task (web browser + mail client). If I am currently focusing on development, then it might be useful to browse the web or read some mail on the secondary screen. However, when I am actively working on email, then I might wish to do that on the primary screen. Challenges: * Need to do something smart with floating windows that are moved to another screen. (Need to adjust their geometry, basically.) * Not sure how much complexity that adds to the code. What do people think? Kai