Switching to the i3 window manager
vincent.bernat.ch
vincent.bernat.ch
Now I'm a truck driver. Bought a new laptop awhile back. Don't have time to fiddle (drive, eat, sleep) so I left the default Mint desktop.
Right now I'm being unloaded at a distribution center in Alabama. They tell me it will be 5 to 6 hours until they're done. No labor on Labor Day, I guess.
So I'll install Regolith, based on a couple comments here, and see how that goes.
I actually kinda miss fiddling.
What did you do before and why did you become a truck driver, if I may ask?
Been driving three years and change. I mostly like it. I've never had a meeting, standup or otherwise. I miss my couch, weekends and the money. But it's pretty low stress. No SO, and my son is grown.
Personally, the one thing that saved me from going crazy during the pandemic were precisely those standup meetings (via Zoom) – otherwise I probably wouldn't have had any human interaction for months. But I suppose it all depends on who your colleagues are.
Commence fiddling in three ... two ... one ...
EDIT: One thing I like immediately is the little shortcut hint menu on the right. I first expected to be able to click each hint, and have that action happen. But it doesn't do that. It doesn't do anything. You have to actually read the hint, and type the displayed shortcut, thus forcing you to learn the system. Not tough love, just firm love.
The base config is full of sensible defaults and the learning curve for shortcuts was relatively short for me. I use it alone as my WM with picom as compositor (which is unnecessary) and no DE. I've never looked back and whilst there are some alternatives in win/OSX, I miss it so much when I have to use a Mac or boot into Windows... having to constantly move, resize and fiddle with app windows is such a pain I'm glad I don't have to worry about with i3.
Bonus tip: I recently switched from i3status to i3status-rs[1] which provides an excellent status bar for i3 (developed with Rust, which I hear is apparently a major selling point for many). I'd strongly recommend this.
Linux is my daily desktop+laptop driver for work and personal life, and i3 is the main reason for this. To me, DEs are full of bloat. I would stress, though, that it's not for everyone at all.
[0]: https://i3wm.org/
1. Per display xrandr settings, or xsettings
2. Statusbar losing tray icons when switching screens or reloading. Tray icons having the wrong size or not showing up at all. Part of the reason is that all tray icons used to be Xembed based. Then came appindicators with KDE having KStatusNotifierItems which may just be a Freedesktop StatusNotifierItem implementation. Polybar too frequently had this issue[0]. The only third party statusbar that properly implements this with using sni-proxy is a haskell based one which's name I forgot which is hard to use on Archlinux if you use the dynamically linked haskell packages.
My compromise right now is to use lxqt with i3, which seems to be a somewhat lightweight wrapper around xsettingsd and a lightweight session implementation.
I really prefer Awesome's tiling mechanism over i3, but i3's multiscreen just works. No weird window disappearing bugs etc.
A lot of these issues seem to have been fixed inside of Gnome directly or inside of KDE, but for some annoying reason every DE seems to have to solve these issues from scratch, which is just a standard Linux issue. I've been using linux as a DE for multiple decades now, so you'd think these issues would be fixed at a more fundamental level at some point, but no ...
I did experience some issues with statusbar losing tray icons, intermittently, which curiously disappeared perhaps about the time I switched to i3status-rs. Whenever it happened, an i3-reload was the hotfix for me. I don't really use or rely on those icons much at all - in fact I could do without them entirely.
I've tried many things for both macOS and Windows to get that "i3wm feel" but nothing quite scratches the itch. macOS can get close but sadly requires disabling security features in macOS for deep integration and that is something I don't care to entertain personally. So I make do with macOS's Spaces and Magnet (a nice third party application for hotkey window 'snapping', there are good free/oss alternatives also such as Spectacle).
Windows 11 is getting some more powerful snapping options plus Microsoft's Fancy Zones PowerToy is quite nice although a far cry from i3 or similar.
When on a laptop a twm is freakin' awesome* as dealing with overlapping windows is such a pain in the ass on a 13-15" screen. Is a little sad when I see people fiddling about to get two or three windows resized using a trackpad.
Hopefully with the enhancements in Windows 11 we will see more progress towards automatic window layout and management . While unlikely it would be nice if Apple take note for Microsoft's changes also.
*pun intended ;)
But it does not work like i3. You predefine the layouts (which can be dynamic).
It supports multiple monitors, multiple workspaces per monitor, multiple containers per workspace, multiple windows per container (stacks)
It also supports Windows 11 and comes with a batteries-included configuration sample that "just works" and is installable via scoop.
If there’s interest I could do a similar breakdown of my sway config, as certain software is X11 only (rofi, notably) but there are fantastic wayland native replacements.
I wonder why I thought it was written in rust.
How terrible of me not to check before saying that.
Wlroots is a bit of an extreme case as the API is mostly idiomatic to low-level C and not easy to wrap in safe rust, I believe the developers are also not keen on supporting C++ either. This is intentional design choice on their part, as "language-binding-friendly" C APIs usually tend to expose some kind of reference counting or smart pointers that make it easy to adapt to a higher level language.
In practice, though, I've found that I rarely want to write any hacks for i3 itself. But this article is very cool and I may use some of this stuff. The one thing I have spent some time on is my i3blocks config which has some things I like such as CPU/RAM usage monitors and ability to control pulseaudio (switch outputs, control volume etc.).
I use i3 at work but for more than a year now at home I've been using sway. I've had a few bugs with Firefox on Wayland, but currently it's all working very well. Sway is excellent.
[0] https://stumpwm.github.io/ [1] https://github.com/ch11ng/exwm
TLDR: global workspace span across all monitors. Changing workspace change for all monitors (Similar to what happen in windows & macos). In my opinion, it allows for a better separation between workspaces/tasks when working with multiple monitors.
It's an MVP/alpha software. Need some optimisations but it does the job (been using it daily for over a year now).
In both cases it's mostly careful staging to make it appear better than it is in real life (or when you're actually using your computer).
Haha this is a great line! I'm gonna use this on my friends :D
Also I loved i3 gaps for the look. Even though I don't like borders wasting space. It doesn't make sense.
So I've begrudgingly moved back to KDE. It's customizable and capable and is close enough to what I expect a DE to be without wasting my time too much.
The write-up seems like a decent introduction. It mentions that you can use alternatives to the i3bar, but you can also use alternate status programs. I like i3PyStatus as an alternative to i3Status. PyStatus lets you write custom modules to output pretty much anything you want to the status bar (whichever status bar you want too, probably, though I just use i3bar).
And that's why I don't use a tiling window manager. I prefer to use my brain for actual work, not futzing around with configuration and OS BS. I mean if it takes 3000 lines of code to make your friggin window manager work then you're doing it wrong.
I happen to like overlapping windows, it's just natural and free-flowing. I don't mind wasting a little space when I have a 6400x1200 desktop.
But honestly, the amount of mental energy the author seems to put into this is way beyond anything I would consider needed to use a tiling window manager. Just the base configuration with an application launcher installed is pretty much enough for most people.
And I have never in my whole live visualized the tree in my head. For me at least i3 is a simple and performance conscious way to use my small/old laptop screen, easily switch between the 10 virtual desktops and either use a stack or a side-by-side view. Sometimes I build a very, very simple tree if I use a ton of terminals at once.
I feel like these kind of 'I installed a new kind of desktop environment'-blog posts are just desperate for any kind of content that exceeds 'I installed it and fiddled around in the configuration file to adjust it to my keyboard and then it worked well enough. Over the next couple of weeks I kept adjusting small things to better fit my workflow. After a while I got used to the shortcuts. Oh, and I changed the background.'
My point is, you don't need to use a WM/DE like others are using it, but how you prefer to use it. i3 is flexible enough to allow many styles, so choosing to use it might be mostly about whether you think it can cover your preferences.
I still miss Musca and goomwwm. They didn’t require any visualisation of the hierarchy, things were just layer out next to each other without a hierarchy and just worked. It was very intuitive. Goomwwm went a step further: it’s not technically a tiling window manager at all, but rather a floating window manager (so you can have your windows overlap if you want) that happens to be usable as if it were tiling and that’s keyboard centric (but you can use mouse too if you wish). That really was the sweet spot for me and I often find annoying behaviour in i3/sway that goomwwm didn’t have (typically around movement and resizing).
I sometimes dream of updating the goomwwm codebase but I neither have the time nor the interest in learning winDow manager programming.
[1] https://github.com/enticeing/musca (original source and all documentation seems to be gone)
Now everything is fixed in muscle memory, and I certainly don't need to expand any thought arranging a workspace for some task. I can do it with even looking at the screen, so predictable and easy it is. I can't imagine doing the workspace arrangement out of muscle memory with a mouse.
I also like how customizable i3wm is. That helps with orientation even more. For example I have my browser instances running under different system users, to have some relatively strong isolation between various work environments, and i3wm allows me to highlight the browser name and show a system user name it's running under in the titlebar.
https://megous.com/dl/tmp/98179a60c08bbdb1.png
If a command running in a terminal fails or is still in progress I get notified:
https://megous.com/dl/tmp/bc3e6c16abad3713.png
I don't even need to switch between terminals to see if something succeeded, or is still in progress.
Small but invaluable productivity things that I can't get elsewhere, without sacrificing something else. :)
> it can feel quite overwhelming as you need to visualize the tree in your head
I find it strange that the author finds it overwhelming here. You don't need to visualise the tree in your head - it's literally there in front of you, visually, with clear UX cues and four very simple keyboard shortcuts. and that's if you even want to bother with the tree anyway - I need to nest windows perhaps once a month.
> I mean if it takes 3000 lines of code to make your friggin window manager work then you're doing it wrong.
This is exaggeration. 5 years down the line, my i3 config is 280 lines, perhaps 70% of which are default. Additionally, it is not your place to tell others they're doing something wrong. Perhaps spending n hours writing 3000 lines of i3 code actually saved someone 10n time over 1 year. How would you know?
> I happen to like overlapping windows
You can achieve this with i3 floating windows. I use them sometimes, works very well.
Echoing a few other comments here, regolith is just super convenient having sane defaults out of the box, along with all the other conveniences of having a desktop environment.
I really appreciate how well and in depth this article was, I’ll probably make a couple of changes to my setup based on it, thanks!
Is my paranoia justified?
Its rare that I use passwords outside of the browser now, but windows and mac allow system credentials to mitigate the same risks for desktop apps (the app must support it).
Mainly because bugs in browser extensions have led to easily exploitable bugs where the extension could be tricked into thinking it was filling the password for google.com, while the page wasn't actually google.com (dubbed Auto-fill sweep attacks on pg25 at https://aaltodoc.aalto.fi/bitstream/handle/123456789/27984/m...)
I have a feeling the i3 maintainers won't want to add a close button, however.
Here's my config files with a lot of i3 goodies: https://github.com/riccardomc/rcs
Maybe you'll find something useful in there.
https://docs.microsoft.com/en-us/windows/powertoys/fancyzone...