I used to use Awesome. And I3 before that. My young adult son would sometimes ask to do something quick on my laptop. Hilarity ensued.
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.
Originally SW dev, most recently SWQA. I rage quit my last job over a conflict with a dev manager. No one else was interested in me.
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.
Wow, that's quite a career change! Thanks for the insight!
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.
Yes, I do. But I happened to be in a rather lonely place (geographically) right when the pandemic hit. So outside of Zoom and telephone calls with my family and friends every other night, I wouldn't really have talked to anyone, had it not been for work.
Regolith installed, via PPA. Don't forget "sudo apt update." I forgot.
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.
When starting out with Arch Linux 5 years ago, choosing a desktop environment and/or window manager was one of the key decisions. i3's excellent documentation and principles[0] really sold it for me.
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.
I used to use awesome like the OP. I used bspwm for a while and am now using i3 as the daily driver. Here are a few of the issues that arise when using a tiling window manager:
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'm interested to know about your per display xsettings requirements. One of my key WM requirements is multi-monitor support, and i3 with i3status-rs works perfectly for me. Took a little bit of reading up and config though.
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.
Tiling window managers are great and they are the biggest overall UX difference I miss when using macOS and Windows vs Linux.
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.
I use it when I use OS X, but I find it’s not substitute for i3/sway. It’s better than nothing but I still greatly miss a “native” tiling WM when using it.
I have used Amethyst and it works alright but is still a long way from i3 or dwm. Mostly because dealing with different virtual desktops (Spaces) is quite janky as it isn't managed by the wm but automating macOS in ways it wasn't designed to be automated.
I have used yabai but unfortunately you need to disable SIP so it can inject the Dock.app process with some custom functionality. I forge the specifics but last I checked that had not changed so it was a no go for me.
I use Yabai without disabling SIP. It basically means some of the functionality won't work, but the main tiling stuff still works great. For me, the main feature that won't work without disabling SIP is commands to manipulate spaces and move windows between them, but I've got used to just using one workspace per monitor and hiding/showing windows as needed now anyway.
For my new job I had to switch to Ubuntu on my corporate laptop and I installed Regolith (https://regolith-linux.org/) on it which is basically i3 on top of Gnome (was using Awesome WM on Debian before) and so far it is a very pleasant experience 9 month in.
I have done no tweaking at all - never used i3 before but it has everything I need. It also has the Gnome config tools available which is nice to have in one place for changing things like volume and external display settings (fine to do it without but I am getting lazy with age).
Regolith is literally just i3 (plus Gnome) with sane defaults. FWIW, it's also slowly getting decoupled from the underlying Ubuntu infrastructure. Eg, here's regolith for Arch linux: https://github.com/gardotd426/regolith-de
Some of these things (compositor, notably) come by default if you use Sway, which is an i3 compatible reimplementation of i3 written in rust for Wayland.
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.
Not to come off like an ass, but honestly when I read 'rust' I laughed. If you knew how the founders of Sway feel about rust + the difficulties people have had with creating rust wayland compositors (particularly with wlroots), the idea of Sway being quoted as written in rust is almost satirical
I'm not sure what difficulty you mean aside from way cooler, please check out smithay/anvil if you want to see decent progress on a rust wayland implementation: https://github.com/Smithay/smithay
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.
I can't edit my original reply to you because I'm not on desktop right now and the mobile app I use doesn't support edits, but here's the response from the waycooler dev. Note he actually was talking about wayland as a whole, not just wlroots. Obviously it's just one take on the matter, but it's a credible one based on their background: https://github.com/baskerville/bspwm/issues/199#issuecomment...
I would take that person's opinion on smithay/anvil with a grain of salt as they are not a dev there. They are making steady progress so you can just check the code there. Maybe ask one of those contributors for their opinion?
I should have said just with wlroots. Though smithay isn't a full compositor. There's a BSPWM issue on github (I can't be assed finding it rn) about Wayland where the authors of waycooler explained their difficulties in creating a rust wayland window manager after someone suggested that the wayland version of BSPWM should be written in rust. The waycooler devs generalised their statement to the wayland protocol in general, but in hindsight what they were likely referring to was just their struggles in wlroots.
I really appreciate the detail on the "Remaining bits" part. I like the minimalism/simplicity of i3 and the philosophy of doing a few things well, rather than everything a bit, but it also makes it hard sometimes to know what pieces of the puzzle one's still missing. Especially since it's a puzzle with no unique solution, so I find it really valuable to learn of an additional perspective.
I've been using i3 for a few years now. I wouldn't go back to a non-tiling window manager at this point. Initially I was drawn to stumpwm [0] because it's built with Common Lisp and therefore very hackable. There is also exwm [1] which uses emacs, but I haven't tried it.
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.
i3 changed my life. As many workspaces as I want, any window arrangement I want, including full screen. No wasted space. Wrote my own script to add nvidia GPU information to the bar. Bound important programs like browsers and terminals to shortcuts. It's amazing, it just gets out of my way and I get frustrated whenever I have to use anything else.
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).
If you want to try i3 without all the work mentioned in the article checkout Regolith. It is an easily installable full desktop environment that bundles i3 with a launcher, notifier and other apps.
When I first started using i3 (which is also the first tiling WM that I used for more than an hour), I found the experience to be a bit annoying. By default, i3 uses a tiled layout which becomes cumbersome to use on a laptop monitor when more than two windows are open since each window gets very little screen real estate. My experience drastically changed when I set the default layout to tabbed, so that initially each window fills the screen.
Big fan of I3. This may sound superficial, but I've moved away from tiling window managers because everything just looks so ugly. There's something to be said for having a window at ~75% full size with drop shadow around it and a bit of your desktop background showing. It's easier on the eyes. I say this with a heavy hand on heart because I was an enthusiastic user and advocate for xmonad and I3 for several years.
I encourage you to browse /r/unixporn [0]. I my opinion, a nicely configured tiling wm can look just as good as a stacking wm. And people on the subreddit are happy to share configs, so you don't have to spend more effort than some copying and pasting.
A great write up. I used i3 for a while. Now I find myself back in Windows. It's easier to use but I do miss a full screen with no borders wasting space.
Also I loved i3 gaps for the look. Even though I don't like borders wasting space. It doesn't make sense.
FWIW I recommend everyone to try the `stacking` layout instead of `tabbed`. It makes navigation much more intuitive if you're mainly using horizontal splits: Left/right to focus your split and up/down to select a window from that stack.
Awesomewm is and always has been my favorite window manager. My biggest issue with it, i3 and other barebones WMs is that there are a lot of edge cases covered by traditional DEs that you suddenly have to solve yourself. And often they're things you first discover when you're trying to do a thing affected by that edge case and you waste a lot of time doing something other than what you actually wanted to do.
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.
I like to change things up. I try different DEs. I always come back to i3. The minimalism and distinct lack of ... stuff ... I just can't use full blown desktops anymore.
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).
> it can feel quite overwhelming as you need to visualize the tree in your head
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.
First of all, you are absolutely right. Using your brain for actual work and not futzing around with configuration is always a great choice.
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.'
This. The author is obsessed, but that makes it fun to read. I've been using i3 exclusively for close to a decade and never used a window placement other than 1-3 windows in a horizontal row; switching to tabbed layout when I want something fullscreen; and rarely, for specific applications, a floating layout. Rather, I use a lot of workspaces (16) and put windows in those that I expect to find them.
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've spent too much time manually moving, resizing and aligning windows before switching to i3wm and tabbing between randomly popped out overlapping windows is not exactly pleasant either.
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.
I came to filing window managers through musca[1] and then goomwwm[2] (Get Out Of My Way Window Manager) and then switched to i3 (and more recently, away) because both Musca and goomwwm haven’t been updated in years.
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.
I'm not trying to convince you, but I thought I'd just add my thoughts as an actual i3 user to some of your statements to provide a more balanced view to the audience.
> 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.
I used a heavily modified build of DWM for years, but when I discovered Regolith I moved to that. There is a third party project porting it to Arch.
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!
For those on KDE just wanna try a tiling-WM-ish behaviour, I found Kröhnkite[1] pretty neat. It cannot be compared to a real tiling WM, but it's nice to get a feeling what this is all about. DWM like behaviour is intended...
As far as I can assess this, I believe it is safer to do this instead of copying to the clipboard. The clipboard might be read by a malicious process while autotype with passmeni will only pipe the password to xdotool and that will generate keystrokes. it's only important to have the correct field selected before autotyping or you might end up googling your password :)
For general readers: Its pretty safe when done via a browser plugin to a website because the plugin both verifies the website (anti-phishing) and uses auto-fill rather than type (it directly injects into the target field rather than typing, so clickjacking isn't a risk).
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).
I use both browserpass, and pass and consider the pass+dmenu model to be more secure. I keep auto-fill disabled on the browserpass extension, and recommend doing the same for any password manager.
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 switched from i3 to Sway a year ago on my work laptop. I was looking into using Sway (instead of KDE) on my personal laptop too, but have had to drop it as Sway lacks the ability to load color profiles. I calibrate my screens for photo editing with darktable, so this is a hard requirement, so I guess I'll have to go back to i3.
I switched to sway last year when I bought a new laptop and had trouble with screen tearing on i3. It’s been working perfectly for me but I also haven’t done anything that needed me to load colour profiles. One thing I do still need to use X for is playing windows games with proton. They run extremely badly under xwayland (but differently badly: some run slowly, some have mouse resolution offset from screen resolution, some don’t accept input at all...)
Is there any way to add a close button (or any button) through the IPC mechanism? I know you can do something like $Mod+x to close a window, but I'd honestly rather just use a button. Maybe the button can have a tooltip reminding you what close is set to
I have a feeling the i3 maintainers won't want to add a close button, however.
When you full screen some windows that have window decorators turned on (like browsers) then they show the minimise, close, maximise buttons. However, I always try to use the built in hot keys for closing a program rather than unceremoniously killing them with the close client hotkey.
I'm on openbox (non tiling) and I'm extremely happy. I was on tiling wm before. You can do a lot with openbox. Now I open windows, not tabs, for browser pages. And search for window title to teleport. The spatial arrangement of 'tabs' adds a layer of mnemonics
Is there any WM that supports mouse use just as much as the keyboard? I love keyboard navigation, don't get me wrong, but sometimes I just want to lean back and navigate using just the mouse
I don't know, i don't understand how networking works with windows 10, and the memories i have of versioning with IIS (is that stuff still a thing on win10?) still makes me cry.
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.