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.
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.
- 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.
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.
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 tiling terminal apps, I just use the tiling feature of KDE's Konsole, and used to use Terminator.
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.
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.
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.
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.
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!
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.
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. :)
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.
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.
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 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
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...
Tiling many windows (some being small) is what tiling is about.
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.
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!
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.
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.
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.
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.
Edit: it is also lightweight, with proper power management (think TLP/Powertop) you can vastly improve your battery life.
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.
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).
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.
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.
Ehm..thanks...thanks allot!
[1]: https://github.com/NsCDE/NsCDE [2]: https://www.reddit.com/r/unixporn/comments/jvnzkb/prismwm_in...
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.
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.
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.
Just press Super+w and all the window's (the new ones too) are arranged in a tab format.
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.
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.
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.
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.
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.
It's made for "tilling incompatible" applications or stuff you want always on top, it's not made for a floating workflow.