The worst "street-cred" I have is that I've been using tiling window managers for thirty-five percent of my life: five years with Sway and two with i3. As the realization of those numbers (and my age) dawns upon me, an irresistible urge wells up in my chest, threatening to overwhelm me. I try to tamp it down, but the urge is too strong—I must Give My Opinion.
This may be worse than finding grey hairs.
I switched to Wayland before it was cool, so a lot of stuff was broken, and I got used to it being broken, much like my entire Linux-on-modern-laptop experience. I was fine with Sway, since I had gotten used to the workflow over the years. After all, it was what all the cool kids online were using, and I was too young to make good decisions. I went about my life, going through most of high school and all of college with a tiling window manager, dismissing alternatives as straying from the One True Path set forth by anonymous forum-goers.
Until about a month ago.
Sway broke me (emotionally) with a click-and-drag issue where selecting text and dragging the selection (a pretty bog-standard thing people do with their computers) changed somehow to keep the selection happening after you released the mouse.
My decades of muscle memory stopped working—I felt lost, adrift on a rough sea, the hot sun bearing down on me. Would I (the bug) ever be rescued (fixed)? Only time would tell, but I was getting desperate.
At first, I thought I could handle it and someone would quickly fix the bug. Days turned into weeks, and I was losing my mind. The Sway IRC was silent to my pleads for help, and I had developed a Pavlovian response to clicking on text to highlight it—a burst of panic in my chest as I dread the mouse continuing to drag after I had let go.
Naturally, instead of figuring out what library made a breaking change and spending four hours running git bisect
, I decided to throw nearly a decade of muscle-memory and workflow refinements out the window. I was getting bored of Sway anyway. Let's switch to Niri!
For those unaware, Niri is a scrollable-tiling window manager: each workspace is an infinitely-wide strip you can scroll side-to-side on. It's easier to show their official demo video than to try to explain it with words (you don't have to watch the whole thing):
It was new, dangerous, risky, and most of all, really cool. I just had to try it, transporting me back to my youth distro-hopping and window-manager-hopping(?) with reckless abandon.
Off The Deep End, Again.
It seems to be a recurring theme, throwing myself into a new productivity-altering technology in March when I should be doing more important things instead.
It wasn't as bad this time around! Within a few hours, I had a setup that worked fine enough. Within a week, I had Niri working better than Sway, and I was greatly enjoying the changes (read: improvements) it brought.
Opening a window does not alter other windows: I can keep my focus and Firefox doesn't scroll to another dimension if I open a terminal in its vicinity.
Unlike Sway, Niri supports per-window screensharing, as well as "blackout window from appearing in screen sharing". I've been streaming my homework and it's much nicer without needing to worry about an email notification from my bank showing up in the top corner.
Niri's built-in screenshot tool is really nice, especially compared to Sway's recommended grim+slurp.
- Niri has increased my battery life by about two hours compared to Sway.
I was so excited about Niri that I tried my hand at adding a feature to its IPC for something or the other, and I greatly enjoyed it! Unlike Sway/wlroots, Niri/Smithay are written in Rust and are surprisingly accessible to hack on.
I genuinely can't see myself going back to a traditional tiling window manager, Niri just brings too many improvements to my workflow.
The Death of the Traditional Tiling Window Manager
Traditional tiling window managers have a side effect of forcing you to be as efficient as possible with your window layout. There is an additional cognitive load incentivizing you to optimize for the wrong thing: minimizing window reflows. If you don't find yourself constantly swapping between fullscreen and non-fullscreen views and running out of workspaces, you don't have very many windows open. Don't even get me started on tabbed/stacked layouts with nested containers, the least ergonomic Band-Aid™ for the space issue I've ever seen.
After many many years of optimizing for the wrong thing with Sway, Niri blesses me with the realization that I can have the speed of a traditional tiling window manager without the space limitations.
On Sway, I often had eleven workspaces open. Ever since I switched to a tiling window manager, I kept running out of space and added shortcuts to workspaces 11-20. I drilled it into myself to close windows when I was done with them, often losing my flow when I come back to the projects I closed, all to save imaginary space I feel should be infinite. With Niri, I can have three large projects open, various chat apps, a YouTube video, and three classes worth of schoolwork and never use more than five workspaces. The same setup would have me spilling into workspace fifteen on Sway, and I would quickly get confused and forget where I put my math textbook, switching between each workspace until I find the right one, often the very last one I check!
Wow, I did not realize how much repressed anger I had at traditional tiling window managers until now.
Given the variety of screen sizes and improved processing power I do not think that the traditional tiling window manager ought to be the power-user workflow of choice. It artificially limits space, forces content reflows, and does not work well with nonstandard monitor layouts.
If you are using Sway or another Wayland traditional tiling window manager, you should try Niri. Right now. My configurations are published on Sourcehut if you want to have a Sway-like experience with my keybindings.
Go on then, what are you waiting for?
Thoughts? Comments? Want to hire me? Feel free to get in touch!
I'm also on Bluesky and the Fediverse, if you're into me making bad puns.