1 | ||
1 | ||
1 | ||
1 |
I'm picky when it comes to interfaces. For a while I've been using a floating window manager, but recently I switched back to a tiling one. One thing I noticed is that the interface is less distracting. When windows hover above each other there's just too much going on for me. I find dynamic tilers (like dwm) likewise distracting because they try to present all the windows side by side. But manual tilers are better. With these you can split the screen into frames, and each frame can only show one window at a time.
My window manager of choice is notion. This is one of the few tabbed tiling window managers. It looks like this. So there's no clumsy cluttering. Instead of showing everything, new windows simply become tabs inside the same frame that you can still access quickly.
This comes close to my needs but it isn't perfect. Here are a few issues I have with it.
Tabs are wide and sort of scream for attention in their own way. Do you start to feel anxious when you have to many tabs open in your web browser, like you better process them asap so you can go back to a single open tab? That's because of the screen estate they take up. I recently posted an article about this:
Now you have this problem with the window manager as well. Sure, you can divide your windows over multiple desktops. For some reason I never liked that workflow. Ideally I can just open a new window without thinking too much about where I place it.
On top of this, the tabs in notion don't have window icons. These would be great to have, since they make it much easier to find your window than titles. In fact, if you show icons, you don't even need titles anymore. That way you can save screen estate, remove distractions, and make windows more findable. There's a reason why this is trending. The macOS dock uses icons only, Microsoft has been doing this since Windows 7, and the new Firefox supports a vertical tab bar that only shows the favicons. It's simply better.
So one improvement I'd suggest would be icons instead of tabs for the windows.
Floating window management isn't essentially bad, as is demonstrated by how most tiling wms still support a stacking layer. They have to, and popups are a prime example of why. Notion doesn't detect every popup as such, so sometimes it opens in its own tab, and then a small dialog window takes up the entire frame. And even if it detects them, it places them at the bottom of the frame with full width. It just looks awkward. It should display the popups in the middle of the frame with the same sizing that it has in a stacking wm.
Tiling wms tend to do away with a couple of good features that stacking wms have: minimization, alt+tab switching, and full mouse support. Notion actually preserves the latter quite well. This is thanks to the tabs that I can click, but I can also drag a tab to a different frame to move the window, or right click it for a menu. In this way it trumps i3 (which only lets you switch focus / change desktops with the mouse), but isn't as good as Bluetile.
But minimization is lacking. In a stacking wm you can say: stop showing me this, show me what was shown previously instead. Now my only option is to close the window. I want to be able to hide the tab as well. If icons are used, this need will be decreased, but it'd still be nice to have. A toggle to show/hide minimized icons.
And finally there's alt+tab switching. This was possible when I first used notion 15 years ago, the man page pointed out the key binding. But ever since then they've simplified the default key bindings and made many features less accessible. I'm sure it's still possible if I configure it manually. I'm not motivated to do that right now. Window managers should work with minimal configuration (one of the advantages of stacking wms).
That's my quick fix that'd make notion behave according to my needs. Now I want to hear your opinion. If you could create a window manager from scratch, how would you design it?
If I were designing a window manager I think I would mostly go with the same layout as most floating window systems. But I would highly encourage applications to make use of the title bar the way chrome does. No wasted space. No loss of verticality. Maybe to be different I would give users the option of having window decorations be on the side. If an application isn't going to make use of that space and there is going to be a ribbon of waste then users should be able to choose what is being sacrificed and be able to alternate quickly.
It should also have an easy switch into tile mode but there are some different priorities I'd have over tile mode. One problem I have with tile mode is that certain windows end up larger than others and often this is a consequence of where you want to place it and the history of window creation. These are two things we could wish were irrelevant. Also how vertical vs horizontal a tile ends up. My intuition for how this gets fixed but I more detailed thinking would be needed is making mutation of the tiling first class. If there are going to be gaps at all they should do something. Clicking toward the center of them should swap the two panes. Clicking toward the end of a gap should rotate them. So if there is a rectangle that could encompass them and they were horizontal now they are vertical in that tile. You should be able to drag a tile from one location to the next. It would be interesting if you could "shadow resize" a tile before a drag. Then there would be some red lines over the window indicating what the target size will be. Then you drag it to the area you want and also has the target size. The reason being is that either a resize of a tile or a move is going to fuck with the size of all other tiles to make it happen. If you want both things to change it would be bad to fuck with them twice, or to fuck with what will be it's former neighbors.
But this is why I don't like tile mode in general. To many consequences on things that matter from sources that shouldn't matter. Too little ability to change an opinion later without everything needing to be fucked up to conform to the new opinion.
Maybe what would be cool is a tile-float mode. Where tiles can overlap and be dragged. The point is you can make a general edit of everything (sizes and locations) and then snap it back into tile mode.
My tile mode would make a lot of use of the mouse for one reason. I already use tmux for keyboard heavy things. I would use tmux even if I was on a tiling manager because I want my key bindings for managing terminal tiles to be the same if I'm on a server or local. So if I'm going to run two layers of tiling I want the outer one to be compfy.
I also think zoomed in mode is correct. You should really only have one application visible at a time with a few exceptions. So tile vs window becomes a question of what we want the in between mode to be. Tiling takes so much management to be good just to have something that is a tiny bit more interesting or custom than the in between mode being icons or an alt-tab accordion.
Or, other thing I would do if I made a tiling WM is have a minecraft like inventory bar where you can take windows out of the tiling but keep them running. You could then go to different tiling instances and drop them in. This hot bar would likely be more active during the flow-edit mode.
One more idea. Since zoom mode is correct I've realized a better way to deal with the waste ribbon. The only button we really need up there is exit. But because every application is zoomed exit is in the same location every time. So let's disassociate it with the window. A window takes up all space. No waste ribbon. Putting your mouse in the absolute top right position and clicking closes it. Maybe left clicking there minimizes it (but really just use alt-tab).
Alt-tab opens the tile mode as one option between having tile mode or accordion mode for non-zoom mode. Accordion is default for most people's non-zoom mode.
I think you're mostly thinking about dynamic window managers. Manual ones like ratpoison really don't come with the unnecessary hassle you mention. I think you'll like that one in particular.
I think you have good ideas for the most part although there are some things I don't follow. What's accordion mode? And I don't understand the part about "mutation of the tiling first class" and gaps.
That's one of the advantages of tiling wms, that they don't waste screen estate on thick titlebars that don't do a whole lot. The problem with a kiosk wm is that most people have widescreens now which aren't so good for viewing only one thing. Webpages will be too wide which makes it more difficult to read articles because there are fewer line breaks. You know of my gripe with that. This is really the reason why I turn to a manual tiler, so I can split my screen into two frames, one taking roughly 2/3rd of the screen for the main things, and the other one taking 1/3rd on the right side which I can use for chat applications and the like. Just something simple.
Well, if it's really gonna be kiosk, presumably you'd still want a taskbar for task switching with the mouse, launching new applications, viewing the time, etc., right? I would put a menubar on it as well. You can then put the close button in the corner of that.
@JasonCarswell