187 comments

[ 3.0 ms ] story [ 200 ms ] thread
my arch setup uses i3, it's not the only tiling wm but it's really nice, light and efficient.
been a long time i3 user mostly for the sane defaults. It requires significantly less fiddling than any other window manager I've tried out.
With exception of the directional keybindings. I wonder how it came to be that the defaults are "jkl;" for the directions instead of the "hjkl" used by everything else (vi(m), less, shells, repls, etc.).
h for help and your fingers rest on jkl; not hjkl if you are typing with proper form
When you're browsing text, though, it's more common to move up and down in text than it is to move sideways.

If you're typing with proper form, "hjkl" results in the index finger moving down and the middle finger moving up. So, your most useful finger is used for the most common action, and your second most useful finger for the second most common action. What's probably the third most common action, moving left would be done with your index finger, and right with your ring finger. You'd never have to use your awkward pinky finger for anything.

With "jkl;", you'd be moving down with the middle finger, and up with the ring finger. Your dexterious index finger would be waiting for the moment when you'd want to move left, which is not as often, and you'd be encouraged to use your awkward pinky finger quite often.

This isn't necessarily the case when working with windows, but by now it's a matter of consistency. Although, encouraging to use the pinky finger and not being able to use the index finger for 2 actions still sucks.

Probably just QWERTY "home row" layout
It seems that the intention was to emulate Vim [0], maybe the author was not familiar with it and made a mistake?

[0] https://github.com/i3/i3/commit/6d0071db197031845b5f77febc22...

IIRC it was deliberate so that users wouldn't have to move off the home row. The User's Guide states this is the reasoning behind it.

> To move the focus between the two terminals, you can use the direction keys which you may know from the editor vi. However, in i3, your homerow is used for these keys (in vi, the keys are shifted to the left by one for compatibility with most keyboard layouts). Therefore, $mod+j is left, $mod+k is down, $mod+l is up and $mod+; is right.

https://i3wm.org/docs/userguide.html

> in vi, the keys are shifted to the left by one for compatibility with most keyboard layouts

I wonder where they got that idea. The keys are "hjkl" simply because they were inscribed with arrows in the machine Bill Joy used when creating vi[1][2]. From [1]:

> Joy used a Lear Siegler ADM-3A terminal... the keys h,j,k,l served double duty as cursor movement keys and were inscribed with arrows, which is why vi uses them in that way.

The StackExchange question has a picture of the keys.

[1] https://en.wikipedia.org/wiki/Vi#Creation

[2] https://vi.stackexchange.com/a/9315/14283

I remember reading about that, but it must have been after I wrote that part of the userguide 11 years ago: https://github.com/i3/i3/commit/1fcad44f66926e679f4af6e4f4d6... :)

Can you send a PR for https://github.com/i3/i3/blob/30e886b0319ee948863a36a65e5b72... with your correction please?

I'm not sure what you want the correction to be. Just delete the note in parentheses? Or change the default to "hjkl"?
Ideally, replace the note in parentheses with the correct historical reason that you explained in your comment here? :)
Isn't the note there to explain why i3 differs from vi? Adding the historical reason why vi used hjkl doesn't seem to justify i3 differing. It's almost irrelevant.

Or do you think that not having arrows on "hjkl" is the justification of using "jkl;"?

Personally, I can't see a good reason for "jkl;". The rationale that those are the keys where the fingers rest has been brought up here, but here is my response:

https://news.ycombinator.com/item?id=22349868

The thing is that I believe the designers of ADM-3A made a good choice in putting the arrows on "hjkl" as opposed to "jkl;". It's much more ergonomic.

s/the justification of/a rationale to/ and s/justify/rationalize/.

Couldn't think of the right word at the time.

i am always surprised when people do not have

noremap ; l

noremap l k

noremap k j

noremap j h

(comment deleted)
Have you figured out how to make i3 move the mouse pointer to the area of the newly-focused window when you change window focus by keyboard? AwesomeWM does that out of the box. i3 doesn't and it's very annoying, because then when my table makes a microscopic movement and causes the mouse to move, suddenly what I'm typing is diverted to another window and weird things happen.
You can fix that with:

  focus_follows_mouse no
It doesn't do what you wanted, but I also can't see why anyone would want a window to focus simply because you hovered over it.
Because why should I have to click to get focus?

Less of an issue on a tiling window manager, but sometimes I really want to be able to type in a window without bringing it to the foreground.

Also, selecting text should copy and middle click should paste. No one can convince me these things are bad or unnecessary.

> Because why should I have to click to get focus?

The click not only focuses but is also passed on to whatever you clicked on, so it's like it was already focused.

> Less of an issue on a tiling window manager, but sometimes I really want to be able to type in a window without bringing it to the foreground.

I don't understand that. You have to somehow indicate to the system what it is you want to type on.

> Also, selecting text should copy and middle click should paste. No one can convince me these things are bad or unnecessary.

I'm 100% with you on that. Although saying "selecting text should copy" makes it sound like it's being copied when selecting, when it's actually copied when pasting.

>You have to somehow indicate to the system what it is you want to type on

You do it by moving the mouse. It makes the mouse more useful because you can now focus things with one less click.

On the other hand, in what circumstance would you want to move your hand to the mouse, move it intentionally over another window without clicking, and _not_ focus it? What would be the point in moving the cursor?

> in what circumstance

Precisely in the one that brought this into topic. It's nice to not have to be so careful with how the mouse moves. When it gets in the way, I can just flick it off, not worried about my stuff changing focus. It also greatly decreases the annoyance of accidentally touching a touchpad while typing.

Fair enough, that makes sense. In practice I don't ever find I make mistakes with the mouse and focusing, but then I am very good with the mouse (after playing those FPS games :)
i3wm does this for me. I don't see anything special in my config that would be enabling that. When I move to a window via keyboard, mouse will center on that window.
Are you running a multi monitor setup?

I've just tested it and it does centre on the window only if the window is on a different monitor.

Myabe that's it. Yes I do. Yeah, it only happens when changing focus to a window on a different monitor via keyboard.
i3 does this, but only if the window is on a different screen.

https://i3wm.org/docs/userguide.html#_mouse_warping

> By default, when switching focus to a window on a different output (e.g. focusing a window on workspace 3 on output VGA-1, coming from workspace 2 on LVDS-1), the mouse cursor is warped to the center of that window.

> With the mouse_warping option, you can control when the mouse cursor should be warped. none disables warping entirely, whereas output is the default behavior described above.

I agree that would be nice, though I've never really minded; If I'm gonna touch the mouse, I'm gonna touch the mouse.

> I agree that would be nice, though I've never really minded; If I'm gonna touch the mouse, I'm gonna touch the mouse.

My problem is that my table isn't perfectly stable, so when I type, my mouse moves on its own by microscopic distances. When I'm in the middle of typing, the results range from mildly annoying to infuriating, depending on how a random application handles given input.

I've just found this video describing a solution (writing a minimal script): <https://www.youtube.com/watch?v=7QeZkq88jTw>

I opened an issue about it in the past at https://github.com/i3/i3/issues/2971 . Apparently it's not on the roadmap, but someone posted an xdotool script in the comments that you can chain with every focus switching command in your i3config thusly:

  bindsym $mod+h focus left; exec --no-startup-id center-mouse
I've been using that and it fixes the issue for me, even though it seems silly that it's not built-in given there's a mouse_warping config setting.

That said, I thought i3's default behaviour was that it would only focus a window when the mouse entered it, not when the mouse was moving around within a window, so I'm surprised you're having that issue. For me I just got sick of my mouse being "way over there" in the odd situation I need it.

Happy i3 user for 7 years, thanks to all of the developers. i3 is incredibly smooth to use. Looking at the bug fixes I've only ever hit one in the wild:

> move workspace to output: don’t create duplicate numbered workspace

and didn't even realize it was a bug, always thought it was an issue with my configuration.

i3 ruined my life. It's an absolute delight to use, particularly when programming. However, its hard to get Linux laptops at work (Mac or Windows), and I constantly miss i3.

Also, among all tiling window managers, I think its config is probably the most intuitive to mingle with. Hardly ever breaks (if ever) between upgrades, and default workflow is very intuitive and explicit. Other window managers (eg. Awesome, xmonad) have pre-defined layouts, which (for me at-least) create more confusion than value.

PS> I think I've been using i3 since 2010 something.

I've been lucky, I've run Linux on my work devices for the past four jobs (since 2012). I would hate to work in a position where I was forced to use a Windows or Mac device.
If you're on Mac, I can't recommend the yabai [1]/skhd [2] combo enough!

I haven't used i3, so I don't know if yabai mirrors the i3 experience, but it's a very nice programmable keyboard-centric tiling wm for macOS.

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

[2] https://github.com/koekeishiya/skhd/

i'm interested in an xmonad equivalent for client work that mandates use of OS X.

these looks good, thanks for sharing - have you tried amethyst?

Yabai gives the basic i3 experience. It's not as polished, but it's pretty great once you figure out a good config.

i3 has the benefit of being in an OS that doesn't use a super key for everything.

For Yabai, I mapped caps as HYPER -- which is good for most combinations.

How did you setup your menu bar? I can't find something that can replicate the i3bar/polybar experience, and I don't like having the native mac menu bar as it is hard to see the desktop I currently am on.
> have pre-defined layouts, which (for me at-least) create more confusion than value.

The reason (at least for AwesomeWM, but DWM too) we use pre-defined layouts is because you can (and should) pass your own functions for each tag/workflow. This way you don't have to manage the layouts manually.

Once you add the custom business logic, it becomes very predictable. Plus, AwesomeWM is modular, so if you want i3 style layouts, you can just do it (https://elv13.github.io/client_tiling/dynamite.html , by me). Of course not all users want/have_the_time to optimize their workflow. Those people should probably stick with i3. AwesomeWM is all about customization/workflow_optimization, that's time consuming, but you have a good ROI.

Can you just use a VM? I run it in Parallels at my work which only has mac laptops.
I love tiling WMs. I'll try out new ones every now and then for a few days, but I always come back to i3; which has been my primary window manager since 2012. It's an amazing window manager and I'm glad to see all the work still going into it.

Sometime this year, I'll have to give Sway/Wayland another try on my laptop. I'd love to switch to Wayland, but the past few releases of Sway there was always something I got stuck on I couldn't patch or work around.

My experience with Sway was the same until the 1.0 release (about 11 months ago). The 1.0 release fixed all the show stoppers and I've been happily using it ever since. It also comes with a few nice things build in like gaps.

To be honest though, there isn't much difference from a day to day perspective between X11 and wayland. A few things are nice (adding and extra screen doesn't reset the video mode) and a few things are worse (recording video). Make the switch when it's the natural choice, don't force it ;-)

I've been using i3 for a few months and can never see myself going back to working without it now. I must say that I think it makes most sense when you have multiple monitors though.
I used i3 for a while and really enjoyed it. Though, I eventually switched back to KDE. I didn't like having to fiddle with power management and configuring screen locking.

I was noticing that I was only using 1-2 tiles at a time and I could easily emulate that by just side-by-siding windows in KDE.

I think if I ever have the chance to use a Linux machine professionally, especially with multiple monitors, I'll definitely reach for i3 again.

i3 couples with desktop environments rather nicely. I've used it with KDE and MATE, and others have used it successfully with XFCE.

My success with it with KDE was a little mixed, but I also didn't make any effort to resolve the little issues. With MATE though, it works flawlessly with no downsides or really any config needed. It's fantastic.

Here is how I set it up with MATE: https://www.mattgreer.org/articles/mate-and-i3/

I also run i3 and MATE. It's a great combo: powerful tiling window manager plus a DE that handles all the settings / control panel well (without me having to do much configuration myself!).
This looks really cool, thanks for sharing!
I found i3 the most useful at two extremes, my 12.5" (1080p) Thinkpad screen and my 43" 4K screen. Both benefit immensely from the tiling and virtual desktop arrangement and especially on the smaller screen the scratchpad.

Yes setup is fiddly at first but on my daily driver I haven't touched the config file in months.

> I could easily emulate that by just side-by-siding windows in KDE.

I'm now on i3 (actually Sway), but when I was still using KDE Plasma, I extensively used the "quick tile" global shortcuts for KWin. They're not all bound by default, but you can set them up in System Settings (Global Shortcuts > KWin). I had it set up so that Win+S maximizes the current window (which by itself is quirky), and then every key around S is for a quick tile. For example, Win+Q moves the current window to the upper left quadrant. Win+D has the window occupy the right half of the screen, and so forth.

The only thing that I do miss from KDE times is the full KDE Connect integration. I have kdeconnectd running through some clever trickery, and the sshfs and MPRIS integrations work fine, but e.g. clipboard sharing doesn't work with Sway yet.

I think that i3wm is amazing for single-monitor development; it lets me switch workspaces as quickly as flicking my eyes over to another monitor.
Agree, I do not understand the need for more than one monitor as your eyes can only focus on one monitor at the same time anyway. It looks cool to have a bunch of monitors in front of you and of course eyes notice stuff going on in your peripheral vision as well but for that one could use some notifier daemon to get the same effect.
At least one use case is typing something in one workspace while looking at another. Incredibly useful when you need to edit config files or edit specific portions of text. Since you only need the parts of where you're "copying" from typing it out is usually much faster.
Sounds like a sub-optimal workflow tbh. Why not copy/paste in the first place and then edit?
Like anything else, it depends on your workflow and preferences. For those of us in Animation/VFX, it really helps having multiple monitors as we have a decent amount of windows to manage interactive graphs, timelines, viewports, outliners, render views at full resolution, reference, etc. Pixel real estate comes at a premium here, and flipping back and forth between workspaces is not efficient in this context. For some in this area a single 4K may suffice, but dual monitors of anything is usually better (for editorial and grading it's essentially a requirement as a dedicated reference monitor, with other departments like comp able to use as well).
I have no experience in this area, so I take your word for it. But is this not at least partly a limitation imposed by the tools you are using?
> But is this not at least partly a limitation imposed by the tools you are using?

Not particularly[0]. It's more about the workflow and representation of data needed to work. To change this would require fundamentally changing the way this work is done, which I'm not sure is possible to the degree where it would make sense.

All of the applications are capable of being used on a single monitor. Windows can be docked, tabbed, hidden, workspaces arranged and saved, etc. It's just that it's not as efficient to work on a single monitor as it'll require significantly more scrolling, panning, zooming in and out, and switching tabs/windows/applications than having another screen to offload and dedicate windows to with the provided real estate. Once you experience having multiple monitors for these kinds of workflows, it becomes a real bother only having access to one. It sounds superficial, but when that's what a large portion of the job entails every little bit helps.

Even when I had multiple monitors, I combined that with virtual desktops to great affect to help focus what each workspace was used for (one for main 3D, one for compositing, one for texturing, etc). They work really well together. If one wished to stick with a single monitor, then using an ultra-wide would be my best recommendation.

[0] There are some areas, where UI's and viewers are written with 8-bit support only, so a 10-bit secondary reference monitor to use with a dedicated output card is required when working with this kind of material 'properly' (accurately, correctly, without dithering, etc). Even when this isn't required, a second monitor is often used as a dedicated full screen viewer anyways so that an image is viewed at 1:1 in its entirety with no scaling artifacts introduced so the artist knows exactly how an image looks.

> your eyes can only focus on one monitor at the same time anyway

True, but peripheral vision is a thing. I have Slack and stuff on a separate monitor, so I can see from the corner of my eye if there are any unreads.

I agree, but as I said, you can have some notification daemon or tray icon to achieve the same.
Is there a way to force certain workspaces to always be on certain monitors?
If you switch workspaces on monitor A, whatever workspace you have on monitor B will not move.

So what you want is already supported. Just don't switch over to monitor B and switch it to a different workspace.

Yes. On my system, for example, I like to pin odd-numbered workspaces to my left screen and even-numbered workspaces to my right screen:

  workspace $ws1 output DisplayPort-0
  workspace $ws2 output DisplayPort-1
  workspace $ws3 output DisplayPort-0
  workspace $ws4 output DisplayPort-1
  workspace $ws5 output DisplayPort-0
  workspace $ws6 output DisplayPort-1
  workspace $ws7 output DisplayPort-0
  workspace $ws8 output DisplayPort-1
  workspace $ws9 output DisplayPort-0
  workspace $ws10 output DisplayPort-1
You can have your cake and eat it to-

  set $monL DP-1.3
  set $monR DP-2
  
  set $ws1L "1L"
  set $ws2L "2L"
  ...
  set $ws1R "1R"
  set $ws2R "2R"
  ...

  workspace $ws1L output $monL
  workspace $ws1R output $monR
  workspace $ws2L output $monL
  workspace $ws2R output $monR
  ...
  
and upidate bindsyms (maybe add a modifier to switch right workspaces..?)

  bindsym $mod+1 workspace $ws1L
  bindsym $mod+2 workspace $ws2L
  ...
For me it makes sense on my single monitor as well. Couldn’t go back indeed. I still wonder why Windows is called Windows, but actually very bad at handling windows if you compare it to i3.
I have a desktop with 3x monitors, and a laptop. And I find it's different but equally useful in both scenarios.

My desktop, i only use 1 workspace per monitor. and i3wm is there just for tiling across large monitors.

My laptop, I only have 1 monitor so I basically mimic a multi monitor setup with workspaces, but tile less since the screen is smaller.

The thing I love about i3 is that the config file is the complete documentation. Forget how to do something? Open the config file. That's it.

<3 i3

And reloading the new config is even simpler with a combination of keystrokes.
i3 is a godsend. I used it for a long time before switching to Sway. I told my brother about it, helped him a bit to set it up and now he stopped using any other WM/OS.
It's one of my most favorite pieces of software. It has put me in a slightly odd spot of hoping to never be required to use Windows or OSX at work though. Hopefully all my future companies let me use Linux.
Still no gaps support on main branch. Devs don't care about what their users want/need.

Happy bspwm user here.

I wonder why that is, but I never understood the appeal of gaps. It's wasted space.

I wonder if people who like gaps like bezel on their screen too.

I think it's aesthetically more pleasing with gaps.
I have nice peaceful desktop backgrounds (e.g. pictures of mountains) that change every boot and I like looking at them. The gaps allow me to do that a bit and create some kind of persistence between the empty desktop and a desktop with a window on it. I do have two large monitors (one of which has almost no bezel and is lovely). On laptops I don't use gaps.

For me it's a bit like having a picture on a desk. It uses up space I could have used for working but I like it.

Some gaps users claim that due to visual impairment, it helps them differentiate windows from each other. I guess you could use larger borders instead but gaps certainly look nicer than that.
There are some vague efforts to bring gaps into i3. However, while it seems like the maintainers aren't opposed to having the functionality in base i3, they are choosing not to simply merge it in because of quality concerns. At the moment, gaps is a somewhat hacky patch on top of i3 with a few drawbacks. They probably won't add gaps until they find an elegant way of implementing them as a core feature.

https://github.com/i3/i3/issues/3724

I guess tiling window managers should be considered more of a specialized niche tool, and in that it is commendable that i3 does such a good job of it. I do really admire it for being so light-weight on resources compared to a lot of the other more popular WMs.

I say a niche tool because I've never really understood why someone would prefer a Window Manager that places a lot of constraints than one that lets you controls / customize the windows as you please and is thus "freer".

I guess it can seem useful for, say, multiple terminal windows. But would suck for a scenario where you have to open different kinds of applications like a browser, file manager, video converter, movie player, terminal etc. etc. (just citing all the apps I have open now and am multi-tasking with) where the ability to stack them would prove to be more productive for the user.

That even control freaks like Apple, who like to think only they know what's best for their consumers, doesn't use a tiling only WM in their OS is telling. Even Microsoft switched from a tiling WM from Windows 2.0 on wards and has stuck to it (Source: https://en.wikipedia.org/wiki/Tiling_window_manager ).

Isn’t iPadOS a tiling window manager?
>Even Microsoft switched from a tiling WM from Windows 2.0 on wards and has stuck to it

Yet they've been steadily adding tiling features since Win7.

Don't believe me? Grab any window in Win10 and drag to any of the corners.

Or use WIN+ARROW. Or CTRL+WIN+ARROW to switch desktop. It's quite slick.
That's true. But my original point stands - they've found that the majority of users prefer stacking windows as that's easier.
I don't know about other tiling WMs, but i3 does let you stack windows. In the default config, super-s makes a vertical stack and super-t makes a tabbed stack.

Most of the time it's easier to keep different windows in different workspaces though. My first five workspaces are always

1. Browser

2. Browser

3. Code

4. Messaging apps (in a vertical stack)

5. Terminals

Pressing the number for the workspace where you keep the window you want is way easier on the eyes and brain then hitting alt tab and examining the pop-up panel to see how many more times you have to hit it.

Stacking in that case refers to stacking in the z-direction, ie. a normal 'floating' window manager
Yeah, I meant overlapping / floating freely resizable windows.
i3 also allows you to open windows floating and turn any window into a floating window
Controllable constrains. Tiling wms give you more hooks than anything else, so more control than anything else. I often have more than 4 or more workspaces in i3 and I love being able to swap between them with ease. Many users of tiling wms have specific hotkeys that grab windows or workspaces or populate workspaces with a predefined layout. Its nice to have programmatic control over the interface to your computer.

E:

> That even control freaks like Apple, who like to think only they know what's best for their consumers, doesn't use a tiling only WM in their OS is telling.

I don't think so. Like any other pro tool it has a learning curve which without a little time investment renders the tool useless. I think the only telling thing about Apple's choice of window management features is that they shoot for the lowest features possible so that users can learn them all as quickly as possible. On-boarding > user control for Apple.

I think the GUI that Apple ships is successful in so far as all of its features are literally visible. You literally have a mouse and a clickable pad, you always have maximize/minimize buttons. Any more advanced software has "hidden" features in that they hide behind menus and hotkeys. Though everything that is hard about "modern" computational interfaces is that discoverability is shit, see [1]

[1]: https://www.fastcompany.com/3053406/how-apple-is-giving-desi...

Window management is truly a preference thing.

I feel the opposite of what you state. To me, a non tiling-window manager burdens me with moving and resizing windows, mostly with my mouse. With i3, its algorithm sizes and places the window ideally 90% of the time, and I fix up the 10% of the time with key commands, never needing my mouse.

My windows being so predictable and so easily maintained with the keyboard enables me to stay in flow much better. I basically never think about my windows, it's just a "solved problem" for me.

It's unfortunate that tiling window managers are really only available on Xorg based OSes. I feel if Windows and OSX had really good tiling window management (the available solutions are nowhere near as good as what something like i3 can do), then tiling window managers would be much more popular IMO.

For me the built in shortcuts to snap things to the left, right, and push to second monitor are all I really need and I get both tiling and non-tiling with windows/OS X/gnome... never understood why people go i3 when the shortcuts are built in to what you likely are already using. To each their own though, if i3 works better for y’all I think that is great too.
Shortcuts are great when you have two windows, not so much when you have more than four
Yeah, it really is about preference. FWIW, i3 allows you to opt out of tiling if you really want to. For me it's alt+shift+space, and the window pops out onto its own layer, and can then be manipulated with the mouse.
Yup, this is what I use for editing. Vifm in whatever directory I'm working it but small and floating. Mod+Spc focuses my nav, Mod+Spc to focus the underlying windows.

Have it set up to spawn vim or VSCode instances using shared buffers and it's crazy handy. I can't go back to vimsplits!

The built-in snapping only works for two windows per screen though. If you want 3 or more, you're stuck with the mouse.
There's the gtile gnome shell extension. I have shortcuts defined to snap windows to predetermined regions of the screen, which can be defined on an arbitrary grid.

That plus gnome's builtin shortcuts to move windows to different monitors and different desktops, and setting alt-tab to "switch windows directly" gives me pretty much everything I need.

Windows don't start tiled, but this doesn't feel like a big drawback. When matplotlib pops up five plot windows I'd rather they stay the aspect ratio they were intended, anyway. But I'll snap my text editors, terminals, and file browser windows to half/quarter of the screen.

It's pretty great, and I get to stay within GNOME which is the 'happy path' for linux desktop use IMHO.

> and places the window ideally 90% of the time, and I fix up the 10% of the time

you can replicate whatever setup you had using i3-save-tree which outputs a json file e.g

  i3-save-tree > .config/i3/workspace1.json
and then load that upon startup (from your i3/config):

  exec --no-startup-id i3-msg 'workspace $ws1; append_layout ~/.config/i3/workspace1.json'
or see full config mentioned in https://news.ycombinator.com/item?id=22303128
I prefer multiple desktops to stacking for the apps you mention, usually split between two monitors. For other things, e.g. file browser next to something else, tiling is what I want on that particular desktop anyway. Most always-on apps live on their own desktop and thus hotkey, works great. I have a script running that renames the i3 workspace to indicate what's on it for the rest.

While I kind of get where you're coming from, contrary to what you describe it's actually more control for me personally. What you call constraint is my preference that I'd otherwise have to handle manually. Sizing is more convenient than what I did before (basically manually adjusting everything to the tiled views, I prefer that both for basic layouts and keybinds or fiddling with the mouse). Plus, at least with i3, you can always bind something to enable floating mode for a particular window if you really feel like it (in practice I rarely do that anymore honestly).

The exact scenario you're describing is a great use case for tiling WMs. I couldn't imagine doing it with windows that occlude each other. In fact, I've been using tiling WMs for over a decade now, and I find my colleagues' use of stacked windows gives me anxiety. You never know where anything is, and they have to constantly alt-tab to find it, or hunt for it with their mouse.

The key to effective use of tiling window management is the use of virtual desktops. The two go hand in hand. That's why Windows and Mac OS don't have it. Windows, btw, did re-introduce a "tiling mode" (or something like it) in their recent OSes. The use case to have two windows next to each other without fiddling with your mouse is just so prominent.

I rarely have more than 2-3 windows per desktop. The browser usually dominates its space completely, and is full-screen, almost always.

EDIT: I know Mac OS has "virtual desktops" now, but in the grand scheme of things, it's a relatively recent addition, and I doubt that many people use it. It's probably more of a power-user feature. But then again, so is tiling window management.

> You never know where anything is, and they have to constantly alt-tab to find it, or hunt for it with their mouse.

Ctrl + UP or "swipe up with three fingers" gesture on Apple Magic Trackpad will reveal all the active open windows and show a thumbnail of all the active workspaces (virtual desktop). It's much, much faster than alt / cmd + tab.

> The key to effective use of tiling window management is the use of virtual desktops. The two go hand in hand. That's why Windows and Mac OS don't have it.

MacOS certainly has virtual desktops and calls it "Spaces" ( https://support.apple.com/guide/mac-help/work-in-multiple-sp... ).

(But yeah, you are right in that some users may not be using it - I don't use it at all. I prefer to use tabbed windows, only have a single monitor and when the number of open applications or windows overwhelms me, I just close many of them.)

> in the grand scheme of things, [Spaces] is a relatively recent addition...

It's not that new. Spaces were added in 10.5 (2007).

Compare to Windows 10, which got a Spaces-like feature (called virtual desktops) in 2015.
I suspect a lot of the appeal is to people who prefer to keep their hands on the keyboard as much as possible. Being able to precisely position a window on the screen is possible to do without touching the mouse, but in practice doing so is very clumsy. By removing the "freedom" to precisely position windows and replacing it with a limited number of slots a window can go into, a tiling manager is more keyboard-friendly -- it's much easier to express "put this window in the upper right corner of the screen" in a few keystrokes than it is to express "put this window at these precise X and Y coordinates."

Combine that with multiple desktops, which can also be switched between with a couple of keystrokes, and you get an environment that's very easy to "drive" without taking your hands off the keyboard.

You make a good point - I am sure there are many keyboard warriors that love controlling their windows with a keyboard only. When I learnt the keyboard short-cuts for Photoshop, I certainly could use it a lot faster. I guess that's also one of the reasons why Tiling WM aren't as popular - there's a learning curve.
> Even Microsoft switched from a tiling WM from Windows 2.0 on wards and has stuck to it (Source: https://en.wikipedia.org/wiki/Tiling_window_manager ).

MS recently added snap abilities with Windows 10 that lets you split / orient 2 windows and control them with hotkeys. This isn't quite a tiled window manager but it is going out of their way to introduce a lighter form of dealing with a tiled interface.

They also released "FancyZones"[0], which is a window manager (although much different to how i3 works unfortunately). It's still in its infancy and likely has years to go before it can be compared to any popular Linux tiled window manager, but they are dedicating resources to the concept.

Until you've used a tiled window manager, it's hard to see the benefits.

[0]: https://github.com/microsoft/PowerToys/blob/master/src/modul...

True. The original point still stands though - both Apple and Microsoft have found that the majority prefer stacking windows as it is easier to learn and use.
> both Apple and Microsoft have found that the majority prefer stacking windows as it is easier to learn and use.

Yes but Microsoft also found that a majority of folks want a tabbed terminal interface and icon emojis before being able to select text with a mouse in a terminal.

So I'm not sure how much credit you can give them for knowing what people really want in the end.

Also, I've spent some amount of time teaching old people how to use computers (ie. teaching my dad how to use Windows better so he can day trade). One of the most confusing concepts to him is how windows can just disappear or "get lost". Stacked windows that can be behind other windows or get minimized by pressing the wrong icon by accident is a lot more confusing than having a 2D plane of existence where you can see everything at once because the only way you end up hiding them is by explicitly doing things to move them into different work spaces.

Why do you feel the need to write such a comment? Not every piece of software is for you. If it's not something you're interested in, there's no need to write up a post about how you Just Don't Get It.

If you are asking a question, do that, but there's no need to trash the idea of a tiling WM just because it doesn't suit your personal needs.

> Why do you feel the need to write such a comment?

To learn and share obviously. (In fact, thanks to some of the other's who replied to my comment and explained their views, I am considering exploring the features of virtual desktop / spaces more now to see if it suits my workflow.)

As for you looking at my comment negatively, that can't be helped on the internet - we all have different personalities and different styles of communication, and everyone of us will, at some point, earn some supporters or piss of someone with what we are saying.

It's also harder to communicate in such a medium because of the lack of non-verbal cues that otherwise would help us better understand what the other person really means.

> I say a niche tool because I've never really understood why someone would prefer a Window Manager that places a lot of constraints than one that lets you controls / customize the windows as you please and is thus "freer".

For maybe 90% of what I do, I have no need for in-depth control or customization of windows. When I work I use a browser, an email client, a couple of more or less permanent terminals and a bunch of transient terminal windows for short jobs. Sometimes I want a window to be slightly wider, I want to group some windows in a separate workspace or I want to temporarily focus on one window in full screen, but that's it. Most tiling window managers will have keyboard commands for achieving that level of control very easily while kicking every other aspect of window management out of my life.

There are cases where I think floating windows are more useful. Some software uses a lot of small windows to be able to maintain a customizable workspace for a good reason. For that, most tiling window managers will allow some windows to be floating.

> That even control freaks like Apple, who like to think only they know what's best for their consumers, doesn't use a tiling only WM in their OS is telling.

What is it telling of? I have no idea what motivated their choice of window management paradigm, but I guess it's easier, considering a large demographic with different backgrounds, to grasp floating windows intuitively. They afford flexibility for a wide range of applications with a minimal language of control gestures, but it's one-size-fits-all. I've been using computers all my life, though, and will probably continue doing it for long more, so I don't particularly need something to be intuitive from the get-go if it improves my workflow in the long term.

Isn't stacking windows mainly useful when using for example drag and drop as a way to communicate between different applications? In the Linux world, one tends to use the file system more for that purpose. I never feel the need to stack windows, except when I have to send a picture over Skype :P
Definitely a preference thing, but how many windows do you actually have open?

At home and work I configure four virtual desktops: firefox, emacs, terminal, misc. I usually have spotify open or more rarely a file manager in misc.

I can then bounce around in an absolute way (don't need to remember alt-tab or cycle history) using <super>+{1,2,3,4}.

I have 50 xterms open, and about 10 emacs frames. I have 40 virtual desktops mapped to super+<key> for most of the keyboard (1-0-z-/) and I roughly map tasks to desktops by spacial memory.
I'm kind of disappointed that you haven't subdivided each xterm window with tmux panes.

Do only casuals comment on HN now?

I don't think looking at mainstream, consumer OSes really say much of anything other than maybe W.I.M.P. paradigm has turned out to be easily teachable and scalable. Are GUIs better because more people use them instead of CLI (I'm not trying to rehash an argument--instead point out they're each better at different things)? Both Apple and Microsoft's pro apps deviate from their own OS' GUI conventions.

Like "pro" apps, every IDE I can think of has their own UI conventions, eschewing their host OS. All I see a tiling WM doing is extending that to the whole OS. Tiling WMs IMHO are great at avoiding the mouse and strapping together your own "IDE" whether that's tailing a log while looking at code next to it, or looking at a result in a browser.

I'm using i3 for a long time, the only feature I'm really missing is `bindsym j [class="google-chrome"] xdotool key Down` so I can make vi like key binding for every program that I use.
If you're still looking, I quite like XKeysnail (https://github.com/mooz/xkeysnail) for that, although it does occasionally get confused. It does seem like it's something a WM should be capable of though.
thanks I'll look into it
So I'm a long time awesomewm user (5+ years) and when I started shopping around for a wm I tried both awesome and i3 (and another I don't recall the name). Awesome was easier to get started with and all the Lua code is easy to understand and use.

However, could someone who used both elaborate on the differences? Would I gain anything from trying to migrate to i3 instead?

At my point of view, only the community size is the difference, but that hasn't bothered me too much as awesome for most part just simply works.

Why change if Awesome works for you?
Just because it works doesn't mean there isn't better things out there. Wouldn't change if the benefits are not greater, obviously, but I find it healthy to always reconsider past choices every now and then.
true. I never thought about it that way.
I moved from awesomewm to i3. The big difference for me when I changed over was that i3 didn't use templates for window placement. In its place is a tree-style system that's fairly intuitive IMHO. In i3 I also frequently switch between tabbed and split/tiled layouts, which IMHO is a killer feature.
I've been using i3-wm for many years and am a big fan. It's great to be able to switch between workspaces so quickly and get such an efficient use of screen "real estate".

My current setup i3-wm on Manjaro, alacritty with fish is exactly what I need.

I've been considering trying out a tiling window manager. I'm curious what people feel they gain using a tiling window manager versus something like Windows/Gnome's screen splitting features. Is it being able to arrange more windows on the screen than just side-by-side windows? Is it keyboard shortcut efficiencies? Is it just cool?
I initially installed because it was cool, but I stayed because I started to think in i3 keyboard commands. Being able to summon a new terminal window and have it slot into place when you have a new thought is another one of those things which remove friction similar to using the command line over a GUI.

I've noticed when going back to Mint/Cinnamon that even though the terminal is only a click/keypress away, I think about it differently because it feels heavier and slower, the window chrome makes it feel more 'desktoppy' and if I want to summon a bunch of them to do a few different things (or one thing with a few different strands) I'll need to put in some cognitive effort to rearrange them how I like them. It's a bit of an immersion breaker.

Having all windows tiled efficiently is awesome if you multitask a lot. If you don’t have a second monitor, it can be pretty comfy.
On my personal machine, I use i3wm, and on my work machine I use OSX with Spectacle (a window tiler).

For me, the killer feature of i3wm is not how it lets me arrange windows on my screen, but how it lets me switch between them. With OSX, I have to maintain a mental stack of recently-used applications: If I'm in my terminal and I want to get to firefox, I have to hit cmd-tab, or maybe cmd-tab-tab, or maybe cmd-tab-tab-tab. At least once a day, I make an off-by-one error and get stuck in a context-shift loop until I pause, think, and do the needful. With i3wm, I have 10 workspaces, and each is available with a single chord press. I have my own conventions about what's where, and there's no cognitive load associated with switching between text editor and documentation, or whatever.

Along the same lines, I like to keep a roguelike open for quick breaks, but ideally I'd never accidentally switch to a video game. OSX gives you no ability to punt an application from your cmd-tab list except to quit the application. With i3wm, I keep that on workspace 0, and have never accidentally switched over to it.

You may think I'm being precious, but it really does make a huge difference in my ability to stay in the zone.

Do you manually move certain apps to certain workspaces, or do you have configurations to do it automatically? I've tried setting up the config to always have Firefox on workspace 3 and Slack on 4, but it doesn't work. I can do it with terminal, though. I've also done the xprop command to find the WM_CLASS property, but still no luck
I move everything around manually on login, and then try not to log out. For a while I was using xmonad, and setting things to automatically land on the right workspace was easy there, but ultimately I like the i3wm experience better.

I saw something in the i3 docs about this feature, but it didn't work on the first try and I didn't dig deeper.

See my dotfiles: https://github.com/Kubuxu/dotfiles/blob/master/i3/config.bas...

'assign' allows you make so if window opens, it opens on given screen Lower, you can see me switch to given workspace before autostarting apps.

I've tried the assign keyword, but I can't get it to work with Firefox or slack

assign [class="Firefox] 3 assign [class="Slack"] 4

But it doesn't work for me

It definitely works. I'm on mobile now but remember that the two parameters in the wm_class correspond to name and class (I always forget which is which) . Also you can use regex in the matching iirc
> Is it being able to arrange more windows on the screen than just side-by-side windows?

Yes.

> Is it keyboard shortcut efficiencies?

Yes.

> Is it just cool?

That too :)

---

Tiling window managers give lots of possibilities for very efficient screen usage: here's my IDE, my terminal, my browser, and my other browser all easily arranged in a nice way.

Plus, i3 also gives you composable stacked and tabbed layouts, for even more flexibilty.

I started using it a couple of weeks ago because I use three or four terminals on one screen, and I was sick of manually tiling them with the mouse. There are several 3rd party programs for MacOS that let you organize windows with just the keyboard, but I couldn't find anything for Gnome. Honestly, if I could find a program to tile terminal windows, not tmux style, but actual windows, I'd drop i3.
You can indeed get pretty far with most screen splitting as supported by Windows/Gnome. Tilers go even further than that and give you a few more nice features.

I run i3 inside Mate (gnome 2 fork). The features I use most are switching between tiled and "tabbed", where you have fullscreen windows that can be navigated between like tabs quickly. I can pull up a browser and terminal or editor side by side, then switch to fullscreen terminal/editor, then back, very quickly.

i3 works in sort of a tree structure, so you can, say, split the root window level into two horizontal frames, then split the left one into three vertical ones, and the right one into three internal horizontal ones (if that's what you want).

I suspect I use the mouse more than most tilers, but I find <mod+Right Click> to resize while the windows stay tiled is quick enough and very accurate.

The gains come a few different ways: from using keys (avoiding mouse); not having to fiddle with window size and placement, windows blocked by other windows, etc.; from making workspaces an essential part of your ui. After using i3 for a bit, non-tiled window management seems very fiddly, and more importantly, a completely unnecessary waste of time and attention.
I initially started using it because I found I could not control multiple screens well with gnome and friends. Moving windows between screens and workplaces, moving workplaces between screens, arranging windows.

Then I got addicted to the speed of flipping between windows and not having to fiddle with layout. Now I only have one screen but it is always the first install on a new Linux.

Nice small and configurable window dressing and i3bar were very nice also.

To me it's two things. Firstly, I don't really like using the mouse. Secondly, the minimalistic design helps me focus and organise things better.

Once you got used to it, you notice other things like the speed and configurability.

But tbh I do think it only makes sense if you do a lot in the terminal, and need to switch often between applications.

I started using tiling window managers when I had a netbook with a tiny screen. Most of the time I would want to run applications in full screen or occasionally split side by side, with minimal window decorations to make as much use of the limited screen space as possible. I found that it makes it easier in general to manage windows and results in less mouse use for me, which is good ergonomically.
If you're looking to switch from X11 to Wayland, you should definitely check out Sway[1]. It's all the greatness of i3 rebuilt on top of a cleaner, leaner, meaner tech stack!

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

>> cleaner, leaner, meaner tech stack!

What does that mean?

Sway is a great project, but I would be careful of using Wayland, as lots of minor issues came up last time I was using it ( death by a thousand papercuts ).

For example, if you rely on years of small x scripts ( xrandr, etc. ), be prepared to rewrite all of them for wayland.

Last time I used Sway/Wayland, I couldn't find a good alternative to redshift. While Gnome has it, I can't seem to just use this feature independently on other DEs.

Again, Sway is fantastic, and I fully support moving off to Wayland. But best case scenario Sway is a drop-in replacement. Most likely there will be some fiddling. Especially if you've been using i3 for years and have built a custom ecosystem around it.

There's a patched redshift for wlroots compositors (sway is the most prominent one) on AUR, works perfectly in my machine.
I'm also holding out with i3 until the wayland ecosystem matures a bit more.

I am thankful that a wayland equivalent already exists though.

I found similar issues. One other showstopper for me was the lack of keyboard/mouse sharing ala synergy or barrier.
I switched to Sway a couple days ago and to be completely honest I'm not sure what I gained from it besides Wofi feeling more modern than Rofi. I don't regret the switch but I don't feel like it was a good choice either.
Somehow I read that host name as “I3MW” and thought it’sa site for the BMW i3 car.
Huge shoutout to all developers of i3, I absolutely love it! Since I started using it, the connection to my machine improved vastly. The precious pixel space of my X230 finally felt utilised fully!

I never had any issues with i3. Cannot recommend it enough!

For anyone here who loves i3, but has always had trouble getting full integration to work on their laptop ( sleep, screen brightness, etc. ), check out the Regolith project[0]

It's a curation of several tools combined with i3 that gives a pretty fantastic gnome/i3 experience. Similar to spacemacs and emacs.

[0] https://regolith-linux.org/

I tried that for a while and I did find the integration very well done. I ended up going back to my automatic-tiling Gnome/Xmonad ways (thanks Gekkio!) but that was all about window manager preferences themselves rather than any fault in the Regolith project.
This is really nice. The key bindings out of the box are really useful.
This looks cool. I didn’t immediately see anything mentioned, but can I set this up as an alternative WM and select it in my gnome-login-manager screen? Or do I have to install it as a completely separate DM?

Also, is this really only for Ubuntu?

>> can I set this up as an alternative WM and select it in my gnome-login-manager screen?

Yes.

>> Or do I have to install it as a completely separate DM?

I'm not sure what you mean. The Ubuntu package provided lets you select this desktop from the login screen ( as opposed to i3, Plasma, or Gnome ). This is essentially a new Desktop Environment, made up of gnome and i3.

>> Also, is this really only for Ubuntu?

Unfortunately yes. I've tried looking at packaging this for Arch Linux, but it looks like quite a bit of dependencies are forked ( i3blocks is now i3xrocks ). Not everything is pushed upstream. Getting this to work on non-ubuntu based distributions looks tricky if you're not familiar with packaging already.

> getting full integration to work on their laptop ( sleep, screen brightness, etc. )

I managed to golf some tiny generic inline bash scripts that fit directly inside my i3 config for screen brightness and keyboard brightness using /sys/class with generic name matching and no hardcoded values. They do require an external sudoers entry for each /sys/class unfortunately but that's because they require root perms by default.

These have served me well across multiple desktops and laptops without needing to customization for each piece of hardware.

I can post if any interest...

Yup, if you can post it, it will be greatly appreciated! I honestly find it hard to configure i3, especially for brightness...
one hacky way to configure it is too install xfce4-power-manager and then run it in your config file. then the power manager will also handle the brightness keys.
What about sleep, display management when pluging in another monitor? etc.
If you are looking for usage from just i3, I am using xrandr to enable/disable multi-monitor:

    $mod+Shift+p exec "xrandr --output HDMI1 --auto --right-of eDP1"
(that with enable second screen through HDMI when Win+Shift+p is pressed)

    $mod+Shift+o exec "xrandr --output HDMI1 --off"
(that disables second screen)

    bindsym $mod+Shift+x move workspace to output HDMI1
(that moves an entire workspace to the 2nd screen or any screen with the given id)
Shunting workspaces about is a great idea.
I have a set of scripts that extend my screen to the right at max resolutions and reflows the workspaces in numeric order. It is generic enough to work with any number of displays.

You might need X11 python bindings and other dependencies that in general should be available on most distros.

See if it works for you, enjoy:

https://github.com/riccardomc/rcs/blob/master/scripts/.scrip...

Not OP, but here are the lines my i3 config:

    bindsym XF86MonBrightnessDown exec "xbacklight -dec 10"
    bindsym XF86MonBrightnessUp exec "xbacklight -inc 10"
Sorry for delay:

In your i3config for screen and keyboard...

    bindsym XF86MonBrightnessDown exec "sys='/sys/class/backlight/*backlight';\
        bri=$(cat ${sys}/bri*); max=$(cat ${sys}/max*);\
        val=$(($bri - $max / 32)); val=$(($val < 0 ? 0 : $val));\
        echo $val | sudo tee ${sys}/bri*;"
    bindsym XF86MonBrightnessUp exec "sys='/sys/class/backlight/*backlight';\
        bri=$(cat ${sys}/bri*); max=$(cat ${sys}/max*);\
        val=$(($bri + $max / 32)); val=$(($val > $max ? $max : $val));\
        echo $val | sudo tee ${sys}/bri*;"

    bindsym XF86KbdBrightnessDown exec "sys='/sys/class/leds/*backlight';\
        bri=$(cat ${sys}/bri*); max=$(cat ${sys}/max*);\
        val=$(($bri - $max / 32)); val=$(($val < 0 ? 0 : $val));\
        echo $val | sudo tee ${sys}/bri*;"
    bindsym XF86KbdBrightnessUp exec "sys='/sys/class/leds/*backlight';\
        bri=$(cat ${sys}/bri*); max=$(cat ${sys}/max*);\
        val=$(($bri + $max / 32)); val=$(($val > $max ? $max : $val));\
        echo $val | sudo tee ${sys}/bri*;"

The only annoying things is that you will need to add NOPASSWD sudoers entries separately for:

    /usr/bin/tee /sys/class/backlight/*/brightness
and

    /usr/bin/tee /sys/class/leds/*/brightness

These are the only complex part of my i3config, it might seem a bit lengthy compared to installing xbacklight but for me that tool could only ever fake it by changing the pixels rather than the backlight (on every piece of hardware I have tried).

The nice thing about scripting /sys/class directly is that other than the permissions it is self contained and you can easily adapt above to any other stuff it presents on your particular piece of hardware.

The value 32 is the number of divisions over the range, so it should be consistent across different hardware, but you may want to adjust it to taste still.

... awaiting more golfing like a sed oneliner :P i wrote this quite a long time ago.

> for me that tool could only ever fake it by changing the pixels rather than the backlight (on every piece of hardware I have tried)

I'm curious - I've done it both ways, scripting /sys/class and using xbacklight. On my X230 I used xbacklight, and it seemed to work fine. How would I tell if it wasn't changing the backlight itself? I'd rather use /sys/class to get it right.

Also, here's my /sys/class code - not sure where I got it, but I probably adapted something I found. I assume it works, but it's been commented out above the xbacklight version for some time. :)

  bindsym XF86MonBrightnessDown exec bctl="/sys/class/backlight/intel_backlight/brightness" && echo $((`cat $bctl`-68)) | tee $bctl
  bindsym XF86MonBrightnessUp   exec bctl="/sys/class/backlight/intel_backlight/brightness" && echo $((`cat $bctl`+68)) | tee $bctl
> How would I tell if it wasn't changing the backlight itself?

With the exception of OLED (no idea if laptops use that stuff yet), when the LCD is fully opaque on i.e rgb 0,0,0 the backlight LED will still bleed through - Modern LCDs are much better at blocking out the LED than they used to be so it's not always obvious in a well lit room.

If you reduce the brightness to 0 with xbacklight and then sleep the computer: The display will perceptibly dimm much further as it turns off (since this guarantees the back-light is turned off). If you use sys/class method it's possible to turn the backlight completely off so that there is no perceptible difference when you sleep/poweroff the computer.

On the older LCD panels when poor contrast ratios were common it's very obvious that xbacklight is only affecting pixels. I've never seen this tool affect the actual backlight but maybe it does have that mode?

Your script is essentially using the same method although in theory it's not as portable since the path is exact and it uses a hardcoded interval, you may have to tweak both for different machines. My one uses bash path expansion that is more likely to match other path names, and derives the interval from the max value... I honestly haven't looked at the variety of possible paths for /sys/class/backlight and max values so maybe I was over anticipating when i wrote this.

Interesting. Thanks for the explanation. And I agree, my script isn't that flexible. I believe that " | tee" was left in there from when I tried to skip the sudoers entry...it's definitely not pretty.
This sounds great. I've used an i3 dmenu setup and is was nice. Re configuring however sounds unpleasant.
+1 for regolith and the quality Slack community around it! Ken is awesome!
I've always liked i3 a lot but it was a real pain to get some stuff working (like connecting a new monitor, or having to deal with wifi and bluetooth, or using two different keyboard layouts). Everything had to be configured, and while that's great for understanding how things work together, it's pretty painful when you're just trying to get stuff done.

All the pain went away when I found Regolith [0], which I heavily recommend. It's i3 with Ubuntu but it comes with sensible defaults, a nicer theme and shortcuts to all the configs you could need out of the box. It really makes things a lot easier than using just i3, especially when doing a fresh install (it's available both as an installable image and as a package - I've had no issue with either).

Some default shortcuts are different so if you've been using i3 for a while you'll have to iterate a bit over the config to get to a comfortable point, but it's the same config file. I also changed the default terminal back to gnome term, since their default one doesn't have a scrollbar, but again it's pretty easy to do and you only do it once. All in all, really made my life better.

[0] https://regolith-linux.org/

I personally didn't encounter any problems whatsoever installing a clean i3, but for anyone searching a batteries-included version of the window manager I've heard a lot of good things about i3-Manjaro (cf. 30-minute review on Youtube [0]).

[0] https://www.youtube.com/watch?v=-vG9ORRUkUQ

If you're on Windows and are upset that nothing like i3 exists, you can get a useful but watered down i3-like experience by:

1. Using Windows 10's snapped windows along with various Windows key + arrow key hotkeys[0] for managing windows.

2. Using DexPot[1] for hotkey controlled virtual workspaces (same ALT + N hotkeys as i3)

3. Using Keypirinha[2] for fuzzy finding programs to launch (similar'ish to dmenu for launching apps at least)

Combine that with WSL + tmux + terminal Vim and it's not bad for day to day development. I've been using the above for over a year for full time development and while I miss my i3 set up on my native Linux laptop, it's manageable.

[0]: https://support.microsoft.com/en-nz/help/12445/windows-keybo...

[1]: https://dexpot.de/?lang=en

[2]: https://keypirinha.com/

I have been using i3 for a long time and here are some advanced features that I'd love it to have.

1) Workspaces of workspaces

Let's say I'm working on five projects at the same time. Each project usually has totally different workspace configurations.

For example:

Project1 might have workspaces 1: dev, 2: mail, 3: tail -f access.log

Project2 might have workspaces 1: photoshop, 2: mypaint, 3: shell

Project3 might have workspaces 1: trello, 2: research

...

This is like tmux sessions. I can have multiple sessions, each session has multiple windows and panes. In tmux this works very well but in i3 you can'd do that.

I'm currently emulating this by running five independent i3 copies on five displays :1, :2, :3, :4, :5 and I switch between displays to switch to another project.

2) Static tiling

I3 is a dynamic tiling manager, which means it uses the entire screen. However, once you establish your workflow, you often have windows that take 1/3 of the screen and are 1/3 off the top, etc. and you don't really want them to take the entire screen because it makes you less productive and it feels weird. Also, once you establish your workflow, you don't want the workspace to change or resize. You just know where everything is and don't want a slightest disturbance in your workflow.

This is often hard to do in i3 and you need to use tricks such as vertical and horizontal splits of empty terminals to put the app where you need it to be. And it's extremely easy to mess this up, if you accidentally open a new terminal. Then your app resizes and shifts, and when you close the accidental terminal, it's no longer where it was because of many vertical and horizontal splits.

I found Notion window manager that is static tiling but I haven't tried it. It can also have tabs inside static tiles, which makes it very interesting.

3) Run or raise

Run or raise starts a program if it's not running, focuses it if it's running, and hides it when no longer needed.

For example, pressing alt+n starts and shows a notepad if it's not yet running. If it's running, it focuses the notepad and pressing alt+n again hides it.

I3 doesn't have this feature but it can be emulated via xdotool and scratchpads.

4) Using fzf instead of dmenu

Dmenu is nice but you need to type too much. The solution is to use fzf instead of dmenu.

I'm currently displaying a floating sticky terminal window that runs fzf, gets my input, performs the action, and disappears. It's so much faster than dmenu.

5) Using fzf to switch apps, workspaces, workspaces-of-workspaces

Often, when you're working on project2, you remember you had similar idea/code/notes in project4. You then have to switch to display :4, then switch to correct workspace and find the info.

This could be simplified by using fzf and just instantly switching where you need.

6) Using alt-tab to switch back to previous place you were.

Let's say you switched from appx in project2 on display :2 to appy in project4 on display :4, and now you have to cycle between them. You can't do that right now so the workflow isn't perfect and there's a lot of drag.

Notion seems to have my ideal tiling paradigm for the same reasons you describe, however it seems to be kind of buggy with modern applications, with repect to window and input focus especially.
Quick and shameless plug: I wrote a windows 10 style, true transparency enabled notification center/daemon, extending on the concept of dunst: https://github.com/phuhl/linux_notification_center

Feel free to check it out and give it a try.

PS, for the enthusiasts: 100% written in Haskell

A great use case for i3 that is my daily driver is as a remote desktop windowing solution. My i3 desktop state is preserved and sanely laid out if I'm at home on a 15" laptop, at work on a 30" monitor, or even on my portable 12" laptop while I'm in meetings.