The Comprehensive List of Window Managers for Unix
gilesorr.com
gilesorr.com
[1] https://www.reddit.com/r/openbox/comments/ngqz4s/is_openbox_...
For me it strikes the right balance of simplicity, efficiency and customisation.
I both like and dislike tiling windows. It's nice having stuff automatically take up non-overlapping space on the screen when you spawn new apps... but this doesn't scale. Even on a 32" monitor I almost never have any more than 3 windows.
Which means I end up having way too many workspaces (aka "virtual desktops") to compensate.
I remember using openbox back in the day, I've set aside some time to try it out again - a long with a new panel (would be a serious faux pas to use i3bar with openbox).
But then once you get the workspace you want, more keypresses are to get it in focus.
I would if I were still using say KDE hit a hotkey on the mouse to scale out, click a workspace, then hit a hotkey to display all windows on that workspace and select the correct one. This reduces it to 2 operations which isn't horrible but it still requires one to attend to the screen in between and pick up the mouse which makes the operations both more cumbersome and slower.
It's also very natural on i3 to have a lot of one application workspaces or one with 1-2 utility windows meaning most switching operations have exactly one stop something that you COULD do on KDE but people generally don't because the shape of the UI doesn't encourage it.
I3 has tabs, but I find tabs very awkward. their names get mangled "H[V[...]]", and half the time when I rearrange windows I end up just killing and relaunching them.
In the context of a laptop, I am thinking about things like: mounting external drives, power management configuration, network configuration (access to wireless networks), switching keyboard layout (e.g., US, US international), ...
(edit) Context: I did use i3 all by itself before, but always seemed to be missing something. Afterwards I switched to KDE which I do like, but i3 is snappier and a tiling wm is handy on laptops with small screens and/or older hardware.
Afaik you can use i3 as a replacement for kwin if you want the i3 experience with a premade desktop environment.
- polkit and friends (asks for a password when attempting to run some "admin" task)
- NetworkManager applet (for Wifi / VPN)
- blueman (for Bluetooth)
- udiskie (removable media mounting, with udisks2 behind the scene)
- dunst for notifications
- Rofi for launching apps
I don't use a keyboard layout switcher, but use the US Macintosh layout with level 3 shift for my non-English writing needs (produces dead-keys, like Lvl3+E / E -> é, mapped to the Windows keys).
I don't use a power manager, either. My laptop is happy to give me the same kind of battery life as in Windows with whatever the Arch defaults are.
Pros: - Updates are consistent, very rarely do I experience a bug - Configuration is straightforward and flexible; simple yet very customizable - Integrates well with plugins like polybar (customizable toolbar) and rofi (tui app launcher) - Easy to position windows across multiple monitors Cons: - Very barebones - Difficult to configure apps that use multiple floating windows, splash screens, dynamic docks (gimp, eclipse, teams) - Programs can grab focus way too easily - Lacks smooth transition of control between windowed and floating modes
I wished there was a wm that gave me the simplicity, stability, and snappiness of i3, but with better floating window support, and context menus to configure common window properties
But now I love it so much and have become so accustomed to its way of managing windows that I find myself mechanically reaching for my mod key whenever I'm on a different WM. I even find it irritating, when on macOS or Windows, to have to grab the window, move it around, adjust its size, etc. Bonus points for the new style Windows windows with controls integrated in the title bar and next to no area to grab.
rofi and dmenu are not TUI but built on top of lean native graphics APIs (`cairo` for rofi and `X11` in case of dmenu)
I think the "traditional" family of tiling window managers (like ratpoison, awesome, dwm, xmonad, i3, etc) are kind of simplistic in their assumptions that 1. they can at any time force any window into any size and position, and 2. they must always force every window into some size and position.
In my opinion, a good algorithm of where to place a window (and what size to use) would go like:
1. Where the user expects it (e.g. last position)
2. Where it doesn't obscure anything else (optimal use of screen real estate without forcing a specific size/position/layout)
3. Wherever the application thinks it's best (the WM should never need to hardcode/configure rules like "GIMP is like this" or "xcalc works best with that")
As for automatic tiling, I'm a big fan of what Windows is doing, and would love the traditional tiling WMs to iterate on this idea, while recognising floating windows as first-class citizens.
Interestingly I like tiling window managers due to specifically the opposite perspective, that applications are often selfish in their assumption that they can display themselves wherever they like and I much prefer ignoring their (usually-wrong) assumptions about what's best. I don't mean that argumentatively, just a different preference I guess.
In this respect I even agree with the first two steps of your algorithm - it's just that "in my tiling layout" is the result of both of them!
It really depends on your perspective I guess, but I'm of the exact opposite opinion: the window manager has no way of knowing what is the optimal size for an application window, because if it did, it'd be trying too hard to do the application's job. Say I'd like to display a picture in a separate "preview" window. The picture could be larger, or roughly equal, to the available screen space: in this case the optimal size for the window is to take up as much space as there is available (not necessarily full screen - you may want to keep another window open and visible). But if the picture is smaller, making a bigger window would just waste the screen real estate. The window manager has no way of knowing these things - it can either trust the application to make the right call, or disregard it, in the latter case making it the user's problem.
I work on a 43 inch screen and most "traditional" tiling WMs are completely unusable, precisely because their assumptions about optimal window sizes are almost always completely wrong.
In my opinion, even on a smaller screen, if you need your window manager to constantly "fix" what your application is doing, then the application sucks. If a window manager can only assume all applications suck, then it itself, must also suck for applications that don't. It's a no-win scenario - you need to be able to trust your software.
Is there a specific thing you're thinking about, or is it the "zone" style tiling (either the out-of-the-box approach of left / right / corner or the Fancy Zones)?
If it's the basic, I don't know how that could be automated once you're running out of zones.
If it's not automatic, then I think that's a quite different approach. Of course, no one has to like TWMs, but I think there's value in not having to really think how to set up your windows, and just let the WM do its thing instead of moving them around by hand.
However, I also think the concept of a pre-defined layout, combined with the WM remembering which window goes where is interesting. I tried this out at one point on Windows. But after some time I realized that while the zones I'd defined were mostly right, I sometimes wanted to change them. And that's not very straightforward, in that I have to go and change the config and the change now becomes the default. I haven't found a way of manipulating zones (or, ideally, groups of zones) in an ad-hoc manner, like I can with i3. Things like if I increase the size of this window, then its neighbor is reduced by the same amount.
I'm not a Windows user, so I haven't explored what else it's capable of, but that's exactly my idea of a good tiling WM: I don't want to read a man page or tweak a config file, I want it to do what I mean out of the box, and give me a linear return on investment for the time I spend studying the more advanced features.
I'm personally a fan and user of dwm for its simplicity and minimalism, but dwm occupies too much of my attention when all I want is "I want this window on the right, that on the top left, and that one below" - I have to think of masters, nmasters, layouts, all that crap; all while handling the floating windows sucks big time (can't even do it one-handed).
My Hammerspoon config[1] allows me to do that: cmd+opt+left pushes a window in that direction, cmd+opt+ctrl+left grows or shrinks it depending on whether there's space to the left of it, etc. I think it's still very far from ideal, but it's an interesting iteration and an improvement to a system that has no tiling at all, but excellent floating.
[1]: https://github.com/rollcat/dotfiles/blob/master/.hammerspoon...
The Window Manager in the Glade? https://jaracimrman.files.wordpress.com/2010/04/pub-in-the-g...
> The lawyer explained that my grandfather had been a notorious loner. He steered clear of everyone and couldn’t stand being near people. But as far back as anyone could remember he’d always longed to have his own pub. At first he opened a pub by the road to Písek. But people showed up. Then he rented a place on the square in Opočna, but they showed up there, too. And so he built this place.
It's minimal in its appareance: one-pixel border around windows, a tiny "useless gap" between windows (but not near the monitor's physical borders for the monitor's physical borders do, IMO, act as the "gap").
Been a happy camper since years.
I'm not totally sure if it's the best window manager of its sort. I find it more ergonomic than StumpWM, and I haven't felt the need to reach for the other tiling window managers out there.
A couple brilliant strokes in dwm are the alt-tab mechanism for swapping between workspaces rather than windows, and the idea that workspaces are actually just groups of windows which can be arbitrarily composed: more than one workspace can be selected at a time. In fact, alt-tabbing doesn't even swap individual workspace selections, but instead toggles back to the last such arbitrary group of selected workspaces. It's quite flexible and is under 2000 SLOC of C.
Biggest disadwantages of DWM are: That it does not have any normal plugin/extension/IPC mechansim. Applying patches to add features is not sustainable and yield conflicts. So much for flexibility. Also it is not a wayland compositor.
Another commenter mentioned the lack of an extension framework and that applying patches could lead to conflicts, but I think this misses a bigger point. If you find yourself applying a ton of patches, just stop, dwm is supposed to be about minimalism and frugality, do you really need those features? I am very happy and productive with three patches: statusallmons [1] (~5 SLOC), warp [2] (~10 SLOC), and my own not-yet-public Fibonacci-style layout algorithm with a bit more features to support multi-head setups nicely (~90 SLOC). That is it! Keeping it simple may have seemed madness to me a year ago, but I think I now “get it” in terms of the freedom it brings through lower complexity, greater understanding, and thus ultimately hackability.
[1]: https://dwm.suckless.org/patches/statusallmons
[2]: https://dwm.suckless.org/patches/warp
Look at warp for a genius example of dwm simplicity. Other WMs will track the mouse pointer on a per-display basis and I was tempted to implement this for dwm, but then I tried the warp patch which is stupidly simple: move the mouse pointer to the centre of the currently focused window if it is not already inside it. No need for state and together with xbanish [3] you will always know where the mouse pointer is, yet it will not interfere with you while you work. ~10 SLOC, yet so incredibly powerful because it managed to take a novel stab at the heart of a problem.
But a bunch of stuff was broken, and it was clear that Enlightenment had tried to reimplement a bunch of apps a la KDE/Gnome, and that development had stalled out. And that running a complex WM like that without a blessing from your package manager was a pain in the ass.
So I installed GNOME.
Nowadays, I just run Windows...
It's quite practical for a public kiosk.
xdotool getactivewindow windowmove 0 0 windowsize 100% 100%
should work. At least for the fullscreens the only window part.Thought #2: How about a meta window manager to run all those WMs in parallel and/or switch between them on the fly?
Alternatively, if you want to run multiple at once, you can run Xephyr, which nests X sessions, and then you just run whatever clients you want in each child X server, including the window manager.
2: It's possible. Some things support this for example compiz can be used to replace the running wm in place via compiz --replace.
IIRC, GNOME 1 had an option for this.
It didn't work that great because there just wasn't that much use for windows halfway between multiples of the screen size.
Here is a review: https://www.ctrl.blog/entry/cardboardwm.html
it's very subpar in other ways, you need to tweak it down to the last detail for you personal ergonomics, i personally use herbstluftwm these days