Hacker News new | ask | show | jobs
by MiddleMan5 1464 days ago
I've used i3 on top of ubuntu 18.04 gnome for the past 4 years, and it's been mostly a positive experience.

Pros: - Updates are consistent, very rarely do I experience a bug - Configuration is straightforward and flexible; simple yet very customizable - Integrates well with plugins like polybar (customizable toolbar) and rofi (tui app launcher) - Easy to position windows across multiple monitors Cons: - Very barebones - Difficult to configure apps that use multiple floating windows, splash screens, dynamic docks (gimp, eclipse, teams) - Programs can grab focus way too easily - Lacks smooth transition of control between windowed and floating modes

I wished there was a wm that gave me the simplicity, stability, and snappiness of i3, but with better floating window support, and context menus to configure common window properties

3 comments

>rofi (tui app launcher)

rofi and dmenu are not TUI but built on top of lean native graphics APIs (`cairo` for rofi and `X11` in case of dmenu)

> I wished there was a wm that gave me the simplicity, stability, and snappiness of i3, but with better floating window support, and context menus to configure common window properties

I think the "traditional" family of tiling window managers (like ratpoison, awesome, dwm, xmonad, i3, etc) are kind of simplistic in their assumptions that 1. they can at any time force any window into any size and position, and 2. they must always force every window into some size and position.

In my opinion, a good algorithm of where to place a window (and what size to use) would go like:

1. Where the user expects it (e.g. last position)

2. Where it doesn't obscure anything else (optimal use of screen real estate without forcing a specific size/position/layout)

3. Wherever the application thinks it's best (the WM should never need to hardcode/configure rules like "GIMP is like this" or "xcalc works best with that")

As for automatic tiling, I'm a big fan of what Windows is doing, and would love the traditional tiling WMs to iterate on this idea, while recognising floating windows as first-class citizens.

> I think the "traditional" family of tiling window managers (like ratpoison, awesome, dwm, xmonad, i3, etc) are kind of simplistic in their assumptions that 1. they can at any time force any window into any size and position, and 2. they must always force every window into some size and position.

Interestingly I like tiling window managers due to specifically the opposite perspective, that applications are often selfish in their assumption that they can display themselves wherever they like and I much prefer ignoring their (usually-wrong) assumptions about what's best. I don't mean that argumentatively, just a different preference I guess.

In this respect I even agree with the first two steps of your algorithm - it's just that "in my tiling layout" is the result of both of them!

> Interestingly I like tiling window managers due to specifically the opposite perspective, that applications are often selfish in their assumption that they can display themselves wherever they like and I much prefer ignoring their (usually-wrong) assumptions about what's best.

It really depends on your perspective I guess, but I'm of the exact opposite opinion: the window manager has no way of knowing what is the optimal size for an application window, because if it did, it'd be trying too hard to do the application's job. Say I'd like to display a picture in a separate "preview" window. The picture could be larger, or roughly equal, to the available screen space: in this case the optimal size for the window is to take up as much space as there is available (not necessarily full screen - you may want to keep another window open and visible). But if the picture is smaller, making a bigger window would just waste the screen real estate. The window manager has no way of knowing these things - it can either trust the application to make the right call, or disregard it, in the latter case making it the user's problem.

I work on a 43 inch screen and most "traditional" tiling WMs are completely unusable, precisely because their assumptions about optimal window sizes are almost always completely wrong.

In my opinion, even on a smaller screen, if you need your window manager to constantly "fix" what your application is doing, then the application sucks. If a window manager can only assume all applications suck, then it itself, must also suck for applications that don't. It's a no-win scenario - you need to be able to trust your software.

> As for automatic tiling, I'm a big fan of what Windows is doing, and would love the traditional tiling WMs to iterate on this idea, while recognising floating windows as first-class citizens.

Is there a specific thing you're thinking about, or is it the "zone" style tiling (either the out-of-the-box approach of left / right / corner or the Fancy Zones)?

If it's the basic, I don't know how that could be automated once you're running out of zones.

If it's not automatic, then I think that's a quite different approach. Of course, no one has to like TWMs, but I think there's value in not having to really think how to set up your windows, and just let the WM do its thing instead of moving them around by hand.

However, I also think the concept of a pre-defined layout, combined with the WM remembering which window goes where is interesting. I tried this out at one point on Windows. But after some time I realized that while the zones I'd defined were mostly right, I sometimes wanted to change them. And that's not very straightforward, in that I have to go and change the config and the change now becomes the default. I haven't found a way of manipulating zones (or, ideally, groups of zones) in an ad-hoc manner, like I can with i3. Things like if I increase the size of this window, then its neighbor is reduced by the same amount.

What I like about Windows' way is that it brought the concept of tiling to the masses, by making it extremely intuitive for beginners (it does roughly what you already meant by moving a window to that half of the screen), AND easy to advance towards being a power user (use win+arrow to tile left/right, etc).

I'm not a Windows user, so I haven't explored what else it's capable of, but that's exactly my idea of a good tiling WM: I don't want to read a man page or tweak a config file, I want it to do what I mean out of the box, and give me a linear return on investment for the time I spend studying the more advanced features.

I'm personally a fan and user of dwm for its simplicity and minimalism, but dwm occupies too much of my attention when all I want is "I want this window on the right, that on the top left, and that one below" - I have to think of masters, nmasters, layouts, all that crap; all while handling the floating windows sucks big time (can't even do it one-handed).

My Hammerspoon config[1] allows me to do that: cmd+opt+left pushes a window in that direction, cmd+opt+ctrl+left grows or shrinks it depending on whether there's space to the left of it, etc. I think it's still very far from ideal, but it's an interesting iteration and an improvement to a system that has no tiling at all, but excellent floating.

[1]: https://github.com/rollcat/dotfiles/blob/master/.hammerspoon...

I discovered i3 when looking for tiling solution and found it remarkably productive.
Ditto. But I think the issue is that it does things its way, so you have to be OK with not insisting on doing things how you used to. This was the biggest hurdle for me.

But now I love it so much and have become so accustomed to its way of managing windows that I find myself mechanically reaching for my mod key whenever I'm on a different WM. I even find it irritating, when on macOS or Windows, to have to grab the window, move it around, adjust its size, etc. Bonus points for the new style Windows windows with controls integrated in the title bar and next to no area to grab.