Re: [i3] Switching workspaces when mouse touch the border of it

  • From: Michael Stapelberg <michael+i3@xxxxxxxxxxxxx>
  • To: i3-discuss <i3-discuss@xxxxxxxxxxxxx>
  • Date: Sat, 24 Sep 2011 13:00:26 +0100

Hi Bernhard,

Thanks for your willingness to implement a new feature.

However, I am not convinced that this is actually a good feature, for the
following reasons:

1) i3 is a tiling window manager, not a floating window manager. Therefore,
actually seeing the desktop should be a rare occasion, such as when
rebooting your computer. In general, windows will always fill your screen.

As we only get PointerMotion events (== the mouse pointer moved) when the
pointer is above one of our windows, this implies that the feature would
only work in the rare case of not having any windows. Then again, workspaces
don’t exist when there are no windows on them, so that would not make sense
at all.

To actually get PointerMotion events all the time, you would need to grab
the pointer, then decide if you want to handle the event or pass it to the
client. This is not very performant and sounds like it might introduce new,
subtle bugs (based on my experience).

2) Not so much a technical reason, but more a philosophical one: One of i3’s
goals is to provide an efficient user interface for power users. While using
the mouse pointer is faster for user interfaces / programs with which you
are not familiar (I can lookup the study if you want to), it is certainly
not faster as soon as keyboard shortcuts end up in your muscle memory.
Therefore, the primary input device when using i3 should be the keyboard.

In conclusion, I don’t think the feature you propose could be easily
implemented nor would it make a lot of sense. An alternative which comes to my
mind is a shortcut that works similar to the floating_modifier: Pressing some
modifier and using the scroll wheel to change workspaces. For this, I would
want to have a more generic "what should happen when I press mouse button X in
situation Y" configuration.

Best regards,
Michael

Other related posts: