As much as I love i3 window manager, I am getting more frustrated as I get to know it better. The issues with window focus are piling up.
The behaviour I would like to achieve:
– focus windows upon mouseover AND
– when switching windows by keybind, the mouse pointer should follow along AND
– new window should open up on the output where I initiated its process, instead of following along when I changed outputs between initiating the app startup process and the app window opening up AND
– new window must not steal focus.
The relevant settings in my i3wm config are:
focus_follows_mouse yes
mouse_warping output
focus_on_window_activation none
Of these, only the first one works as desired.
The second one perhaps could work as desired, if it had the option “window” or such. Unfortunately i3 provides only two options, “output” and “none”.
The third setting does not work at all, perhaps due to combination with the others. New windows keep stealing focus.
There is also a fourth setting, no_focus, that has to be completed with parameters like
no_focus [window_role="browser"]
And this fourth setting really works to prevent focus-stealing. But should I set it up for all window roles and classes? How silly!
In short, mouse warping and focus functions are woefully incomplete in i3wm. Openbox has more options that actually work. For example, in Openbox a new window can open on a set output or “undermouse” or on active output. The last option, combined with no-focus for new window, would open the new window where its process was initiated.
Qtile, another promising tiling window manager, does not have any mouse warping functionality at all. Somehow the user must find or construct his own.