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

Reply via email to