Thanks go to Arcolinux for creating an edition of the Bspwm window manager that I was able to approach, after two years of trying other editions of Bspwm to no avail.
The idea of focus-follows-mouse is explicitly there in i3wm, but unfortunately mouse-follows-focus is not. This is one of the reasons why I am looking elsewhere.
After installing Arcolinux’s edition of Bspwm and booting into it, I found that it was surprisingly mouse-friendly for a tiling wm. You can flip two tiles next to each other by mouse-drag. You can also mouse-drag a tile from one monitor to the other.
The behaviour of Bspwm can be tested “live” (without having to change configuration) by typing its commands in terminal. The command format is
bspc followed by more options. For example open a terminal emulator, type
bspc node -t floating
and now it is floating. In the above line, “node” means the window and “-t” is alias for “–state”. Other states available are “tiled” (which is the default), “pseudo_tiled”, “floating” and “fullscreen”.
More states are available via “–flag” alias “-g”, such as “hidden”, “sticky”, “private” (non-resizing) and “locked” (unkillable).
Most of this information is in the
man page, while the rest is documented by the author on Github and by users across the internet.
Bspwm appears to be more snappy and comes with some important niceties. Particularly impressive is the ability to swap workspaces on monitors. I also like the layout of windows “as the leaves of a full binary tree” over i3wm’s container logic, because the latter lacks the ability to simply switch to a next window spatially or historically. However, there are also missing features in Bspwm that make me keep i3wm. For example, i3wm has and Bspwm misses:
In i3wm, workspaces are created and destroyed on the fly according to need, whereas in Bspwm you apparently absolutely must hard-configure them to specific monitors. This is very unfortunate because the “polybar” statusbar that is coupled with Bspwm cannot distinguish between an “active” workspace versus a “focused” one (important in multiple monitor setups) while i3wm’s statusbar can.
The combined titlebar in i3wm’s tabbed mode is particularly informative. It could still be improved further, but I do not know of anything similar that comes close in other window managers. In Bspwm, no titlebars are present and there is no native windows list or switcher.
Intelligent monocle mode
In Bspwm, when you switch to the monocle mode (maximised windows, so to speak), you lose the possibility to split another window or “preselect” the viewport. In i3wm’s equivalent mode you can start splitting or tiling at any point, while keeping other maximised windows in other containers on the same workspace.
In Bspwm documentation, scratchpad is described as an opportunity to set up something like a drop-down terminal window. This is an irrelevant non-feature. You can achieve something like a drop-down at any point by toggling the floating state. There is no need for a special configuration.
In contrast, i3wm comprehends scratchpad as the location of “hidden” windows, equivalent to minimised windows in stacking window managers. Windows “placed on scratchpad” (i.e. completely hidden from view so that they are not placed on any workspace) can be retrieved in cycling order in floating state. To be sure, Bspwm also has a hidden state for windows, but it behaves with an important difference: A window hidden in Bspwm shows up in Rofi – and in Xfce or other such statusbar, if you use it with Bspwm -, but it cannot be switched to in Rofi or on the statusbar. In Bspwm, you can use Rofi to recall that the hidden window is there, but you must use other means to switch to it, while in i3wm you can switch to the scratchpad windows via Rofi just fine – or by cycling without Rofi, something not possible in Bspwm.
Back-and-forth is an intelligent toggle of focus in i3wm. For example, when your currently focused workspace is number two, then issuing the command equivalent to “focus workspace number two” switches to the historically last focused workspace. Similarly, windows can be moved: Issuing “move this window to workspace number two” when the window already is on workspace number two, the window would be moved to the historically last focused workspace. There is no equivalent of this on Bspwm. The only thing I wish is that i3wm would extend a similar feature to focusing back and forth between windows too, not just workspaces.
Anyway, even though there are several aspects to Bspwm that make it warmly recommendable, there are also missed opportunities in comparison to i3wm. Still looking for the perfect desktop.