Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Not LukeShu, but I skimmed the guide for wmii from the WaybackMachine and found its idea of events quite unique and interesting (though I'm not sure I can think of a good use for it). i3 seems like it might have something like it, but that particular feature doesn't seem to be well documented.

Anyway, I wanted to ask you both, what do you like most about wmii that you'd miss by switching?



"Configuration as code" is a concept that really speaks to me. It's the ethos of Emacs (which I also use), and wmii does it as well.

<tangent>In fact, for a long time (now I'm not so sure) I even thought wmii did it better than Emacs: Instead of being tied to one language and one process, wmii exports everything as a filesystem, and you configure it by writing a program that inspects and modifies that filesystem. Instead of being tied to operating on in-memory objects in Lisp, you're operating on in-filesystem objects in the language of your choice. (Today, I still think configuration by exporting a 9p filesystem is a powerful idea, but I've come to realize some of wmii's assumptions are a little opinionated to where I'm less sure about "better than Emacs"). I'd previously used StumpWM, which is configured in Common Lisp and is very similar to Emacs; I wasn't very comfortable in Lisp (and am still not terribly comfortable in it, though much more than I was), and also at the time StumpWM wans't packaged in the main Arch/Parabola repos and wmii was.</tangent>

It's my understanding that most wmii users use one of the standard/example "wmiirc" scripts, and fuss with a few variables and make minor tweaks to customize it to their liking. My wmiirc (while inspired by the stock one), is written entirely by me. My code reads events from a socket on the filesystem, and then manipulates other files in the filesystem in response. It's like, even without taking the time to fully understand wmii's codebase, I feel like I have a very robust understanding of exactly what it's doing, as if I did understand the full codebase; because every action it takes is because of a line of code I wrote. And related to that, I'm pretty sure no other human in the world has their window manager keybindings set like I do; how it's configured is very personal and "mine".

I don't want a static configuration file, I want a dynamic configuration program. As a stupid example of "configuration as code": For most of the last 10 years I had a file of hex color codes to configure the color theme for wmii. Usually what would happen is I'd switch my Emacs color theme, then some time later adjust the wmii theme to match. A month or two ago, I got sick of that, and adjusted it to dynamically use `emacsclient --eval` to just query Emacs about the colors of its current theme, so I never have to deal with it again.


I would miss wmii’s layout model the most, specifically how the screen is divided into columns and each column is either stacked or collapsed. Perhaps there are other tiling window managers that work this way but I haven’t found one.

I would also miss wmii’s tagging which is incredibly flexible. I often have one window on multiple named tags (which are roughly like workspaces).


In i3/sway, windows are organized in a tree structure where application windows are the leaves. Non-leaf nodes are called containers and can be tiled vertically, tiled horizontally, stacked, or tabbed. Windows and containers can be either floating or tiled on the workspace. It seems like i3's layout model is a superset of wmii's.

wmii's tagging does sound unique if I understand correctly that you can have 1 window in multiple workspaces and correspondingly in multiple positions and sizes. Something like that sounds like it would be problematic for handling multiple monitors, though. If one window is to be in 2 workspaces, what's supposed to happen when you want to show both workspaces at once in separate monitors? Can't show the same window in 2 places at once with different sizes.


A wmii tag workspace encompasses all the monitors; if I switch tags on one monitor, it switches tags on all monitors; you can't show multiple tags at once.

In principle, wmii handles multiple monitors great; it's had Xinerama support the entire time I've used it (checking mercurial, since late 2008; first being included in a stable release in late 2009). Though, I've been discovering that it has some bugs with layouts that aren't just the monitors tiled horizontally. (That doesn't stop me from using it that way, just that there's some bugs for me to grumble at.)




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

Search: