Hacker News new | past | comments | ask | show | jobs | submit login
The Comprehensive List of Window Managers for Unix (gilesorr.com)
106 points by memorable on June 10, 2022 | hide | past | favorite | 82 comments



Openbox is not 'abandoned'. It is considered feature complete, bug free, and essentially a completed project[1].

[1] https://www.reddit.com/r/openbox/comments/ngqz4s/is_openbox_...


Checking the repo there're a number of PRs fixing bugs so it most definitely isn't bug free.


Then also not abandoned.


Assuming the maintainer actively merges PRs


And it's wonderful!

For me it strikes the right balance of simplicity, efficiency and customisation.


Had a linux break due to the hardware I was using, but now have i3 as my "daily driver".

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).


It can scale with the right setup, certainly better than overlapping windows. I've got a hierarchy of monitors (3) --> workspaces (10) --> windows (1 to 3 as you've described). For the terminal it goes further: tmux panes (8) --> vim panes (arbitrary number). Some of these elements in the hierarchy are named. Workspaces are fixed to a particular monitor to make finding them easy. It's been perfect for dealing with lots of applications and windows.


It's less hassle to change between more workspaces with few applications and one keybinding to select them than to switch between fewer workspaces and then alt tab or what have you between stacked applications.


It's literally the same amount of keypresses.


It's literally not. If you have 10 windows open that's up to 9 presses of alt+tab. With workspaces it's one press of whatever you have configured for the workspace, such as alt+1 (or 2 or 3, etc)


True, switching to workspace allows you to omit some keypresses since you immediately get to a smaller bucket of windows.

But then once you get the workspace you want, more keypresses are to get it in focus.


The maximum number of operations will still tend to be higher especially if you use the keyboard. You have to switch to the correct workspace, the correct monitor, and then the correct window. If the workspace has 6 apps on it you realistically probably wont want to alt tab up to 5 times.

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.


I use dmenu to switch between windows


How does that work? (I use dwm and use dmenu to launch programs.)


Sorry, it's rofi, not dmenu I had the names mixed up.


Ahh,OK.


Do you use i3 all by itself, or do you add base services from a desktop environment?

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.


In my case, I use i3 almost all by itself. I use some external services, mostly gnome, like:

- 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.


This is exactly the kind of thing I wanted to know. Thanks!


A window manager is only part of what's needed to get a full desktop setup. While desktop environments come with a bunch of programs preselected for you, a window manager really just manages windows. You essentially have to assemble your own desktop environment.

Afaik you can use i3 as a replacement for kwin if you want the i3 experience with a premade desktop environment.


you have to BYO some of these utilities, udiskie for external drives, ibus for keyboard layout. Stuff like wifi should be part of your init system, for me connman runs at start up no matter the WM.


Yes, I understand, but I've searched for this before and it is hard to find a list of the utilities that people typically use with i3wm or any other barebones window manager.


IME it's a process of "oh, I wish this happened" and then you search the arch linux wiki :)


You see a lot of beautiful setups with i3 or BSPWM on /r/unixporn. I did use i3 for a solid year but... it's just not for me. I loved being able to navigate everything with the keyboard but, honestly, sometimes I just want overlapping windows (yes that's actually achievable with i3 - but it's kinda hacky)


If you haven't checked out gnome-shell already, maybe that's something for you.


For me, the workspaces are actually a plus. It makes me think about the grouping of my windows. I usually have workspace for web browsing, another for IDE with possible terminal window and long running tasks or servers on the highest available workspace number, so it doesn't get in my way.


I end up having two virtual desktops for the same thing.

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.


Try tint2. I dislike the default settings but it’s nice once configured.


Love the look of tint2, but only having one clock is annoying.


I've used i3 on top of ubuntu 18.04 gnome for the past 4 years, and it's been mostly a positive experience.

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


>rofi (tui app launcher)

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 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

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.


> 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.

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!


> 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.

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.


> 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.

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.


What I like about Windows' way is that it brought the concept of tiling to the masses, by making it extremely intuitive for beginners (it does roughly what you already meant by moving a window to that half of the screen), AND easy to advance towards being a power user (use win+arrow to tile left/right, etc).

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...


I discovered i3 when looking for tiling solution and found it remarkably productive.


Ditto. But I think the issue is that it does things its way, so you have to be OK with not insisting on doing things how you used to. This was the biggest hurdle for me.

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.


Glad to see my window manager hasn't made the cut, the last thing I need is users...


> the last thing I need is users

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.


I'm using jwm. 200kb binary, single xml configuration, mine look like gnome 2 with 10 virtual desktops. I like that my desktop layout haven't changed since 2008, no UX designer annoying me with new fad every 2 years. Screenshot: https://files.catbox.moe/t6qyve.png


I'm also using something very stable, since years and years (so long I don't remember): I'm using the tiling "Awesome VM". 13 virtual desktops. One (keyboard) modifier assigned only to the WM and not anything else. I'm always putting my regular apps on the same virtual desktops: work email on virtual desktop '1', throwaway browser on '9', Emacs on '3', shitloads of xterms and cpu/disk/network monitors and whatnots on '5', etc.

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.


Is that a keystroke counter in the middle of a top menu bar?


Yes, a key logger running as root reading from /dev/input/... event file


The tiling window manager I finally settled on is simply dwm.

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.


I finally settled for dwm too nearly a year ago and I really can not emphasise how big of a deal the ~2,000 SLOC of code really is. It allows you to read it all in about an hour and once you have done that you will be “elevated” from user to developer. Now instead of desperately combing through manuals and guides with a fine comb you will just go “I could implement that…” now and then, which has been a game changer in terms of how I view software.

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.

[3]: https://github.com/jcs/xbanish


Your arguments have persuaded me to give it a try. Though I'll go for dwl - a wayland alternative based on wlroots to dwm.


The main feature that you've described is called (usually) 'tags' (windows have one or more tags and workspaces/viewports also have tags and a viewport displays all windows which have at least one of the viewport's tags). It is concept not specific to DWM at all and is much much older than it. Actually i3 and Sway feel like a big big regression in not suporting this concept even though they are so called manual tillers.

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 window manager list site:

http://www.xwinman.org/


About 15 years ago or so, I tried out just about every window manager on Linux I could find. I don't have any notes, but I recall that the majority of them were unstable. For anyone using this listing to find some WMs to try, comments on the stability of each would be very helpful.


Comprehensive is an accurate adjective. I occasionally try out different WM / DEs and always end up back at enlightenment. There are plenty on the list I've missed before. When I had a 3D monitor, I wanted to try a 3D WM. I didn't in getting one to run.


From the beginning, there has never been a cooler WM than Enlightenment. It brings back such great nostalgic memories of tweaking it for hours. Running CD ripping stuff, a Perl script for grabbing album artwork, and LAME encoding was my typical jam in 1998. In those days, I think I was running it on top of Gnome or something. These days, I've installed it a few times but, I've gotten old. I now am in the Honda Accord phase of life... so I just use whatever Gnome release is the latest.


I loved back in my Slackware/Gentoo days. But the last time I tried to run Linux on the desktop (on bare metal, in particular), I wanted to play with CentOS (just before the big changes). I ended up having to compile it from scratch, when was a fun challenge given that I was used to everything but RHEL-based distros.

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...


One useful feature of X is that you can start a GUI without a window manager.

It's quite practical for a public kiosk.


This is true, but you still have to position the window on the screen, you just end up doing it manually by forcing exact pixel coordinates. IME it's annoying enough then I'm surprised nobody's made... "fullscreenwm", a <1KB executable or perhaps even shell script that fullscreens the only window on the screen and then blocks forever. Or perhaps it exists or is such a trivial application of some window manipulation command line utility that it's unnecessary and I just haven't heard of it.



   xdotool getactivewindow windowmove 0 0 windowsize 100% 100%
should work. At least for the fullscreens the only window part.


For Wayland the cage compositor does the same thing.


Thought #1: WMs are obviously much too easy to write.

Thought #2: How about a meta window manager to run all those WMs in parallel and/or switch between them on the fly?


As sibling comment notes, you can switch between WMs at runtime, you just have to not exec the wm from xinitrc. Instead, you run a terminal emulator or whatever as the first X client, and then from there run the window manager like a normal program. I mean, I'm sure there are nicer ways to do it, but that worked for me.

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.


Any way of achieving this without opening a terminal? Presumably closing the terminal kills the WM?


Sorry; I know it can be done because I've seen systems (live CDs?) do it (they even had a nice menu where you could click the wm you wanted IIRC), but I never learned details.


Yeah, I’m guessing running startx without one, then executing one on top, that way X doesn’t cascade terminate when the session ends or something. This is something that would improve workflow in situations where I want to use a floating wm, without terminating all windows.


CTRL+ALT plus function keys to go to a console tty.


You can switch WMs on the fly, just terminate one and start another. X server and applications survive restarting/switching WMs.


What command do you use for this? kill $pid && openbox doesn’t work for me.


1: Not sure what you mean by that

2: It's possible. Some things support this for example compiz can be used to replace the running wm in place via compiz --replace.


Qubes is the best for managing VMs, it’s known as a security minded distro but it’s really the most well thought out VM manager I’ve seen. VMs are so well integrated.


WM =/= VM, in case you're curious about downvotes.


I have dreamed of trying a window manager where instead of work spaces it has can be scrolled side to side like a big white board where you can pan and scroll and even zoom out to see the whole work space . The closest thing I have found are some VR work spaces, does anyone have any 2d reccomendations. Would love to see if this would work for my work flow


You used to get that free by setting your resolution higher than what your screen supported. It was horrible.


For you maybe. It is a very nice feature.


I think what you are looking for is Cardboard: Scrollable window manager.

Here is a review: https://www.ctrl.blog/entry/cardboardwm.html


Minus the zooming part, a lot of the window managers from the late 90s/early 00s worked this way.

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.


It's not a window manager as such, but you might enjoy playing with Eagle Mode: http://eaglemode.sourceforge.net/


you can configure compiz to be exactly like this. there's a current project around keeping it alive/reviving it, in case you thought it was completely bitrotted.

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


See fvwm EdgeResistance.


Recently learned of Hyprland[0] a tiling WM for wayland that's kind of blingy and flashy. Looks interesting, I might install it

[0]: https://github.com/vaxerski/Hyprland


Without a feature comparison grid, this is difficult to navigate and make use of.


Olvwm is very nice but unfortunately very hard to find.


I love Olvwm, way back at university we had Sun workstations. I have run it on Linux, but I don't think it can be readily compiled for 64 bit architectures on Linux. Maybe I'm wrong and someone may have achieved it, but I have never seen as a binary. Still on of my favorites though.


ion <3




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: