453 comments

[ 4.3 ms ] story [ 358 ms ] thread
Sadly it's bound to X11.

The alternative for me was to migrate to sway[1] to have a similar environment in wayland.

[1] - https://github.com/swaywm/sway/

Sadly Sway is bound to wayland.
It greatly annoys me that wayland still doesn't have any solutions for synergy/barrier type software. I depend on it daily for using my desktop and laptop and it's tedious to make the switch as it currently is.
I've been meaning to try out barrier. How do you like it? Is it responsive/fast? I had synergy running across linux/mac machines a number of years ago and it wasn't super reliable back then..
I have been using synergy for 6 or 7 years. Barrier the past year. It works reliably, more so then synergy, and I'm typing this reply through barrier right now :) It also fixes a few quirks I had like xorg screen changes wasn't reflected in synergy and it would start having weird boundaries.
Ah good. Thanks, I'll give it a go today!
I made a program called rkvm which works on a level below display servers (works with uinput directly) and thus doesn't suffer from these problems. Currently, it only supports Linux and Windows, where only client support is implemented on Windows, but it works well for my use case.

https://github.com/htrefil/rkvm

Need server on windows and client on linux so this won't work properly yet for me.
Wayland has a bad case of security at the cost of usability. They've been adding protocols here and there but there are still obvious things missing. Last time I checked it wasn't even possible to create something like xdotool without relying on some nasty hacks.
And on top of that the “security” is useless because any software that runs as one's user account can simply do things such as ptrace the compositor or override the compositor in the PATH with a malicious one or LD_PRELOAD the compositor. As soon as malicious software run as one's own user, then that is that and it can do anything that the user can do.

The argument raised against this is that it should be used in conjunction with some measure of a sandboxing technique, and that X11 is “impossible to sandbox”, but X11 sandboxes exist: how they work is a proxy server that sits in between the sandboxed application and the real server that determines what to let through and what not, the sandboxed application thus believes it is the only thing running inside of it's own X11 server, which maps it onto the bigger one.

Then the counter argument is that that “doesn't count” and isn't “true sandboxing”, but that is the exact same technique that sandboxes that use Wayland use for say DBus, or PulseAudio, and has always been the standard way of sandboxing such daemons and servers.

That's always the highly theoretical argument that comes in to defend these promises that are false on a practical level “it doesn't count”, even though the practical result is the same.

All the ways to circumvent Wayland's security “don't count” even though they can all the same be used to compromise it.

I am quite convinced after having spoken with many a Wayland developer that nigh none of them actually care about the “security” they so often talk about: they care about a certain theoretical elegance of a “secure system" that only exists in theory but exists in no reality as something that actually has been practically realized. All the actual, effective, real world ways to pierce it are wished away with that they “don't count” as they don't exist in their theoretical dream world.

You are forgetting that you actually can sandbox and contain apps. Under X11, doing that and then giving the app access to the display is dangerous. Under Wayland it is not. This matters for Flatpak, Snap, firejail, etc.

I have seen multiple such arguments that you can “sandbox” X11 access, with no proof or really bad compromises; I don’t believe it.

> You are forgetting that you actually can sandbox and contain apps. Under X11, doing that and then giving the app access to the display is dangerous. Under Wayland it is not. This matters for Flatpak, Snap, firejail, etc.

I addressed this in my very post and forgot no such thing.

Firejail can and does sandbox X11.

> I have seen multiple such arguments that you can “sandbox” X11 access, with no proof or really bad compromises; I don’t believe it.

How is there no proof? it exists in Firejail at this moment..

The compromises are those which one has to live with on Wayland per sē: naturally things that need access don't work, and Nvidia card acceleration does not work.

https://firejail.wordpress.com/documentation-2/x11-guide/

This existed and happened long ere Wayland was even conceived.

What Firejail supports is nested X servers, which are complicated and often buggy. Last I checked Firejail itself only recommended using X11 sandboxing when dealing with hostile situations.

I consider having to use a nested X server, even one capable of forwarding, a huge compromise based on my experience with it.

Anyway, that did not exist before Wayland was even conceived. First of all, hardware acceleration in Xpra has been a relatively rocky story for a long time. Second of all, Firejail didn’t support using it until 2016.

If you want to keep buying borderline Linux-incompatible video cards and running an unmaintained display server, by all means try to jam a security model onto an inherently insecure client-server system to help justify it. As cold as it may be, the world will happily leave you behind. And if you don’t believe me, just keep waiting. Lots of people thought Macromedia Flash would stick around forever, too.

> What Firejail supports is nested X servers,

As in, a form of sandboxing.

> which are complicated

They are no more complicated than every other proxied daemon, as my original post very much explained.

> and often buggy.

Then I'm sure you can provide me with such a bug.

> Last I checked Firejail itself only recommended using X11 sandboxing when dealing with hostile situations.

Then I'm sure you can cite this recommendation.

> I consider having to use a nested X server, even one capable of forwarding, a huge compromise based on my experience with it.

I'm sure that you can come with an actual concrete example of a problem, because when I used it it simply appears as if the application normally ran in it's Window, and I would not be able to tell the difference had I not known.

> Anyway, that did not exist before Wayland was even conceived. First of all, hardware acceleration in Xpra has been a relatively rocky story for a long time. Second of all, Firejail didn’t support using it until 2016.

The first Firejail beta releases itself was in 2014, long after Wayland was first conceived.

The first Xpra release was in 2008, however.

> If you want to keep buying borderline Linux-incompatible video cards and running an unmaintained display server, by all means try to jam a security model onto an inherently insecure client-server system to help justify it. As cold as it may be, the world will happily leave you behind. And if you don’t believe me, just keep waiting. Lots of people thought Macromedia Flash would stick around forever, too.

I'm sure you'll tell the next man that proved you wrong that you “never saw proof” as well, and he will provide proof too, which you will just as dismiss with vague arguments of “It's buggy and a huge compromise, but I won't provide any specifics on which bugs, and which compromises.”

People that actually think that Wayland is the “future” that will replace X11 with this constant “features that many users need are insecure and they really don't need them.” are a laughter. As of this moment most user interfaces haven't even tried an attempt to make a Wayland port and aren't interested; the only noteable ports are KDE, GNOME, Sway, and Enlightenment, two of which had to add back many of the cut features to make their system work, but had to do so in incompatible, nonstandardized ways.

It must have been around 2013 when I first heard talk about how Wayland was ready and would leave X11 behind, and adoption hasn't increased much since then.

"Last time I checked it wasn't even possible to create something like xdotool without relying on some nasty hacks."

Well, there's ydotool for Wayland, but unfortunately it doesn't even have half the features of xdotool, and probably won't be improving much any time soon, since its README says "Since Jun, 2019, I have little time to maintain this project".

At this rate, it'll probably take another 10 or 20 years for Wayland to catch up to all the already-existing useful features of X.

If the submission was for Sway, it would be equally sad that it was bound to Wayland.

I think projects like this should link each other as alternatives though, to aid in discovery. Since they are for different protocols, I don't think they will lose anything by linking their "competitor".

I can see that sway mentions and links to i3, but I can't see anything similar from i3. Not sure if they haven't noticed it or if they are not fond of it.

Yep. I've been using sway for a year now and I like it more than i3. When I switched to wayland I also dumped nvidia which has generally been great, but I have had several problems with the Intel drivers, unfortunately. I run the stable kernel.org kernel and currently need to patch it so it works. But I'd rather run a system that I can fix then one I can't.
since sway and i3 are pretty much interoperable, I see no problems there.
Unless you like your steam accelerated on your Nvidia card. Granted, this was ~9 months ago, would be pleased if this changed in the mean time.
And sway does not do Nvidia.
Sway works with any GPU that implements the proper API on Linux. Nvidia has a bad case of NIH syndrome and does their own thing independent from other GPU manufacturers.

So it would be more accurate to say Nvidia does not do sway.

Yes, that's true. But something worth noting for chumps, like me, that gave good money to Nvidia in good faith.
I boot straight into the console and then have a setup where I either run startx or start_sway.

I love i3 and it was my first experience with tiling WM years ago. It is absolutely a radical break for me from all other WM's since tiling allows me to work in deep focus many desktops, 1 desktop per activity/task and my focus always on one thing not many.

Also wanting not to miss out on the future I moved to sway in parallel. I am literally in sway 90% of the time. The only difference is if I have to use video / webRTC screensharing or similar (usually in the browser), in which case sway will not work. This is why I maintain a dual system of both i3/sway.

Also I trust i3 to be more stable for when I am standing in front of a crowd or have to connect my system to a variety of different external beamers, monitors etc.

It sounds nuts to "maintain" 2 WM's but my configuration and workflow never deviates no matter which system I use even across upgrades of i3/sway.

When I plug in a new freshly installed machine I just fetch my dotfiles and have both i3/sway in exactly the same way as I'm used to ... It's incredibly easy keeping both around if one has to (or wants to). Bonus of sway is also that it has gaps support (which is cool on bigger screens, less important on laptops).

edit: both sway / i3 gave me no problems at all running them under restrictive environments such as LD_PRELOAD=libhardened_malloc.so (from GrapheneOS) and also work with under firejail without problems. I'll stop since it's anyway clear I am a big fan of both :)

>The only difference is if I have to use video / webRTC screensharing or similar (usually in the browser), in which case sway will not work.

Screensharing under sway works fine with firefox and chromium through xdpw.

> I boot straight into the console and then have a setup where I either run startx or start_sway

Interesting, I do the same thing but just use startx. I find it hard to find convincing reasons to move from X apart from it 'being dead,' which isn't very convincing to me. What benefits to you get from sway in your setup? Is it compatible with things like ssh X forwarding?

:) literally no reason other than curiosity and a strong will to get that yak shaved.

I don't hink X is dead for a while. There is a lot of reasons for application devs not to support sway unless a strong enough user-base from that camp justifies the effort. Consider also that some of the heavy lifting previously done by X is being offloaded to Sway.

My motivation to switch to it was because Sway claims that you can just drop in your .config/i3/config and sway will be compatible to it. (it's pretty close).

What I wanted was transparency (not via a clunky workaround like compton). Also a system that takes less of my resources while in use to also roll it out on 10 or 15 year old machines I own. Sway delivers here and also has less issues with screen tearing than X with my card.

Literally everything I needed previously worked in Sway (often with different commands, e.g. wofi instead of rofi, or grim for screenshots, Waybar instead of Polybar, etc)

anything else like tmux, ssh-forwarding and all things in the terminal work perfectly.

Sway is nice. Mostly a better i3, with great mouse support, easy multiple keyboard config, some aesthetic features, ... even the small tools around like swayidle, swaylock are fine.

The most difficult part was to find a good wayland terminal and I recommend “foot”, https://codeberg.org/dnkl/foot

i3 along with a few floating terminals with hotkeys is a dream setup for me. I have hotkeys for Guake, Terminator and Tilda and they position differently. I use the i3 scratchpad a lot too.

My current dev machine has been running ArchLinux + i3-gaps for a couple of years now. Very solid, and not a single update screwup so far.

Why do you need so many drop-down terms? iirc Terminator/Guaka supports either multiple drop-down or tabbed mode in drop-down right?
I usually keep Emacs opened on one general-purpose org file in the scratchpad, if I want to take a quick note or whatever. Works like a charm
I love i3 (though would switch to sway in a heartbeat if they sorted hidpi and xwayland together). Its only major flaw in my mind is that you will never be able to use someone else’s computer without feeling a seething frustration that it isn’t running i3 with your config...
> you will never be able to use someone else’s computer without feeling a seething frustration that it isn’t running i3 with your config...

That's why I try my best to cope with the defaults and change when absolutely necessary. It spares a lot of frustration when you use another config since you can always go vanilla.

Edit: quoting

But if they don't also do that, that doesn't help? (It just makes it slightly more likely that they do, or at least something similar.)
You can then revert back to the default config:

    mv ~/.config/i3/config{,.old}
    cp /etc/i3/config ~/.config/i3/config
> Though would switch to sway in a heartbeat if they sorted hidpi and xwayland together

Do you mean that XWayland doesn't support HiDPI yet? I'm told it's coming ... some day (in a few months).

Meanwhile even Chromium got Wayland support so the last laggards on my machine are the JetBrains IDEs.

> Do you mean that XWayland doesn't support HiDPI yet?

Correct. Emacs is my last regularly-in-use X program under Sway, and my god does it look horrid on a large HiDPI screen :-(

> I'm told it's coming ... some day (in a few months).

I remember reading that it's complicated and extremely un-sexy (because it's essential X work).

I recently switched from xmonad to sway and have been using this fork [1] of Emacs. See [2] for install instructions:

> We (@masm11 and @fejfighter) are going to push @fejfighter's fork to the fsf's repository, instead of my fork. @fejfighter's one is rebaseable and have English commit messages. See #23.

[1] https://github.com/fejfighter/emacs [2] https://github.com/masm11/emacs

Interesting I'm not having any issues with emacs on my 4k monitor. Similar chromium, which still runs on xwayland, I recall that things fixed themselves a while ago. I'm on opensuse tumbleweed, not sure it's because of this. A quick browse got me a a sway arch-package with hidpi xwayland here: https://aur.archlinux.org/packages/sway-hidpi-git/
"you will never be able to use someone else’s computer without feeling a seething frustration that it isn’t running i3 with your config."

How often do you actually use other people's computers?

I virtually never do, and in the rare cases that I do I'm ssh'ing in to them from my own computer which is running i3, so it's not an issue.

I'll never understand why every dev doesn't use tiling wms. Such a free productivity and happiness win.
I used to use a tiling wm but now that everything supports dragging windows into a side of the screen to make them take up half the screen, I find that my main usecase of tiling wm's: side-by-side windows, is handled well enough that I don't want to put up with the occasional annoyances.

The main pain point of stock ubuntu gnome for me right now is that when I open too many windows, my alt-tab becomes too cluttered, and it would be cool if there was a way to designate windows as background somehow (but not different workspace, I don't like workspaces), so that it would not show up in alt-tab. Ideally I would be able to have like 40 open windows of which just a handful are "active".

EDIT: The side bar could be used for bringing up windows if it didn't combine windows from the same program into one icon - a feature I absolutely loathe - seriously, I have a lot of empty screen real estate but instead you want to hide my windows behind a second click?

You might be interested by this Gnome extension http://gfxmonk.net/shellshape/
So this made me look into extensions more generally, and I ended up getting dash-to-panel which solves my grouping issue!
yeah, alt tab with many windows is a pain, but I've gotten use to just pressing alt tab, hovering my mouse over an app and releasing alt tab, I don't recall having to click. It's been great !
I can answer you from my perspective. I used i3 and also awesome for some time but they didn't give me real benefits. Instead they made the occasional floating window look and work crappy.

I use byobu(tmux) for managing my terminal splits, which is all i need. I also have removed any window decorations from my terminal. I have shortcuts configured in gnome which let me do the occasional side-by-side windows easily. I rarely use the mouse but I have the option.

Of course if you do a lot of crazy tiling like 3,3,2 or whatever, a tiling window manager might be a good idea. In my experience you just never need that. Maybe I am missing something.

From what I observer, they first give it a shot, but dont utilize multiple workspaces and give up
I think it's because most tiling WMs have a really steep learning curve, often not even providing basic things like window title bars or automatic lock/suspend, expecting the users to configure all that to their liking. Perhaps some sort of a gateway drug is needed, something can help introduce people to tiling while also providing good defaults and the usual desktop environment comforts (title bars with buttons, lock/suspend, volume and networking controls, a proper settings app, etc).
Because it doesn't really boost my productivity. I try to keep the number of windows opened to the minimum: Having more than 4 windows opened is counterproductive (at least for me) since it implies 4 different context I must switch between. I can handle 4 different windows opened easily without any tiling wms.

The windows I have opened are: - the terminal (at most 4 tabs as well... but here my terminal allows me to easily switch to any numbered tab I want) - the IDE (sometimes). In most cases, my IDE can be run on my terminal (e.g., Vim) - a web browser (again, I try to keep the number of tabs to a minimum... but here it's harder to do so) - anything else (usually nothing)

Another reason to not use a tiling wms: yet another dependency I don't have to take care (as in: configuring and updating it).

> Another reason to not use a tiling wms: yet another dependency I don't have to take care (as in: configuring and updating it).

In my experience, once you configure it correctly to your liking, you hardly have to touch it again. I had been carrying the same i3 configuration from Fedora 28 to Fedora 31, then switched to Sway. I had to make minor tweaks to adjust to Wayland and never modified it since then (now on Fedora 32).

> I can handle 4 different windows opened easily without any tiling wms

But you're still using a desktop environment to open these windows? Which requires many more dependencies and breaks more often IME than a twm, while being a huge solution to the simple problem of 'open 4 x windows' in your case. One of the things I like about twm's is the massive reduction in dependencies on my machine since switching actually

I used i3 for a 4+ years, then a few months ago I got tired of the screen tearing when I scrolled in Chrome and the screen showing a frame or two of checkerboard patterns (actually it's more complicated, like black pixel fuzz around text that used to be there) any time I resized or moved a window. Now I just use the built-in Ubuntu desktop environment (tried the Wayland version but Spotify and Discord don't work). Since most of the time I just have a terminal, Chrome or Emacs in full screen it doesn't even matter.

Starting compton (which seems essential for i3 but the documentation doesn't mention it) didn't help. Enabling some Intel drivers fixed the screen tearing but broke my multimonitor setup.

Also dmenu is garbage compared to program search in modern desktop environments, it's just search for bash commands, half the results arent something you'd want to run from your desktop and it doesn't learn.

It makes sense that it's not popular, most people have better things to do than read a manual and learn a new configuration language with 100s of options just to move windows around.

"dmenu is garbage compared to program search in modern desktop environments, it's just search for bash commands, half the results arent something you'd want to run from your desktop and it doesn't learn"

Try rofi[1]. It learns.

[1] - https://github.com/davatorium/rofi

Despite trying many times and many different tiling wms, it doesn't solve any problem I'm having. Basically every window manager (and Windows) lets me easily put two windows side by side in different ways and have multi desktops. Beyond that my editors, IDEs, and terminals support both tiling and tabs "internally". Between all of that all my tiling needs are more than met.
They do. Most IDEs behave like tiling WMs.
Because they don't know how to computer
If anyone’s looking to replicate this on OSX, check out yabai[0].

I have also been using skhrdc (same maintainer I believe) for key bindings and it’s an absolute blast.

[0]: https://github.com/koekeishiya/yabai

I used i3wm for years at a previous job, and my new job's policy is Mac OS only (everyone has a price). I use yabai as a replacement but it really is a hack. It works great, and I much prefer it over the suboptimal window management shortcuts/techniques that macos provides. However, it is much slower than i3wm, which is a lot more native than yabai which is a scripting layer over window management.

I really wish MacOS would just open up.

Same here.

What are the specs on your machine? I realized that yabai ran like crap on my older macbook retina 15" but on my current macbook 16" it works great. Same amount of ram 16gb but a better graphics chip.

https://regolith-linux.org for Ubuntu based on i3 is fantastic
For those that wish to have access with the control panel and other standard Gnome features under Ubuntu, Regolith is a godsend. It solves integration challenges in a smooth way without detracting from i3's strengths.
(comment deleted)
> Implement multi-monitor correctly, that is by assigning each workspace to a virtual screen. Especially make sure that attaching and detaching new monitors like video projectors works during operation and does the right thing. Also provide support for rotated monitors.

My wishlist would be to have this go further and be aware of inter-monitor, relative positioning as well. For example, I use the ⊢ layout (one rotated monitor on the left, one straight monitor right in front) and it's usually an unsatisfactory experience tiling windows for productivity.

Things I do on the vertically oriented monitor on the left are mostly reading documents or watching logs.

What you’re asking for feels like the antithesis of each workspace being assigned to a virtual screen, which says “these are physically disjoint spaces”. You seem to be seeking a move command that’s willing to violate this abstraction, penetrating workspace boundaries. (Or if not, I’m not sure what you could mean; floating windows are the only other case I can think of that could be affected in any way.) The only principled way I can see it working would be if you defined another nesting level above workspaces, so that screens were rigid splits on the greater part. This could probably work, but it doesn’t feel right to me. Certainly I never had the slightest desire for anything like this when I used two or mostly three monitors. I treated one as primary working space, one as secondary (mostly for communications), and one for things I might want to keep an eye on in the background from time to time. Occasionally I’d want to switch a window between the first two screens, but I would always want to use a workspace-shifting command for that; never (not once) would I have desired a move command. Very seldom indeed would windows shift to or from the third screen—they’d start there, live out their neglected lives there, and perish there at my pleasure.

I’m interested to hear what you have in mind.

Your assessment is accurate. I have realised I may be asking for something that is indeed the _antithesis_ for this project.

For me though, the two monitors are just one screen which I should have total flexibility over. And workspaces are a way to switch context -- to a different set of tasks.

The ⊢ shaped arrangement is the result of a tendency towards more squarish (than wide-screen) canvas. I still manage to find 16:10s (as opposed to 16:9s) in that vain.

i3 is great and it's almost a must for my productivity nowadays.

However, I would highlight, that it's ability to work in multi-monitor is huge selling point.

You would like to show something from an another screen, plug the cable, press suitable hotkey, and the workspace, that you were just working on, jumps to the new display. No need to move windows.

You go back to your desk and plug in the laptop. The workspaces will automatically jump to the monitors, per your config.

Next, you run to a meeting, the very same workspaces collapse back to laptop's monitor automatically.

There was no need to touch windows in any of these scenarios, And no more "I forgot the browser windows to the attached display" that has happened with some other systems.

Probably an unpopular opinion here, but I do not understand why people prefer tiling window managers. I prefer to have lots of windows open, and being able to position them how I want with the size I want greatly increases my productivity. Tiling window managers makes you conform to their way of working.
Imho the main advantage is the keyboard focused navigation

Edit: it is also lightweight, with proper power management (think TLP/Powertop) you can vastly improve your battery life.

Most if not all tiling window managers allow you to do that by switching to a floating mode.
That i3 has a floating mode is good, however it's not a good floating mode for a floating-based workflow.
>however it's not a good floating mode for a floating-based workflow.

It's made for "tilling incompatible" applications or stuff you want always on top, it's not made for a floating workflow.

For some people, that _is_ their way of working, and it works very well for them. I think it is mainly the quick access with a regular, predictable arrangement completely driven by the keyboard. Low resource usage is a bonus. It is like having some of the benefits of the CLI but in graphical form.
Some people are more productive if they don't have to think about positioning, sizing, and switching between a bunch of overlapping windows. Tiling WMs generally let you set up and save a configuration so that all your programs always open in the same place.
>Tiling window managers makes you conform to their way of working.

That's not true, i often just use the tab-mode.

Using tiling for a long time, i go berserk having to rearrange window's with the mouse, then one is over the other...etc, it a mess!

Totally agree. I'm a 100% time tabbed Sway user. I love the simplicity, lightness, and Wayland frame-for-frame correctness of Sway, but without having to do all the tiling stuff. I prefer all windows to be maximized all the time ala GNOME Shell.

For the uninformed, use Mod-W to switch windows to tabbed mode in Sway/i3. You can also organize virtual desktops in "workspaces." I keep web/music on workspace 1, terminals and IDEs on workspace 2, and email/msteams/office on workspace 3.

True, sometimes i use tilling but most of the time everything is maxed and tabbed, on top i "roll" thru my window's, on the bottom thru my workspace's.
I feel the same way. There are projects like EvilWM, which is still rather nice, that has the 1px border and looks alot like a tiling window manager.

As I get old, I started to look more toward simple Windows managers, like OpenBox. I really do like having the buttons, and a window border I can actually hit with my pointer.

Personally I think it would be fun if someone cloned Windows 3.11 and added a few ekstra keyboard shortcuts.

Hitting borders with a pointer is horrible. No matter the border size.

A few years ago I learned that most Linux WMs allow you to use ALT+RightMouse to resize your window from anywhere (sometimes WIN+RightMouse, usually configurable).

Having just moved from Ubuntu to MacOS, I really miss this. This, and Super + click anywhere to drag.

BetterTouchTool seems to allow the use of Super by itself to drag on mouse move, but in practice Super + click is way less prone to error.

while on topic of window adjusting shortcuts

I got way too used to Win+arrow keys for moving and resizing windows, inluding in multiple monitor setups. Any Linux WM that replicates these shortcuts?

Using Win+arrow I can minimize, maximize, make window stick to left or right half of screen or any of corners and move between desktops.

I think gnome has those shortcuts. TWMs let the first window fill the whole screen, with subsequent windows being opened next to that first one. Depending on the TWM there's a specific layout or you have to arrange the windows yourself. (i3 is the latter kind. Allowing for very flexible layouts, but more complicated than TWMs who follow a preset patter) TWMs are not built to minimise windows though. That's why there's also a heavy focus on using multiple workspaces. (i3s tab-mode is also useful where you'll have windows arranged similar to browser tabs)
Cinnamon has it, many more are configurable. Best enjoyed on Linux Mint IMO.
>Linux WMs allow you to use ALT+RightMouse

Ehm..thanks...thanks allot!

Wrt borders and title bar - most tiling managers support these (at configurable size), its just most users turn them off as the user is keyboard focused.
Being heavily keyboard-first (or only) is one of the reasons I've tended to bounce off of tiling wms I've tried in the past, despite liking the concept generally.

I tend to alternate between wanting to do everything from the keyboard and wanting to use my mouse heavily. I've never liked having to switch my hand between keyboard and mouse when I'm in the middle of something, so I usually have customizations for both input modes, eg FireFox addons for mouse gestures and vi-keys active simultaneously.

For window management I've always liked the idea of tiling wms, but they tend to have less mouse support than I'd like, or getting the support they do have to work the way I want is more involved. Ironically, I recall ratpoison being pretty good in that department, when I tried it years ago.

These days I use KWin (designed for a primarily floating workflow) with an addon script Krohnkite[0] to add automatic tiling layouts and hotkeys on top of the usual KWin behaviors. This lets me use all of KWins standard mouse features and extra niceties, but with decent tiling that required almost no configuration to get something that feels completely natural to me.

[0] https://github.com/esjeon/krohnkite

You might want to try sway which while being a tiling WM has mouse support to allow dragging windows around etc.
For me (and most, I guess) it’s about flow!

Switched to i3 on a nixos box a few months ago - never leaving the tiling vm, or nixos for that matter.

I suddenly use workspaces which I never used to and I have coms in one space (mail/slack/teams), terms with vim etc in one, and web browser in a third.

Never looking around for windows and draging stuff around is magical for the workflow.

With fzf and a launcher & window switcher my workflow have never been more streamlined.

Nixos helps as well, but that’s a different topic. :)

In my little world, I don't need more than perhaps a few windows at attention simultaneously, and working out how to space them when it does happen is pretty breezy. The physical metaphor of dragging stuff works for me, too, and—while the Vim folks might ridicule me—I think the computer mouse is actually quite excellent and fills in the gaps quicker than remembering keyboard shortcuts for some things. Also really great for when I'm drunk, because I'm not in the mood to play spy games with the desktop when I just want the window to go over there. I can afford the calories my arm burns in the drag-n-drop process.
Sway, the i3 clone for wayland, actually allows to use the mouse to drag and drop a window or group of windows. This is something supported in other window managers. The best of both worlds?

I agree that the mouse can be great and effective. Plan9 / Acme editor is a great example. I also like the additional buttons when browsing, you know, prev/next.

I appreciate the tip. GNOME 3, which I understand had a rocky start, has been honestly the most intuitive and usable desktop I've had yet, so I can't say I'm in the market for now. But it's always fun checking new things out, so I will keep those in mind.
material shell for gnome might be fun to try out. Its very easy to switch on and off from the gnome environment
Agreed! It's all about the workflows! The i3 API is really easy to hack on as well, which makes creating a specialized workflow really easy. I was working on a project that was hosted on AWS + k8s and had 3 different enviorments: dev/uat/prod. I added a tiny script in my .zshrc that would check the workspace name on startup and automatically configure kubectl and a bunch of other things to match the workspace name. So every terminal I opened in that workspace was automatically configured for that enviorment.

That was fine for one project, but I had to maintain a fair few projects so I ended up having to create groups of workspaces. I used this patch: https://gist.github.com/woodensquares/c1afc4fb56b4d9d21fa261... that lets you hide workspaces from the bar if the ended with a prefix(I used _boop because I'm a child). So then all workspaces names become <group_num><ws_num>:<name>_boop apart from the active group, which is just <ws_num>:<name>. If you are in group 1 and switch to group 3, 1:dev would get renamed to 11:dev_boop and 31:name_boop would get renamed to 1:name and get automatically selected.

I also have a "scratch" workspace that is always visible regardless of group, I called it "i". Since it doesn't start with a number, it doesn't get affected by the workspace groups script and is always visible. I usually just stick irc there and my music player so I can access it regardless of which group/project I am working on.

I'm still waiting for this proposal to go through: https://github.com/i3/i3/issues/3818 so that I don't need to use a custom build of i3.

I hacked it all together in one afternoon and it's been working ever since. Before this I really struggled to context switch between all the different projects I was working on/supporting. This made it much more managable and got me a bunch of praise for how quickly I can fix problems/answer questions. I can't imagine trying to do my job without this setup anymore.

honestly I don't understand free floating window managers. Faffing around layering is slow and leads to poor window experiences (rarely is a program designed to be partially obscured). Do you persist your layouts for a long time? Rarely opening windows?
I do prefer tiling window managers because positioning the windows is tedious work that I am basically forced to do when working with a non-tiling WM.
because I think having a lot of overlapping windows is hard to work with once you're used to fully utilize keyboard navigation and easily accessible workspaces.

When I'm on a Windows machine I spend so much time alt tabbing and dragging and resizing, I didn't notice it until I started using i3 on my linux machine. Five workspaces, bound to Alt 1-5, fully using the screenspace, I can almost not stand working without it any more.

"When I'm on a Windows machine I spend so much time alt tabbing and dragging and resizing"

There's at least one tiling WM for Windows (don't recall the name off-hand, but someone here probably knows).

It's also possible to run i3 itself in Windows, under Cygwin, though of course it will only manage X applications.

I either need a window positioned for active usage, or don't need the window visible at all.

A tiling WM not only enforces this (although it can switch to floating if needed), it handles positioning automatically so I don't need to fidget with positioning and sizing of multiple windows. It also minimizes useless fluff to make it easy to have even more windows operated in parallel.

Windows, macOS, GNOME and others do various degrees of tiling as a sign of the usefulness. Even fullscreen is just a special case of tiling with 1 window.

If you're a kind of person that always fullscreen things, you'll enjoy a tiling WM.

(I don't understand people that work with small floating windows. It's a waste of limited screen real estate, and means you don't get to see as much of what you're working on as you could. Suboptimal.)

> I don't understand people that work with small floating windows.

I don’t know for the floating part, I guess it is a personal thing.

But for the many small windows shown at the same time, it’s pretty useful when exploring and comparing texts, data, code, logs...

The floating part was critical, as it was about having unused screen space.

Tiling many windows (some being small) is what tiling is about.

> I don't understand people that work with small floating windows. It's a waste of limited screen real estate, and means you don't get to see as much of what you're working on as you could. Suboptimal.

I use a tiling window manager at home, but when I'm at work I have to use a windows machine. I often use vim to do stuff and when I do I usually keep it to 80x24 or 80x48 (my preference is 80x24 unless what I'm working on has a lot of long function definitions). If I'm working out of a single vim window (which I've built my vimrc around to some extent), I don't need to see a lot of info at the same time, so I can put that window at exactly the part of the (enormous these days) screen which is most amenable to my neck angle, and don't have to jump around the screen much with my eyes, which helps me zone in. I'll only go full screen if I have to analyze a huge CSV dump or something, where the lines are not kept to a sensible length, or occasionally when I use vimdiff (but even then I have my defaults set so that I don't need more than 120 width to use a 2 way diff effectively). Spreading my info needlessly across the real estate feels less optimal to me I guess

Have you tried static tiling window managers? For some reason those are much less popular even though I find them more pratical.

Where dynamic WMs constantly rearrange all the windows with every change according to some fixed layout, the static ones work basically like Vim's windows and buffers. Meaning windows are stacked above each other by default with only the first one showing, but with some shortcuts you can split horizontally or vertically and change all split dimensions.

I have used many tiling window managers and over time I gravitated away from all the dynamic WMs because they're just not flexible enough for the real world. They tend to work on the assumption that the user needs all windows on the screen all the time, and this does not make sense in many scenarios.

That's why you have 10 workspaces.
The only "workspaces" which behave correctly to solve this are DWM's tags, but in practice I find it much more cumbersome to pin windows to multiple tags than just flip through the windows, or as I often prefer, switching to a window based on fuzzy-searching its title - this has completely replaced my need for workspaces, just like I stopped using tabs in Vim once I figured out how to efficiently switch buffers.

Also, when I want to quickly open a terminal on dynamic WMs I have to setup a shortcut for a floating terminal if I don't want it to rearrange everything, while on a static WM I just open a terminal and it'll have no effect on the layout by default.

Ironically I find static window managers to be more comfortable to use the more dynamic my workflow and window arrangements are. i3wm isn't as bad because it doesn't enforce a fixed layout, but it's still more cumbersome once I want to quickly resize or swap around some windows on the screen.

>that the user needs all windows on the screen all the time,

Just press Super+w and all the window's (the new ones too) are arranged in a tab format.

Could you recommend any static WM?
I've tried both Ratpoison and StumpWM. Both follow a similar concept, but Ratpoison is more lightweight and minimalistic whereas StumpWM has a lot more features and is excellent with handling multiple screens(it treats all screens as separate splits of the same workspace, so it's easy to move around windows).
You see, I don't need to be able to position them the way I want. I have a python script that does it for me.

It recognizes apps that I have open and I wrote an algorithm to place them on the screen the way I want.

It also creates what I call scenes, which allows me to select from couple different dynamic arrangements of windows depending on what I work on.

I can also able to instantly decide what windows are on both monitors by having a simple script when I select a desktop and it is being brought to primary monitor and contents of primary monitor is pushed to secondary monitor. By pressing two key shortcuts in short succession I can almost instantly set any arbitrary windows on both monitors without moving my mouse.

Now, this would be difficult to organize on another WM, but is a breeze on i3.

I do think it comes down to personal preferences a lot. I've been tiling-only (save for a couple of secondary things) for over a decade and it's by far the most productive to me. Always having 100% screen used, no windows overlapping (apart from things like file dialogs, alerts and my "quake console"), and never having to touch the mouse for navigating/repositioning is great.

It works great both on a single laptop, and with 3 external monitors (of which one generally has a single workspace hardcoded). I fully utilize all 9/10 workspaces most days.

The only time it doesn't fit great is with e.g. GIMP that has several small windows for toolboxes and stuff - one can still target particular windows to be floating (either keybind at runtime or with static config targeting window names/classes/whatnot).

There's no way I'm switching away from Xmonad for my main workstation - but you do you!

"The only time it doesn't fit great is with e.g. GIMP that has several small windows for toolboxes and stuff"

You could try running GIMP in single-window mode (via GIMP's menu option: Windows -> Single-Window Mode).

It doesn't get rid of every little window GIMP has, as it'll still pop up windows for saving files, for example, but it's much better than multi-window mode, if you don't want to bother with lots of little windows.

Didn't know that, thanks!
Thanks so much! Didn't know that there was now a single window mode.
Yes GIMP is the one application, that really works poorly under tiling window managers. I've had a setup previously that would automatically layout the different windows (I think that was when I was still using awesomewm), but that also worked poorly. Has anyone found a way to work well with GIMP in a tiling WM?
sibling comment got us covered!
You may be talking about auto-tilers like xmonad. Those are the devil (joking, sorta). My favorite tiling window managers in order of preference would probably be exwm (emacs wm) -> stumpwm -> ratpoison -> i3.

These are manual tiling wms. So in exwm I can chose how to position and resize my windows any way I want. For example I can hit C-x 3 to split my screen in half vertically then C-x 2 to split one of the vertical splits horizontally. Now I have

  +----------+-----------+
  |          |           |
  |          |           |
  |          +-----------+
  |          |           |
  |          |           |
  +----------+-----------+
I can resize the vertical and horizontal splits, add or remove splits and cycle between the splits and the windows they display with regular emacs commands. The only thing you can't do is have windows overlap so you can only see part of their contents. i3 comes last in my preferences because it adds a bit more friction to this with it's concept of containers.

It seems to me like that covers 99% of use cases. I don't see very much value in being able to only see some of a window when it is being overlapped. Especially when if I need to see only a few lines of a window it would only be a few keystrokes away. Maybe C-o 2 C-x 3 C-x - C-x b window title which looks crazy but if you are a heavy emacs user with ace-window and ivy mode it's very natural.

I think this is the most popular setup for tiling window managers, I use my terminal windows in this configuration as well (on a separate display). However, on my main display, I can't imagine going like this, most because:

- macOS "Zoom" functionality already takes care of the optimal content size.

- For websites, above zoom functionality works fine, but I prefer to manually resize my browser, since nearly all websites today have responsive design, and resizing gets rid of all the unnecessary parts, like sidebars, large margins etc. All I have left is the content.

- Today most application GUIs are way too bloated. I usually disable whatever I do not need, and use the macOS global menu search functionality a lot. I can reach any feature I want with a few keyboard clack. This way I can use software with minimal screen estate.

- If things get a bit crowded, Mission Control (Exposé) feature allows me to see what's going on very easily. macOS trackpad features also help a lot, with intuitive multi-finger gestures to see MC, show desktop, or show individual application windows.

- As a personal taste, I like to take the desktop metaphor a tad more seriously. I like to have file clusters on my desktop without the limitations of a grid, and file them to a folder later on when I'm done. Imagining my desktop as a real desktop just makes me more productive. I really cannot imagine myself using any other system other than macOS or Haiku just for this reason.

> For websites, above zoom functionality works fine, but I prefer to manually resize my browser, since nearly all websites today have responsive design

If you've already reached this milestone of enlightenment and you're already using a tiling window manager elsewhere, I'd recommend you not make an exception for web browsing.

I don't even use a tiling window manager, just Gnome's rudimentary support for resizing a window and placing it to take up the left half of the screen or the right half, and I do easily 98+% of my browsing this way, with two half-width browser windows. (The rest involves temporarily maximizing a window because the website's layout is busted.) So browsing, too, is also very compatible with tiling.

Wow. I think this may be the first time in almost 2 decades that I’ve come across someone ego finds that Zoom actually works for them.
But KDE allows all this _and_ allows windows to overlap. There are keyboard shortcuts for "take the left half of the screen" and "move focus to the window left of this one". How many windows does a typical i3 user have open anyway?

For tiling terminal apps, I just use the tiling feature of KDE's Konsole, and used to use Terminator.

i3 and sway also allow windows to overlap, which is a very useful thing to do (eg for pop up boxes, pop up menus, etc.).

It’s just not the default.

If I want to work on N windows at a time, i3 handles their tiling semi-automatically. All windows that I’m not currently using are pushed into different workspaces.

"How many windows does a typical i3 user have open anyway?"

I have no idea I, just told you I use emacs as my window manager. Pretty sure that I don't come even close to any definition of typical.

A few things though. Every window manager I listed can do floating windows if you want. (Maybe not ratpoison) In my opinion overlapping windows is an anti-feature but it's possible for people with differing opinions.

It's a matter of workflow I suppose. I want tiling first. When I open a new program I want it to open in my currently focused tile every time. If I have a window in another tile, or not visible, I want to hit a couple keys and bring it into my focused tile. Not have to faff around switch to make a different window active and then re-tile it.

So sure you can use a floating wm as a tiling wm, sorta. And you can use a tiling wm as a floating wm, kinda. Pick the method you are going to use the most start there and then maybe throw in a little floating/tiling if you like.

I just wanted to point out about manual tiling managers. It seems like when tiling wms come up people say they tried xmonad or awesome and didn't like it. I absolutely hate auto-tiling managers but I like other tiling window managers.

Thank you. My query was not only to you but also to the HN crowd in general, and a few people have answered back. It is interesting seeing the different use cases. Thank you.
(comment deleted)
Quick count of how many I used to have open.

10 Workspaces. 2 GTD workspaces (Personal and Work...I know you shouldn’t separate them, but that’s how I liked it). That’s 10 Windows total.

3 main development workspaces, each with 2 terminals. 6 more.

2 Secondary development workspaces with 4 Windows each (for running search/git/tail, etc). 8 more.

2 browser workspaces with 3 browser Windows total.

1 other workspace for ad hoc tools. 1 window.

So about 28 Windows on a single monitor.

I'm a devops/sre type so, on my main (ultrawide) screen I have a browser 50% right, then 2 columns of terminals (usually vim) 50% left usually with 2 per column, often 3, sometimes stacks of the same under each other. This can be duplicated across workspaces as needed for different codebases.

Often I'll find I need to make arbitrary layouts on the fly when debugging an issue or responding to an outage, I can do this without having to engage my brain or reach for my mouse.

Can you do the same with floating WMs? Absolutely but you will probably need to think about, breaking your thought process. For me the i3 just does what I need it to without having to engage my brain or reach for the mouse.

If you're already running Linux I'd highly suggest giving i3 a go, it's hard (for me) to explain how it changed the way I interact with my computer and how much it improved my workflow. I think about the closes I can get is that it's like learning vi, sure nano can get text into a file but once you're used to vi you're going to be far more efficient.

As a VIM user I completely understand the sentiment of just having the machine do what you want it to do without having to engage the brain. Thank you for the recommendation.
"The only thing you can't do is have windows overlap so you can only see part of their contents."

With i3 you can do exactly this by telling i3 to float a window. Windows can be floated automatically (by matching titles or other X properties) or manually through a keyboard shortcut.

For me it's the opposite. I find floating window manager like Windows, MacOS, Gnome, Kde really inefficient at managing screen space. Even more now that we have big screens. Tilling window managers for me brings a few things: * Almost never require to resize or position a window, the window manager optimise the layout for you. It removes the constant needs of organizing window * Combine with workspaces and multiple monitors makes working with a lot of windows so much easier * Finally, and this is the most important win for me, it is easy to manage everything with a keyboard. Even the few times I need to resize windows, it's such a pleasure to resize all the windows of the current workspace in one go with a simple keyboard shortcut.

It takes a bit of time to get used to it, especially since most tilling window manager I've used require a bit of customisation to bet to my taste but once I've been used to it, going back to clicking on menus, moving things around with a mouse or a touchpad is just not possible. I find this so inefficient, exhausting and, first and foremost, something that should be avoidable.

KDE actually can be a really nice tiling window manager. I use a script called Krohnkite. You can even turn off window decorations if you don't want titlebars. There are several other window management scripts that implement different layouts.
Gnome has a few plugins that adds tilling (paperwm which brings some interesting concepts, pop-shell which is quite good) but in the end I never found the experienced as polished as pure tilling ones. On Gnome i really dislike the fact that workspaces are only on one monitor OR span across all monitors. I really like my workspaces per monitor. I remember not liking how KDE was handling workspaces as well, but it's been a while I've tried so it might have changed since.
I'd wager that most people use a maximized window 95% of the time and only cascade windows the other 5% in order to drag things between them. That's the ideal scenario for tiling windows. You may work differently.

There are hybrid tiling window managers, like PopOS Shell. You can easily turn it on/off, including specific windows that you want to always cascade.

Most tiling WMs are highly configurable, so the idea is that you script them to your tastes and then they do the work for you.

I use a rather heavily customized version of dwm myself, and I have things like custom placement rule: I want my editor to be in a specific "workspace" (or tag, in dwm parlance), I have keybindings to focus my editor, my terminal or my web browser in one single keystroke regardless of where I am (I always cringe a bit when I watch colleagues feverishly alt-tabbing to find the window they're looking for), I have added custom "sticky" windows that appear in all workspaces etc...

It takes a while to set up at first but I think it's well worth it in the long run. When I have to use a normal desktop environment on a different computer everything feels clunky and more complicated than it should be.

At least some tiling window managers are very flexible. The only tiling window manager I have used for a substantial amount of time is Sway, and it doesn't actually make it any harder to move and resize windows however you want than it is in, say, Gnome or Plasma. You can move and resize floating as well as tiled windows with drag and drop, and you additionally have lots of automatic arrangement options when you need them.
For me, part of it was a touch of OCD about getting windows positioned just right. Especially terminal windows, I had to line them up, get them the same size, etc. I would spend a lot of time trying to get windows as large as possible, but not overlap, in order to use ALL the space of my monitor(s).

I tried out i3 for a while and generally liked it, but was never wizard-like with manipulating my tile stack. I could split horizontally and vertically, and swap around to a degree. Enough to get by and most importantly, line it all up and use all the space. ;)

These days, all the systems I use support the 98% use case I had for i3: either full screen, or vertical split (by dragging all the way right or left). I further discovered tmux so I can split a terminal window extra as needed. So, I haven't used i3 in a few years.

You mentioned you prefer lots of windows open? I'm 100% the opposite. I only want to see two at a time. At work I have two monitors and one is editor, the other is tmux'ed terminal, both maximized. Browser, maximized on one monitor. Document of some kind (pdf, etc.)? Maximized on the other monitor. At any time I'm selecting which two to see. Chat apps for group communication? I hide those because they are hugely distracting. (I check them now and then when I take a short break). At home I do something similar using virtual desktops, since I only have one monitor: browser in one virtual desktop, ebook or document in another, etc.

You're not alone. I'm also not a fan of tiling window managers. i tried to like them once but i just don't. I feel like tiling wms result in less chaos on the screen and that just doesn't work for me.
"I prefer to have lots of windows open, and being able to position them how I want with the size I want greatly increases my productivity."

That's just way too fiddly and time-consuming for me. 99% of the time I want my windows maximized and stacked behind each other. i3 does this for me automatically, and requires absolutely no interaction from me to have them set up the way I want.

If I was using a floating window manager for that, I'd have to manually maximize them and manually stack them.

If I want windows to be positioned in some custom layout that I use one time and never again, there is no difference between i3 and floating window managers, because i3 lets me do exactly that in the same way as floating window managers do, as I can float any window in i3 and position and resize it normally.

However, if I want to repeat a particular window layout then I can configure i3 to automatically put windows in that layout. I used to do this with GIMP a long time ago, before it had single-window mode. Now I just use it as a single maximized window, and don't bother with that.

I make popup windows float, so those will appear centered and disappear without changing my window layout, as one would expect of popup windows.

Occasionally I'll manually float a window, when I want the kind of control you're talking about, or when I want it to overlap my default maximized window for some reason, but that's pretty rare.

Well, the normal window management makes you confirm to its way of working, too! For each window, at each point in time, you have to decide what the size and position should be.

At one point I had lots of windows open and positioned them how I wanted with the size I wanted, every time I used them. Then I realized that the positions and sizes actually didn't change for certain windows. And I hated having to move windows around all the time!

For example, my email program could always be in the same position with the same size, no need to make changes to this from one day to another.

Currently, I've got keyboard shortcuts to move the current window to a position/size I like. E.g. one keyboard shortcut for "covers 100% of the screen", another for "covers the right 75% (and 100% of the height) of the screen", and so on.

But this approach restricts you to specific arrangements of windows. E.g. if you want to have a "right 75%" window on top, with a "100%" window below it so that the left bit "peeks out", but the windows aren't always the same, then it gets more cumbersome to arrange it.

(In my case that doesn't apply because there is only one application that I run in "right 75%" mode and there are only two that I want to peek out from underneath.)

Tiling gives you convenient ways to have different arrangements without having to invest a lot of manual work, and for some people this is useful.

For example, dwm provides a layout of two columns, where a single tall window goes in the left column and the other windows go in the right column, stacked above each other. It is really easy to go through the windows, and it is also really easy to move one window into the left column. So you can have a main window that you are working in (in the left column) while you can watch the other windows on the right. And it's really convenient to to change the window you're working in, and you can always follow what is going on in the other windows.

I encourage you to try this different way of working for a bit. Maybe you can learn something from it. Perhaps it teaches you something new so that you an adapt the way you work.

I appreciate the post, but I'm already part-time using dwm on a Linux machine, and I'm still struggling. The screen size of that machine is smaller, so it's acceptable, but I'd never be able to use it on my main display, it's just too much wasted screen space.
> Tiling window managers makes you conform to their way of working.

The User is defining the way a tilling manager works, so all you do is conforming to your own way, but with a more efficient tool.

Manual window managment is not worth the timewaste in most usecases. And for the rare cases where it's still neccessary the better WMs still allow manual settings.

I switched to i3 a while ago, and haven't looked back since. Standard drag-based GUIs now seem clumsy and frustrating.
Hint for Windows users that also want to have something like that:

That closest you can probably get to that is with Powertoys FancyZones. Its not exactly a tiling windows manager but its close enough.

https://github.com/microsoft/PowerToys/wiki/FancyZones-Overv...

On Windows10 you get multiple desktops (all monitors are bound tho), and you can snap windows to left or right half of the screen (this is resizable), or alternatively to the four corners.

It's no i3, but it covers a lot of usecases when I'm not on my linux box.

i3 is great and makes Linux usable for me. Some people have asked here why people prefer tiling window managers. I don't — I'd much rather be able to position windows as I want them on the screen. But for some inexplicable reason the world has decided that computers can't be tasked with REMEMBERING where our windows were. This is particularly egregious on Linux, where every time you open an app (or the app opens a window), the first thing you have to do is resize the window.

Given this failure (I still have no idea why we think our computers can't handle remembering where windows should be), it's better to have a tiling window manager, because at least one doesn't have to hunt for the window borders (which, in another failure of common sense, are becoming thinner and smaller every year) and resize the windows.

I love the concept of tiling WMs, and wish mainstream WMs would adopt more of their features. But quite frankly, I just find all the tiling WMs I know just horribly ugly... (And I'm not quite sure why, but that is actually one of the biggest reasons why I don't use them anymore.)
How do you manage to see them? They are supposed to be mostly invisible. A thin border around windows? A status bar, eventually... and that s it.
Ugly? What do you mean with that? Sway on openSuse is quiet nice composed.
Specifically I meant the pixel-blue window borders on i3, coupled with the extremely bare-bones status bar. (Does it even allow for systray icons? That would be rather important for me.)

Sway looks somewhat better, but I've been told it's still somewhat flaky.

well some people make fancy borders and the like. a tiling window manager shouldn't look like anything really just your programs. its very utilitarian i like i3 but am still partial to dwm; i3 has a lot more out of the box and probably easier to configure for most until you want to add your own patches then dwm is a lot easier imo.
Depends on the distro. Grokking the Arch Linux workflow around PKGBUILD and using `makepkg -si` is pretty easy. Debian makes it a bit tricker, but still manageable.
What do you even see of a tiling wm? They don't have window decorations, you can use any panel, so the "look" is a blank screen.
I3 actually has decorations, with a title bar and borders.

Still it retains the pretty utilitarian aesthetics common to most twm. I don’t mind it but some might prefer gui to terms, docks to panels, desktop icons, wallpaper and widgets to a dense grid of windows.

My wife tends to “shake” the windows she is unhappy with. The zoom client app mostly. I would not fare to suggest non shakable UI.

You should take a look at PaperWM for Gnome. It combines functionality if i3 with Gnome aestetics. But it also makes tiling simpler, open windows are only side by side, but with several workspaces. It also uses "Win" key for everything so it is very convenient, and do not collide with other Linux mappings.
You can configure borders and install a status bar with more powerful theming features such as polybar, which will make i3 quite pretty in a minimalist way, but it will never be anything fancy if that's what you're looking for.
You can also use Nerdfonts to set some beautiful icons for your desktops in the bar displaying desktops in i3wm.
For some inspiration on beautiful setups, check out /r/unixporn. i3gaps is popular there - but IMO the gaps are a waste of screen real-estate and not worth it for the looks.

Also maybe check out Gnome Shell? Haven't tried it personally but tile-y and similar look and feel to modern GNOME/Unity, if that's what you're after.

I'm on Ubuntu 20.04 with GNOME. Used to hate Gnome Shell, Unity was much better suited to my workflow (and wasted less screen real estate). But Canonical has actually made it usable over the last few years, so I'm generally quite happy with it. But it doesn't quite have the flexibility of a real twm.
They just give you the bare minimum so that you can configure it the way you want. And it's really easy to configure, at least i3 since it's the one I use. If you don't feel like configuring it yourself you can always go to r/unixporn and copy someone else's configuration.
You'll get used to it. It's like black coffee.
I switched to i3 from gnome. Now I don't waste time to resize, move, close, reduce windows with the mouse. Just learn a few keyboard shortcuts to do this, that you can set as you want. Moreover I was frustated about applets in the status bar, so I did it myself and it's easy with some bash and pyton : https://en.jeffprod.com/blog/2020/create-your-own-i3-sway-st...
Do your keyboard media keys work?

One of the biggest gripes I had with i3 is things like volume, brightness, mute and so on. It's possible to configure everything to work again of course, but very painful. Other system related things that exist in gnome (wifi, bluetooth, sound, microphone) are also a pain to do without. Again, lots of tinkering needed to get things working anew.

My keyboard volume keys up and down are working. But I did nothing about this in i3. I think this is related to the system. About my status bar when I click on the volume, I open "alsamixer" in a terminal. I also have, wifi, network, dropbox as tray icons. Wifi and Lan icons come from the package networkmanager.
You can run gnome settings daemon “behind” i3 with i3-gnome and regolith. It will handle the media keys, locking, auto mount etc.
I had to fix this - and fix VLC taking over my media keys if it ever started. I didn't find it too painful, but it's definitely annoying that I had to work this out myself.
Just wanted to touch on media keys. I've recently discovered playerctl and that media players expose standard dbus interface for playerctl to use. In (bare) i3 I bind XF86AudioPlay to "exec playerctl play-pause" (etc.) and it seems to "just work", with spotify client, youtube, youtube music (both in firefox)
I used to be all in on Apple. On macOS I had a little program called Magnet to snap windows to sides and corners, and on my iPad (with external keyboard) I SSH’d into a VPS to write and run code there. I used Alfred and had all kinds of workflows in there. I thought it was great.

But then during my AI studies I wanted some beefier hardware, which was just not affordable for me within Apple’s ecosystem, plus they only used AMD graphics cards. I built a desktop computer that outperformed the top of the line Mac Pro for a fraction of the cost and turned it into a Hackintosh. Two weeks later Mojave came out, and Apple never approved any Nvidia drivers from then on.

My eyes opened to Linux and i3 in particular, which looked like Magnet taken to the extreme. What had taken me hours to install and configure on macOS (GPU-acceleration for PyTorch, for example) just worked with one package install on Linux. All my expensive apps were replaced with simple and free, much more configurable alternatives. At first I spent a day or two getting things just right. Since then not much has changed because not much needed changing, which I really like.

Now I look at macOS and iOS and cringe how locked down it all is. Users are very creative in their workarounds to make it work, but it is ultimately quite silly that you need to use special URL schemes and workflows to open a text file across different apps.

Thanks, i3!

Almost like reading my story...

I used to be all in on Apple, using their iMac G4 and later on the Intel iMacs at home, but needed a beefier machine. So when I started in a new job, instead of getting a macBook, I asked the company IT to build me a workstation (and been asking for it from the companies I worked for after that). Installed Arch Linux and i3 to it, and never looked back. Did run Linux and i3 in the macs I owned for a while, until I built myself a home desktop and replaced my laptop with a ThinkPad, all running Arch Linux and either i3 or sway as a window manager.

This is the end game for me. Emacs, Alacritty and Firefox with a rolling release distribution. The same configuration with even the same wallpaper for the past 10 years that follows me from Gitlab.

Thanks, i3 and sway!

This is kind of my story too. I stick with ubuntu LTS just for an added level of confidence things are compatible, but Arch might be a good idea to look into. The arch packages are a big plus. Do you find many compatibility issues?
I have found that a lot of people _think_ Ubuntu is safe/stable. But because the Linux kernel is a little behind, it usually isn't. I have had way more stability and compatibility with arch because everything is always up to date.
Yeah this always gets overlooked for some reason. Other distros I periodically hit issues with something out-of-date; on Arch, I almost never do. And on the rare occasion that I do, installing the `-git` package from the AUR fixes it.
I've had the exact same amount of major issues using either stable or rolling release distributions. Using one of the other just changes when/why I have to work around the distro.

Arch usually has more small "papercuts" I have to fix myself - often problems around suspend/power management or drivers, in my experience. Ubuntu and the likes I usually struggle either when I encounter some bug OOTB (meaning that won't get fixed in a timely manner because "stable") or once I need some package that's just not there. Having to figure out what are the damn dependency equivalents for some program I'm trying to compile that only has Arch instructions is never fun.

Obviously YMMV.

With Ubuntu you have the choice to install newer kernels and video drivers if you need it and you are competent enough to read instructions.

The advantage of stable distros is that you are not surprised with new bugs,feature removal or shiny redesigns.

When I needed a new driver to play some game I just installed an official PPA and got the driver and if I did not like it I could install the older version.

> I have found that a lot of people _think_ Ubuntu is safe/stable.

As a 10+ years long user of Ubuntu and its derivatives (currently Pop_OS!) I would say I know it is stable. Ubuntu still feels like a polished Debian for a typical computer user, which has many of pre-configuration made that non-techies and not-that-much-knowledgable persons will love. I don't like many decision they have made, e.g. favouring snap over apt, complete lack of a proper GUI for managing installed software/packages, sometimes missing packages that are on Debian but not on Ubuntu (though, the deb file can be downloaded and installed with a single command). After tremendous work done by GNOME users to tweak gnome-shell I have never had a freeze / hang up since three years on Ubuntu. I am also happy having recent drivers from Nvidia that works good enough to also never see any problem in 5+ year history related to GPU card. I also didn't have a problem to install drivers for my printer and scanner, which have a dedicated installer (deb file). I am just a happy user.

Calling kernel for a reason Ubuntu feels stable is wrong I think. I have tried many times Arch and I had many occasions to be not very convinced to its "stability". The most annoying issue I had on Arch was related to sound - when I was changing volume in Spotify client it was changing the system volume. Imagine the situation when you had a headphones with a volume level set at 3-4% and you have increased it by 20-50%, a nightmare for ears and hearth. After that "feature" I have completely removed Arch from my disk and I am not looking back to it nor other rolling distro.

These days I also don't see any unique selling point that Arch had in the past. It is still known for a best documentation and the most recent software. During last 2-3 years I don't remember if I had been complaining on outdated software in Ubuntu. If I would do then there are awesome projects like flatpak, xbps[0] or nix[1] that can be installed without changing my OS and they provide everything what I probably can win using Arch.

[0]: https://voidlinux.org/

[1]: https://nixos.org/

For me, why I like Arch is its package system and how easy it is to have the most recent libraries and tools for gaming.

I also like Ubuntu and I've used NixOS in the past. What I don't miss from Ubuntu are the PPA's, AUR is much much much nicer. If you plan to do any gaming in Linux, Arch is in the end much more convenient due to AUR.

And, I'm biased a bit because my installation is always quite minimal. I only have i3 and my tools for programming, and whatever is needed to run proton games.

> What I don't miss from Ubuntu are the PPA's,

I have just looked into the extra sources to see if I have any PPA there but I was surprised to see the only one, which come with a Pop_OS! to bring some custom tiling manager and other tweaks.

Frankly, era of PPAs has ended. I don't find many software packages shared on Launchpad nor I won't trust PPA owners to install anything from most of PPAs. There are better ways to share software and easier to set own APT server. Today, almost all software distributors I know (Microsoft, Slack, Sublime, Spotify, Hashicorp...) have their APT repository on also their server or on a packagecloud[0] / JFrog Artifcatory[1]

> If you plan to do any gaming in Linux.

To be honest, I find KVM with GPU pass-though a better idea overall (I can use software like Affinity Designer thanks to that). KVM is a really top-notch software if you know to configure it properly :) However, proton and wine can be installed without any problem on Ubuntu.

> And, I'm biased a bit because my installation is always quite minimal. I only have i3 and my tools for programming, and whatever is needed to run proton games.

I have a complete range of various programming tools and SDKs that hardly can be packed in 240GB disk. My current setup is rather small: Jetbrains IDEs, Unity3D, Qt Creator/Designer, emacs with orgmode, vim, various chat apps, Spotify, Syncthing, Sublime Text & Merge, rofi, pass, fossil, nginx, flutter, nimrod, nodejs, deno, zsh, golang, chicken-scheme, milena+ivona, orca, backup tools, terraform with terragrunt, multipass and some dotfiles and private scripts. It takes about 3h to complete format disk and install OS and provision all software I need (thanks to terraform). My DE is GNOME with a taskbar (Dash To Panel extension) instead of a dock. Is it minimal? Likely no, but it does its job.

[0]: https://packagecloud.io/

[1]: https://jfrog.com/artifactory/

It's all good! Happy that we have many open source distros to choose from. I've used Linux since 1995, and have always a soft spot for Debian based distros. For some weird reason though, Arch has been my main driver for some years and right now, I see the distribution to be not an issue anymore. I see no reason to change, and what I have just works fine for my main tasks.
What I find annoying about the distro upgrade cycle is that it always automatically disables my 3rd party PPAs and then I have to go and manually re-enable and update them for the new distro version. This is a really poor experience.
I generally prefer rolling distros, but while Ubuntu generally doesn't use the latest kernel, it's still providing security patched versions of the kernel regularly.
If you don't use the computer in a while, like my office workstation when needing to stay home, `pacman -Syyu` packet upgrade might be painful after six months.

Otherwise it's the distro I'm having the least amount of problems. Specifically don't miss the PPA's from Ubuntu. With dist upgrades they are quite painful.

My only/major beefs with Arch are the frequency with which they introduce breaking changes, the fact that your system may not work if you miss a news item, and the lack of humility in the community. It works, for sure, but I always felt a bit iffy when doing a massive update after a while, and I felt like I was being dragged along with their choices instead of making my own.

I bought a beefy computer last year and installed Gentoo on it - it's obviously not for everyone, but its reputation as a hard to install distro is overstated, and if you have enough horsepower and ram, an emerge update isn't a big deal. Additionally, having the ability to tailor your builds to not include libraries you don't need AND to install the sources and debug information is huge. Mostly, though, it feels logically designed, and standard sysadmin tools allow you to do maintenance without much hassle.

I'd recommend at least looking into it to see if it fits your use case.

It has been much better for the past 5+ years, but what I did with my workstation is I installed Arch into a btrfs file system. Now when I `pacman` whatever, it'll create a snapshot first and then run the updates. If anything breaks, I go to the grub menu, boot into the previous snapshot and rollback into that state.

Never needed it yet, but it's good to have. I remember the problems in the past...

You can also do it with zfs, but I wanted to not have the filesystem as DKMS.

I do exactly the same thing. Snapper is amazing. I've used it once, but only because it was a bit more convenient than downgrading the one app that got messed up.

I also used it recently when I tried to get the new Assassin's Creed to run. I knew it was a bit of a crap shoot, so I took a snapshot before I started compiling and installing the Git versions of graphics and translations libraries. After a couple hours I realized it wasn't going to work and just rolled my root directory back to before I started throwing packages all over my system. It was very satisfying. :D

> My only/major beefs with Arch are the frequency with which they introduce breaking changes, the fact that your system may not work if you miss a news item, and the lack of humility in the community. It works, for sure, but I always felt a bit iffy when doing a massive update after a while, and I felt like I was being dragged along with their choices instead of making my own.

This was my experience with Arch as well. It left me feeling like I needed to check the wiki to see if there were any new warnings before updating.

I switched to distros that release ~6-12mo, and I have found my environment is much stable. Currently on Fedora, but considering trying out Suse Leap.

I've been running Suse for a couple of years on a lot of my kit, and it's been pretty worry free once I learned the deltas from my previous distro (e.g. zypper instead of apt). The only issue I've had is that once you get beyond the general desktop productivity environment it's a bit of a second class citizen. Usually not an issue, but make sure your favorite workflows/apps come over painlessly.
If you don't have the specs to handle Gentoo and all of it's emerge's, you may like Void as well.

I've been using it a bit at work recently, and am probably going to move a personal machine or two over to it soon.

I started on gentoo, went to arch, then to ubuntu LTS.

Both switches were for the same basic reason: packages broke just often enough that it wasn't worth the benefits of having a simple/clean system or bleeding edge libraries.

My switch to ubuntu was maybe 7-8 years ago, though, so I can't speak to whether this has changed. I just know that I used to need to spend 1-5 hours fixing an esoteric X.org problem (or similar) every few months on arch and that I don't need to do this on ubuntu.

I stay on ubuntu because of its critical mass of users. If there's a prebuilt package for something, it's probably a .deb that's compatible with ubuntu and debian. And PPAs are nice. I don't like where they're going with snap at all (I disabled snap and added flatpak support instead) and would probably switch if I thought another distro offered the same benefits.

What distribution?
If you're asking for a recommendation: Ubuntu, Fedora or Elementary. Manjaro is good if you're okay with occasional instability (due to rolling releases).

My experience has been much the same switching from Windows after the past month. The Linux desktop is better.

Please don't throw out statements like "linux is better".

It is better for you, me, and some others in this thread.

But if you make a statement like that you'll get Apple Enthusiasts to try it out just to prove you wrong.

And they will find reasons, because both osx and windows both have areas where they're superior.

Read it again

“ My experience has been much the same switching from Windows after the past month. The Linux desktop is better.”

>linux is better

But it is! And BSD's are even betterer. 9front and Inferno..pff nearly holy...but if you need applications..well that's another story ;)

Isn't the subjectivity heavily implied in that context? If people take it on face value and try to prove them wrong, it's on them.
This was more or less my path as well.

I will never, ever forgive Apple for removing two-dimensional virtual desktops (I think they called it "spaces"). Then just to spite all of us, a few releases later they made it impossible for TotalSpaces (a hack that gave us back this functionality) to do the kernel code-injection wizardry that they sold for the incredible bargain price of $12 or something like that. Because, you know, "security".

That was the end of my Apple decade.

Now I use sway, which is an astonishingly-faithful (like, down to the config files) wayland clone of i3.

Exactly this. And why I nowadays only use open source software is that I know my experience stays the same for good. I use i3 because it works just like it worked 10 years ago. I don't need a new experience with every release, new graphics, new ways to use my computer. I just need a utilitarian desktop with my editor, browser and a terminal.
Not being long enough on FOSS space?

My AMD drivers, and a couple of sysadmins might want to have a talk.

This functionality does still exist - it's just changed a bit. When you full screen an app in MacOS Big Sur, you can add another app side by side with it in it's space.

It was better before as just spaces though. Windows does this right. If you add powertoys you can even go beyond the i3 tiling options but i'd argue i3 is a bit more naturally usable than the powertoys desktop stuff.

I moved from linux to mac for work stuff. Really miss the I3 functionality; yabai fills that gap mostly but not all the way.
There is also Amethyst for macos https://github.com/ianyh/Amethyst
Amethyst was inspired by XMonad, so it is probably the closest you are going to get to i3 on MacOS
There's also yabai
Amethyst is nice but has odd and unfortunate edge cases. The use of the Accessibility APIs limits what it can do. For example, keybinds stop working if the focus is on an empty screen with no windows. Occassionaly it "loses" a window and you can't cycle to it any more, even if you focus it manually. I also don't think it can throw windows to other workspaces but maybe that's changed?

For very simple i3-like configurations (single workspace+monitor, always fullscreen or side-by-side), it's not bad. It's limited by poor support from Apple.

(comment deleted)
Do you mind expanding a bit on that thought? What gaps aren’t filled with yabai?
I3's scratchpad would be one. And title bars when windows are stacked or tabbed is another nice touch.
> it is ultimately quite silly that you need to use special URL schemes and workflows to open a text file across different apps.

Curious what you mean by this? Which additional mechanism does Linux (or i3?) have for opening a text file between apps?

(comment deleted)
There is no additional mechanism, You just open text files as many times as you want with any program. (Unless I misunderstand the parent comments)
I think the confusion comes from the fact that the sentence mentions both macOS and iOS, whereas url schemes are an iOS-only concept.
Got it yeah, this is probably why I was confused. URL schemes are the only way to do a lot of things on iOS, whereas (as far as I know) they're additive to the *nix ways of doing things on the Mac.
Nice story thanks for sharing!

Is it easy to reconfigure keyboard shortcuts like cmd+C for Mac but ctrl+C on Linux? I have spent way too much time trying to do it on Ubuntu and it has made it hard for me to make the switch.

Get your keyboard setup as close as you can with whatever tools seem comfortable (eg gnome settings) and then dump the layout to an XKB file.

Now you can make the tweaks you need, and load them automatically next time with a call to xkb in your .xsession.

Linux and GNU and Xorg et al may be heterogenous and weird, but the joy of an open system is that if you want to take it apart and tweak it, you can.

Surely someone has already posted a solution on GitHub somewhere...
In macOS it is not entirely clear to me what category of things the cmd key is for. On one hand it's used for keyboard shortcuts related to window management and the system, but on the other hand it's also used to issue commands to the application itself.

In i3 you assign a $mod key, which then always and exclusively used for 'system and window management'. Opening, closing, moving and resizing windows, switching workspaces and showing toolbars is all done with some key combination that starts with $mod.

Since reading and writing the clipboard is done by the application, in my brain it should not involve $mod. So I use ctrl+c and ctrl+v for all applications. The one exception is the terminal, in which ctrl+c terminates programs. So there I use ctrl+shift+c. I also unified the register vim yanks to with the system clipboard, so for me most copying and pasting that happens in the terminal is done via `y` (yank) and `p` (paste).

A more straight answer to your question is: yes, you can remap everything to bits. You can modify what keypress each keycode should trigger, so there is really no limit to what you can do there.

I'm with you, I find the meta key on mac messy. I personally change ctrl+shift+c and ctrl+shift+v to ctrl+c and ctrl+v in my terminal emulator so that it's consistent accross the board. This way it's clear: * meta key: my windows manager shortcuts * ctrl: app specific shortcuts
Cmd isn't really a meta key, though. It's just the equivalent of Control on Windows; there's no equivalent of a Windows key on macOS. That said, it's not quite necessary due to the decoupling of app windows and app open/close state.

Personally I find Apple's approach to key commands far and away the most well thought out and intuitive.

I use XMonad and it has some ability to reconfigure such things. Not sure what the general solution is.
No, in the general case it is infuriatingly impossible
I'm trying to work through this lately and finding it hard: findings so far — https://wincent.com/wiki/Modifier_keys

Biggest hurdle is finding a clean way to do application-specific overrides, because even if you can get the general case working right, there is a lot of per-app variation.

What are you using as replacements for keyboard maestro and hazel?
These are exactly the type of silly applications that are needed on macOS because the OS too locked down, or at least not made for people who like to do this type of stuff.

On Linux, almost all native applications keep their data in regular, non-proprietary files on the file system. This means your data always exists separate from the applications and you can do with it what you want. If you want to run a script every Monday at 3PM that sifts through your ~/downloads folder and uploads the top 10% largest files to a server, except in January, on Easter, when when your drive is below 70% capacity, if it's not hooked up to power, and also not if Kanye West tweeted something in all caps, you can do that. You can make it retry every 42 minutes if conditions weren't met, email Bob and message Alice in Slack about it. You can make it machine learn your behavior and pick a window within 3 hours after sunrise, log the bandwidth usage, and have it play a tune for your friend's MPD server on the other side of the country.

Why you would want to do all of this is beyond me, but odds are you want to do one of these things at some point. Then Hazel won't be able to do it because they didn't consider your use case, that functionality is only available in version 6 (pay up for the upgrade!), Apple didn't provide the right API, or they recently took it away in the name of security. Surely there's another app that can do it, but that one can't do the other thing! Oh well, maybe the next version?

On Linux, you dream up the code in the language of your choice and it will work forever. Your learned skills will transfer one-to-one to programming you do for your job or hobby, instead of being weirdly specific and locked down to this one, overpriced app's clickity click interface. The OSS mentality of interoperability and doing one thing well almost guarantees there are battle-tested tools available that can solve pieces of your specific puzzle, while not locking you in to their way of doing things.

Of course scripting is not exclusive to Linux, but it is the only OS that was and is built with it in mind.

That's a remarkably off-base take. You're attributing qualities that linux has to things that linux exclusively has. Your entire rant about emulating the functionality of Hazel with scripts is something you can do with either operating system. The fact that hazel exists is because it lets people that have neither the time nor the disposition towards writing their own program for their own use case and still get a lot of the benefits of such. In fact, even those that do have a proclivity towards scripting their own maybe would rather do something else with their time.

> On Linux, you dream up the code in the language of your choice and it will work forever.

...I'm sorry, how is this exclusive to linux, exactly? You can do the exact same thing in MacOS, Windows, FreeBSD, etc. Also, maybe some people just don't want to fucking program every function and application they run on their operating system?

> Your learned skills will transfer one-to-one to programming you do for your job or hobby

While I understand that there exists a much higher population of programmers on HN than on other websites, please stop assuming that 1) everyone here is one and 2) that everyone wants to spend their time writing software in their spare time and 3) even if they do like programming in their spare time, that they want to spend it writing automation scripts.

> instead of being weirdly specific and locked down to this one, overpriced app's clickity click interface.

What is overpriced to you is potentially someone else's pennies. I don't really think the jab at GUI interfaces is appropriate, either.

> Of course scripting is not exclusive to Linux, but it is the only OS that was and is built with it in mind.

Again, this is just plain ignorance.

I'm afraid that this comment makes me sad.

There was the opportunity to help someone make the switch from MacOS to Linux but instead it was used to call apps that the person probably likes "silly" and "clickity click". It's more interested in making a point than helping.

A wasted opportunity.

Scripting wasn't born on UNIX, and was quite widespread in any of the Xerox PARC workstation models.

And then there are those surviving mainframes.

So no, nothing special about GNU/Linux.

> If you want to run a script

I emphatically don't want to run any scripts. I have enough programming at my day job. The last thing I want is spend all of my free time programming and debugging scripts.

Give me a nice GUI with a few clicks any time.

Disclaimer: self-promotion

I wrote and maintain a FOSS Hazel-like tool called pushbroom [1] that works on both macOS and Linux. It’s worked extremely well for me for several years.

[1]: https://sr.ht/~gpanders/pushbroom

I'm not a MacOS user so I don't know all that much about keyboard maestro's feature set, but with i3 all of it's keybindings are configured dynamically through the config file so you can map any keybind you want to invoke an arbitrary program. It won't come nice and prepackaged but you can do a whole lot just by using included tools and i3-msg, which lets you manage i3 windows programmatically.
Aside: I just started using KM to implement Gmail shortcuts in Mail.app because I'm sick of the direction of third-party mail applications, and I'm super-impressed by it. Seeing the two mentioned in the same breath made me think Hazel must be important, and it solves a great need for me as well. Thanks for the tip!
i3 aside, the continuation to your story for me is, use Linux machine, be decently productive but nothing works quite the way it should.

Change your keyboard layout to one of your own? Eh maybe Xmodmaps, oh but then it gets reset every so often because $HISTORICAL_ARTIFACT. You have to change the actual xkb mapping, which is very much not a “happy path” in any DE.

The only graphical e-mail client that actually seems feature complete is Thunderbird, and for _years_ I have to race to disable the global search within 10 seconds of starting it. Otherwise the program just freezes up. I don’t even know what to use for calendar stuff.

I would really love it if Linux was viable for me as a desktop OS. It just isn’t, because of things like these.

For the keyboard layout, use a mechanical keyboard program it through qmk, loose 1 month adapting to it, and voila, problem solved.
Changing the xkb mapping is not a happy path? It's perfectly portable to any system running X11, you can define your own shortcuts to quickly switch maps with setxkbmap... It's a backbone of my workflow with a 60% keyboard.
Not sure what you're trying to do in keyboard layouts. I've yet to encounter the flexibility for keyboard layouts that you have in linux in any other OS.

Regarding email clients, again I'm not sure what you consider feature complete, but even some of the proprietary options like mailspring or hiri exist on linux.

For calendar it again depends on what you are trying to do. I've recently started using Minetime, which is not OSS but free and is working very well for me.

One of the weird phenomena that I find in these discussions, is that people are often happy for proprietary software (like OSX or windows) to restrict what they are able to do, and having to adjust their workflow to these systems, but when it comes to OSS suddenly not being able to match the previous workflow, makes the system unsuitable. (Note that this is not aimed at you directly, just a general observation).

The mail client is worse than Windows IMO. But a tiling window manager and terminal is worth it for now.
I haven't had that experience. I have had the slightly annoying experience of mapping keys using tools for X, and then realizing some time later that when in the console those mappings vanish. Of course, there are tools for remapping keys in the console, but they are a little less user friendly.

In the end, I got a keyboard that incidentally had functionality to remap keys built in (I wanted the keyboard already anyway, but the remapping feature was a nice bonus). This ended up routing around the problem entirely, and seems like a generally better solution. Now my remaps survive all the way to Windows, for my rare trips over there.

Your complaint about the xkb/xmodmap/whatever situation is dead on, so my solution has been to simply go with a programmable keyboard. Don't have to remap capslock -> ctrl anymore - no matter what distro I use, capslock is always ctrl, right from the get-go.
What's wrong with Thunderbird's built-in calendar?
Current apple user/ex linux user

Can't speak to your firebird issues, never used it, but as for keyboard issues?

Spouse uses my main machine for basic stuff, she has her own account. I use dvorak, she uses qwerty. About 75% of the time when the layout is switched back from qwerty to dvorak it becomes completly fubar, and all layouts output non-sense garbage until a restart. Because the layouts are broken, I can't save any of my terminal work.

I'm still pretty on the fence about things, but honestly I'd say linux and os-x are pretty even as far as shit breaking, and imo linux is a little bit better. I remember the old days when you sudo apt-get update && sudo apt-get upgrade & pray, but stuff is pretty stable even on distros like arch these days.

Every time there's a major update for os x, I already know it will definitely break something for me. Catalina broke most my game collection that could run on os x to begin with, and I'll be waiting at least another couple months before upgrading to big sur.

This isn't to try and invalidate your experience, but just saying that mine has been: Switched to OS X because things were more stable and I need a solid work machine, but linux is getting more stable while my faith in apple's software quality goes down dramatically every year.

FWIW iOS allows apps to to permanently have access to a file or folder in another app's sandbox, they just have to get permission for it.
I dont like Microsoft operating systems and wanted to try something different. I installed Linux. The installation process was very painful. Getting it to cooperate with the hardware was worse, and of course there is no real support. I finally got it halfway working. At that point, I found it was hard to learn, harder to get used to, and hardest to do anything useful since none of the programs were familiar.

Two days later the computer stopped working entirely and would not even boot. I spent hours fighting with it, tried to reinstall linux and it simply would not work. I removed the hard drive that linux was on, plugged back in my Windows hard drive, and could not make the computer boot up.

I finally took it to a computer repair place and was told the CPU was damaged, and there was damage to the RAM too. Total cost was more than I paid for the computer. I also took along the linux harddrive, and was told that the drive had permanent damage (a brand new drive). The repairman asked me what I was doing with these computers. As soon as I mentioned the word "Linux", he told me that's my problem. He said Linux destroys computer hardware, and said he wont even allow it in his shop. He said that simply installing a self booting Linux CD can wreck a computer in minutes. mostly destroying the CPU and drives. This is caused because Linux sends the wrong voltages to components and burns up the CPU and other chips. It also plays havoc with harddrives, and causes them to lose their ability to read and write data.

So, here I sit with around $1200 worth of damages and repair bills. (Not including many hours of wasted time). Since Linux is made by a bunch of computer geeks and idiots with no real business address, there is no one to sue. Both my computer repairman and lawyer said it's worthless to even try a lawsuit.

All I can do is warn others, to avoid Linux like a deadly disease. Dont even try it, unless you want to intentionally destroy your computer.

I've been using linux for over a decade and never even _heard_ of this or something similar happening. AFAIK the only typical way to configure these things is through the BIOS, well below the OS level. It sounds like something got borked and the computer repair shop decided it was easier to blame linux than to figure out or explain what happened.
> [T]he computer repair shop decided it was easier to blame linux than to figure out or explain what happened.

Or they decided this was an opportunity to make an easy sale of some replacement hardware.

I don't mean to bring back the forum lifestyle of the 00s, but this is just plainly FUD. Linux does not cause hardware issues like this with any high frequency (of course it may occasionally, but any software will damage that hardware eventually). I've installed Linux, and helped others install Linux, on dozens of machines over my life. I've worked with others who install Linux on everything they touch. I've literally never heard of a story like this.

So it is POSSIBLE that Linux might have caused your issue. Your computer repair guy, however, is probably just wrong. And I would personally guess that your damage was due to power or environmental issues rather than Linux.

It would be truly impressive if the thousands of developers of the Linux kernel had, over the course of 30 years, managed to create an operating system that physically destroys your computer. I've half a mind that this comment is meant to be humorous.

Anyway, sounds like your computer repair place was looking for a quick buck. At the very least, they have no idea what they're talking about.

> It would be truly impressive if the thousands of developers of the Linux kernel had, over the course of 30 years, managed to create an operating system that physically destroys your computer.

It used to be possible for malware to damage CPU, RAM, hard-drives, and CRTs deliberately, but the relevant techniques were fairly hardware-specific to begin with, and modern hardware is (for the most part) no longer vulnerable to these classes of attack[0].

But, I guess we don't really know what year this anecdote supposedly occurred.

[0] The one modern exception I'm aware of would be flash memory (aka SSDs), which can still be deliberately worn out with a little effort.

Let me add my own anecdata: I've been running linux on machines since 1998, and I've never experienced a failure like the one you describe. In fact, the only hardware failures I've experienced have been external (usb) hard drives failing after a few years, and a laptop keyboard failing after someone spilled tea on it.

In terms of what the repairman told you, when I called Compaq's support to get help with the keyboard, once the person on the other side of the line heard me say I was running linux on it, he said "that's your problem". I had to reiterate that my problem was someone spilling tea on it, and that I had been running linux on this particular laptop for almost 2 years without any keyboard issues, thank you very much. In the end, Compaq told me they didn't have spare parts, and the keyboard started working again after letting the machine dry up for a few days (that was the last time I bought Compaq though!).

My point is: computer repair and tech support people are almost programmed to find out something that they're not responsible for and that could explain your problem. I don't hold it against them, I think it's a normal bias, but I would never take linux advise from a repair person, unless they work on a linux shop.

Any computer repair shop that says "Linux destroys computer Hardware" and "not allowed in his Shop" is clearly trying to scam you.

Also, If the computer stopped working entirely and did not even boot how did you spend hours fighting it?

If you have a malfunctioning CPU/RAM it should not be possible for you to "try to reinstall linux". What would happen I think is failure to boot and your laptop playing a certain sound as a diagnostic message.

Either way, you should refrain from making comments like "avoid Linux like a deadly disease", clearly you've messed up the installation process. You could've just chosen a one-click install linux distribution.

If you don't know how to make a chair, don't try to make yourself one. And if you do don't blame the people that gave you the wood. It wasn't even sold to you, you grabbed some free wood.

(comment deleted)
I can't tell if this is poor satire or trolling, because I REALLY don't want to believe there's someone on HN that actually thinks any of that is even REMOTELY true.
I’ve been running Linux on and off on a variety of hardware since the early 2000’s and it has never ever caused any hardware damage. Also, if “Linux kills hardware” do you really think the cloud providers like AWS would be running Linux on all of their hardware? The only hardware failures I’ve ever had to deal with were when running Windows.

Sounds like you have a computer repair guy who doesn’t know anything about Linux and is bullshitting you.

I also don’t understand how your installation process was painful. Installing Ubuntu or Manjaro (the two I’ve installed most recently and most frequently over the past few years) is simply a few clicks for me and everything’s done. It really wasn’t any harder than the last time I installed OSX or windows.

Linux CD, author being current "high-school senior" (from the profile), and "my lawyer said"...
If you look at their post history here and their github profile it's pretty obviously a troll. Claiming in this (copypasta style?) post that Linux destroyed their computer, but in another comment saying how much they love bash programming. In one comment they grew up playing Roblox, in another they have decades of experience across multiple programming languages including C++, Rust, Lisp, and Python.
Wild, this is the path I went down and it was just 3 months ago! I didn’t expect Fedora to become my daily driver so quickly.
Yup, I envy the M1 but I'm on XMonad (lol) and I really wouldn't want to go back to a non-tiling window manager.
Waiting to get an M1 with a custom motherboard, a fast GPU and Arch Linux installed. I doubt that'll happen with Apple, but I suspect in a few years we have some other ARM CPU that has integrated RAM and competes with M1.

For now, a Ryzen runs circles around M1 (at least with my workloads, C/C++/Rust compilation with needs for 64+ GB of RAM) if you're willing to use some more energy.

i3 turned out to be a gateway window manager. Tried out all sorts of different tiling managers, and finally stuck on DWM.
Yeah, I didn't realize how much I'd like DWM. Once in awhile I'll try awesome or i3, but DWM seems to hit the sweet spot.
I'm jealous of you and others in this thread that shared this path. I've unfortunately been dragged in the other direction: I was a happy i3/Linux user and now I'm coping with a multi-monitor Mac setup which stubbornly refuses to support workflows which I find to be very fast and efficient.

There are some tools (all $$) for Mac which attempt to replicate a tiling WM but Apple's support for it is extremely poor, affecting the quality of the tools.

I'm no longer using a Mac (for employer reasons), but I had a lot of success with Yabai (free/open-source) before I switched. https://github.com/koekeishiya/yabai
I haven't disabled SIP yet. As a Mac novice, I'm wary of breaking something required for work (and in a pandemic WFH to boot) that I can't fix. But it looks like it's optional.

I'll give it a shot! Thanks for the tip!

yabai works without SIP, minus some features that requires it
This is the danger of tiling window managers :( I now fear one day I will work at a company that won't let me use Linux.

But on the flip side, it's a great testament to the power of tiling. You'll have to claw i3 out of my cold dead hands :)

If I was forced to work on a non-Linux box now, I'd most likely end up running a Linux VM and do most things within the VM.
I am still on macOS but I totally agree with your post. macOS and iOS are seriously locked down and it can be very frustrating.

Like you I used Magnet but wanting to get something more tiling window manager-like I switched to Amethyst[1] which while not as powerful is pretty good for what it is.

Sadly macOS has frustratingly laggy window resizing for a lot of things. Finder and Safari are usually fine but pretty much everything else feels laggy to resize and generally macOS just has absolutely terrible window manager so a tiling window manager is a god send.

I mostly use macOS because I have been doing iOS and macOS development and so what else you gonna use but I have to admit I want to move away from the platform. It is all 'very exciting' right now with all the Apple Silicon hype and yeah it genuinely is impressive but for me I kinda want to get back to something more open even if it doesn't have a lovely highly efficient and performant custom SoC driving it.

I am like 90% there in convincing myself to build a nice AMD desktop next year and moving away from macOS as my main OS. Luckily I am not dependent on any Apple services so switching shouldn't be that bad.

[1] https://github.com/ianyh/Amethyst

yeah, I agree that macos seems to have the worst window management, both in design and implementation (particularily performance).

i3 sounds like a dream window manager to me, but in the meantime while I use Mac OS (& Windows), I've been using yabai, which is heavily inspired by i3 but limited by Mac OS.

https://github.com/koekeishiya/yabai

(comment deleted)
I think the biggest contribution i3 has made to my computing life is helping me recognize just how superfluous most of what I normally did on my Windows and Mac computers was.

Take away a lot of the chrome and it’s incredible how much can be achieved via simple text files and unfussy Linux tools.

As an example, my GTD workflow (before I switched to a physical bullet journal) went from a variety of apps to a single i3 workspace that auto opened with 5 terms with each containing a single markdown file opened in vim.

The leftmost column contained the processing file from top to bottom. The middle column had Doing and Follow up files.

The rightmost column had Done and Projects files.

My done would be archived each week with a script and a new done file opened for the upcoming week.

If there were any other major files I wanted (for example I would maintain a ling term projects file) that would be opened in a different buffer in the VIM app containing the projects file.

Moving items from one folder to another was as simple as quickly navigating to that folder, using a shortcut to yank or cut the line to the global clipboard, ans then pasting it to the file I wanted to move it to.

I suspect it would have been trivial to write a script that would have automatically moved the entire line over with a single shortcut.

There is absolutely no additional overhead and it works extremely fast and well.

Why use five i3 windows, if you can use five Vim windows? That would make moving things around a lot easier.
On mac there’s a window manager called yabai which I’m using and works very well. It’s a bsp (binary space partitioner) for some advanced uses as moving to other desktops it requires SIP to be disabled (System Integrity Protection) but for the basic stuff it works much much better than Magnet or Amethyst
How did you get used to the different modifier key layout? I am missing the cmd every time I try to switch to Linux. I have tried rbreaves/kinto, but it was not working well for me, so I decided to keep the native layout.

It took me about 2 weeks to get kind-of used to the different modifier keys, but it did not feel the same.

But the thing that made me switch back is when I was buying a laptop. I was set on not going with Apple anymore after my previous macbook screen died 2.5 years in and they were asking almost 1000€ to fix it. But I could not find an option that would match the 16" macbook laptop. I was considering the build quality, screen size and its resolution, battery life, usb type-c charger, trackpad experience and the overall software support that I will expect from a daily driver to do my web development work. I was seriously considering the dell xps 15 9500 that launched this year, but I saw a lot of feedback about generally poor battery life on linux and some cases of trackpad problems.

I was thinking about getting a second, cheaper device like System76 Pangolin and see how it works and use this as a transition to a different platform instead of going all in by immediately switching the daily driver.

I have been using i3 now for many years now and like it a lot. Thank you developers! It's easy to configure and well documented, plus there are many nice extensions (like status bars).

With tiling window managers, for me it really is the predictability of where things are (e.g. emails are always on desktop 2 for me, browser on 1, etc.), keyboard navigation and the ability to configure all window related things in a single place / config file. Not requiring to think much about how to organize windows to quickly have a useful view lowers the cognitive load for me (possibly not a problem for others). It also allows me to quickly build pseudo-IDEs, e.g. have a left pane with vim to edit a latex file while having a split pane on the right where in the top terminal I'd call "lualatex <file>" and have the evince/zathura output of the file visible below and live-update.

Some random config details I use all the time:

  # Lock screen with Ctrl+meta x, have background image
  bindsym Control+$mod+x exec i3lock -i <path/to/image>
  
  # Show a floating calc terminal with Mod+c
  for_window [instance="termite" title="My Calculator"] floating enable
  bindsym $mod+c exec termite -t "My Calculator" -e calc
  
  # Show a floating units terminal with Mod+u
  for_window [instance="termite" title="My Units"] floating enable
  bindsym $mod+u exec termite -t "My Units" -e units
  
  # Allow quick back and forth (First Meta+Workspace-ID goes there, second goes back)
  workspace_auto_back_and_forth yes
  
  # Use rofi to launch programs and find windows
  bindsym $mod+d exec --no-startup-id i3-dmenu-desktop --dmenu='rofi -i -show run -dmenu'
  bindsym $mod+o exec --no-startup-id i3-dmenu-desktop --dmenu='rofi -i -show window'
  
  # switch between the current and the previously focused workspace
  bindsym $mod+b workspace back_and_forth
  bindsym $mod+Tab workspace back_and_forth
  
  # invert the screen with Mod+i
  bindsym $mod+i exec xrandr-invert-colors
  
  # toggle tiling / floating for window with Mod + Shift + Space
  bindsym $mod+Shift+space floating toggle
  
  # rename workspaces with Mod+t
  bindsym $mod+t exec i3-input -F 'rename workspace to %s' -P ' New name: ' -f '-*-*-*-*-*-*-28-*-*-*-*-*-*-*'
  
  # Gnome settings daemon helps us with keyrings and GTK themes
  exec --no-startup-id /usr/lib/gnome-settings-daemon/gnome-settings-daemon
  
  # calendar with Mod+p
  bindsym $mod+p workspace calendar; exec termite -e 'ikhal
  
  # Make the currently focused window a scratchpad (a hidden floating desktop) with Mod+Shift+Minus
  bindsym $mod+Shift+minus move scratchpad
  
  # Show the first scratchpad window (on any desktop show the first floating hidden window) with Mod+Minus
  # Normally there is a floating terminal with vimwiki in the scratchpad
  bindsym $mod+minus scratchpad show
i3 is a great gateway drug into the tiling window manager world since it works well out of the box. I migrated from i3 to bspwm which is more configurable and prefer the fibonacci style partitioning. Bspwm also decouples window configuration from the hotkey daemon basically following the unix philosophy better. The ultimate trio for me is bspwm + sxhkd + polybar.
One of my favorite things about i3 is that it doesn't force itself on you when it's not needed. You can keep it "in the background" in tabbed mode, effectively using it like a non-tiling WM, as long as you want. Just let your windows pile up and switch between them with fuzzy search (rofi/Switcheroo). Then, once usage patterns emerge, you can tile to take advantage of spatial memory.

Example:

- Start i3 in tabbed mode

- Open a window for coding

- Open a browser to search for some coding question. It opens in a new i3 tab, filling the screen like it would in a non-tiling WM

- Open a terminal to try the sample code (new i3 tab)

- Google the error message you get (new i3 tab)

- Use rofi to search for "code" and press Enter. Your coding window tab is activated and the coding window fills the screen

- Realizing the sample code you found would be useful here, along with the test terminal, tile those windows alongside your coding window. Now you can quickly refer to them and switch between them with spatial keybindings

- Switch back to the error message browser using rofi to check something. It's not part of your core workflow right now, so don't worry about tiling it

That's probably obvious to anyone who's used a tiling WM for any length of time, but tiling was daunting to me until it clicked. I spent too much time thinking about optimal window arrangements. Thinking of tiling as an optional finishing touch rather than a focal point made it much more useful/practical.

I completely agree about "spacial memory" - i use my non-i3 WM in the same way.. but i'm not a fan of tiling in most cases. Does i3 still have tools i might find useful?

To further illustrate: I primarily have an open Terminal+Tmux for editing on my main monitor. On my side, i have spacial but overlapping windows. They stick out a bit, such that it's primarily four tabs - left,up,right,down. For example my Slack is on the left tab, and i can always see my contact list, people typing to me, etc. My Browser is usually on the Up tab, as it allows me to see the browsers tabs themselves. I do the same with Zoom on the bottom, such that my Mic (mute/unmute) is always visible. And etc.

This arrangement perhaps isn't ideal, but it's better than a tile for me because in a tile, i lose so much real-estate that the window becomes near useless. I can't shrink Slack to 1/4 of my Monitor, it's got too many boarders/etc. Same goes for my Browser, most sites have non-collapsing sidebars and etc, a tiny 1/4 window is useless.

This method of spacial layout obscures ~90% of my windows but leaves some of it always visible. In some cases that's very useful. But this is something i manage through the day, and a WM to automate this positioning would be amazing.

I haven't used i3 in a while, but you might be able to use stacking/tabbed containers to accomplish what you've outlined above. It doesn't have the advantage that you can see part of the window, though.
I’ll assume you don’t actually need to see you browser tabs or the Zoom mute toggle, just to be able to access them instantaneously. If I were you, I might keep Slack filling the screen most of the time, with the browser on workspace 9 — so it can pulled up with Super + 9 — and make a combo like Super + M both focus Zoom (on a third workspace), `xdotool key --clearmodifiers Alt+m` (with the setting enabled for that to toggle mute), and perhaps `xdotool windowmove 80% y` or so Slack and make Super + S or something reset the Slack workspace afterwards.
This is why I can never switch off i3 (well, Sway). I just use tabs too much. I even hacked Firefox to hide the tab bar and open every "tab" in a new window so I could use Sway tabs for browsing. BSPWM/DWM/etc all look cool, but no built-in tabs.
How did you hack Firefox that way? Been trying to figure that out for a while, no luck.
Qutebrowser has an "all tabs are windows" mode, along with the ability to hide all the "chrome", so the window manager can handle the tabs.
Hard agree. If you're the kind of person using a tiling WM, you will definitely find the deep customization that Qutebrowser exposes to be liberating. I like the experience so much that I'll start selling it for the rest of this comment:

Do you use vim-like extensions, but hate how surface-level they become due to hard WebExtension limitations? Pining to recapture the days of Pentadactyl? Qutebrowser is built for vim-like navigation from the ground up:

* Hate getting stuck on about//:* / chrome://* pages? Every single page in qutebrowser works with your keybindings!

* Hate PDFs for the same reason? Qutebrowser will read PDFs and keeps your keybindings there, too!

* Wish you could have a dotfile configuration for your browser? Qutebrowser (optionally) does dotfiles (and they're Python!)

* Wish you had a real EX mode? Qutebrowser has one and it does not disappoint in terms of customization/functionality. It's actually the linchpin of the the entire UX, much like the Omnibar is for Chrome.

* Wish you had a keyboard-driven text selection mode? Qutebrowser has one!

* Hate file pickers forcing you to reach for the mouse? Qutebrowser implements its own keyboard-driven file picker (and it's actually really good!)

Have you considered other browsers in the past, but passed them up due to a lack of extension support? Well... Qutebrowser can't handle WebExtensions, but it does provide most features you would miss:

* Dark Mode? It exposes the same performant, engine-level dark mode that Chrome does

* Adblock? Qutebrowser supports hostlist-based adblocking (with auto-update) OR, if you want real Adblock, you can install jblock for qutebrowser, which is comparable functionality-wise to "uBlock"-type extensions (yes, including Youtube)

* Userscripts? Qutebrowser supports loading userscripts and is mostly compatible with the GreaseMonkey 3/4 APIs. This covers what most "minor" extensions (e.g. HTTPS Everywhere / Old Reddit redirectors / UI tweaks) can do

* Custom CSS? Most "userstyle"-type websites package a "Greasemonkey" version that will work just fine with the previously remarked userscript functionality

* Password management? Qutebrowser comes with scripting support that will allow you to interface with your desktop-side password manager. Out of the box, it comes pre-packaged with scripts for connecting to GNU pass, bitwarden, keepass, and lastpass.

I use Saka Keys for vimbindings. Config can be exported and shared with other machines.
Sure, but will Saka Keys allow you to configure the browser itself? Will it autoload the actual dotfile on startup if it's already in the expected configuration directory?

I'm not saying vim-like extensions aren't worth using, but they are inherently less capable due to hamstringing by WebExtension APIs. If anything, it's proof of how much work and care goes into them, since they have to fight the limitations of a framework not designed for this type of UI overhaul

I love this comment :)

As for adblocking, I wouldn't recommend jblock (it's rather buggy from what I've seen so far) - but a built-in adblocker based on Brave's Rust library is almost ready now: https://github.com/qutebrowser/qutebrowser/pull/5317

I imagine people often misattribute JBlock bugs as Qutebrowser bugs, so I can certainly understand the aversion. FWIW, in my own usage, JBlock has consistently functioned as expected without causing any apparent issue. Still, I'll be glad to finally retire it and upgrade to something more fully featured and baked in.

Of course, as always, thanks for the excellent software!

I use BSPWM with different desktop tabs. Is there any difference? Curious to hear as I've never used i3.
Okay you'll need to enlighten me because this is exactly what I want. Currently I use keybinds on my Mac to snap windows to halves of the screen. I3 on my desktop does this automatically but I'd love if I could also have the freedom to let the windows stack up. What is the tabbed mode?
been using this since forever and gawd it makes me happy to use. any os i have i just install a vm and stick this on and im back to my tiling childhood.
One thing I noticed after switching from gnome (and osx) to i3 ~6 years ago is that I never felt the need for a second display since then. It's pretty satisfying to know that you're efficiently using every piece of your screen.
Used i3 fulltime for more than a year. It's great for building extremely lightweight environments that will run on any machine.

The productivity side of it is slightly exaggerated (in terms of tiling vs stacking manager), and i didn't find myself saving so much time. One thing i've always missed from the stacking manager is the window overlap - i do that quite often, especially when reading something while doing stuff on another window - most sites have side panels that don't react well to changing window sizes and with stacking window, you can just place them optimally and hide the stuff you don't want to see.

The only issue i've had with it is how it handled popups. For example the andoid emulator window was a pain, also some dialog windows.

I don't think i will be ever coming back to tiling WMs. It was nice infatuation.

I use i3 and the productivity for coding-type tasks is great. Fiddling with my i3 config and i3bar is a favourite procrastination, and I can genuinely say it's changed the way I use my computer.

But Zoom is a nightmare. It's clearly only designed to work with conventional windows. It opens new windows a lot, and each time it does that, i3 grabs the new window and puts it in whatever workspace my mouse is currently at. I'm constantly shifting Zoom windows between fullscreen and normal mode, and switching workspaces for them. Starting a breakout session immediately kills everything and I have to start moving everything around again.

I get that Zoom isn't optimising their application for Linux, and especially not for i3. Fair enough, I'm in a tiny market segment here. But it's annoying enough that I want to warn people who want to try i3 that (no fault of i3) some applications really don't work well with it.

You can force these zoom windows by name / class / title to always open in specific workspace if it makes your life any easier. I haven't used zoom myself so difficult to tell.
A couple of possibilities for Zoom:

• You could make Zoom windows float by default in your i3 config. I seem to recall there was some app I did that with on my old laptop where I used i3.

• Judging by Windows behaviour (which may or may not be the same), it’s Zoom’s fullscreen mode that’s the real problem, most readily triggered by screen sharing. Settings → Share Screen → Window size when screen sharing lets you change it so that this doesn’t throw it into fullscreen mode. This may well improve things. (I know the fullscreen mode when sharing is awful on Windows, given that I’m doing that multiple times a day at present I’ve been meaning to write some AutoHotkey to open the desired things and lay my screen out the way I want it, rather than wasting ten or twenty seconds each time. On i3 I would have done the equivalent of this long ago.)

Thanks for the tip. I'm on macOS using Divvy. When I'm on a zoom and its fullscreen mode has been triggered, I hit esc to end fullscreen, then cmd-shift-(arrow or enter) to put it wherever I want it. With 2 monitors and a handful of easily-defined, keymapped positions, I've never felt a need for autotiling per se. (If I were to get into more sysadmin / SRE -type terminal-based work, I think I'd reach for tux in that context; shrug.)
TBH this is exactly what I do in KDE as well. I've set up window "quick tiling" keyboard shortcuts in the KWin config.

Existing applications just remember where they're supposed to be, while new application windows float by default, and I can snap them into a tiled position on any monitor with a few keystrokes.

Can also just use Zoom web client.

But my guess is if you are in the position where you can use something like i3 for your daily driver, you are in the position to use something better than Zoom.

I’m curious what you have in mind as better than Zoom.
My light usage of it so far, Jitsi meet has proved to be an excellent experience.
I was also astonished that someone who uses i3 would use a fat client for Zoom. I use all video conference tools(Whereby, WebEx, Teams, BlueJeans) in the browser and I haven't had a problem with i3. Video conference tool gets its own workspace and it's done.

My i3 is also set to open new windows in the workspace that triggered the new window so I never have to go fishing for any occasional pop-up, it's where it belongs.

I was actually impressed that Zoom's screen sharing works at all in i3.
Zoom on Linux is terrible anyway. On my system (quad-core Thinkpad with Ubuntu 20.04), Zoom consistently starts using 4*100% CPU during long calls.
> One thing i've always missed from the stacking manager is the window overlap - i do that quite often

You could probably float those windows to solve this problem right?

I do agree about overlap being useful. In some cases overlapping ends up being one of the most efficient ways to use a few tools together to create an optimized workflow.

I made a video about this recently around taking advantage of "always on top"[0]. It's not an example of using a tiled window manager, but it does show how overlapping windows on another window lets you comfortably use a few programs together in a nice way. All operating systems have tools to get this behavior.

[0]: https://nickjanetakis.com/blog/always-on-top-lets-you-pin-a-...

i3 is amazing. Stable, consistent, fast, well designed.