Infinitely Nested Window Management
amadeuspagel.com
amadeuspagel.com
I'm not blaming apps creators, cause (AFAIK) this whole "tab into window" transformation is completely custom made by browsers and also at least somewhat hacky.
Would be nice for microsoft to notice and make a 'tab' a native component, and automatically handle transformation. Especially since their own, non-browsers apps like explorer, terminal or even notepad started to implement tabs. But without that ability to rip it out, it really feels unfinished.
If it was native, we could even stack tabs from 2 different apps next to each other, as if they were websites! ...full circle back to task-bar :[
Haiku can do that:) I think I've seen it in X11 window managers as well but I don't recall...
macOS made the tabbing native by giving windows (only of the same app) the ability to get merged into a single window with a tab bar (in Sierra https://www.macworld.com/article/228274/how-to-use-tabs-in-m...). It all has the same behaviors as Safari, including the one of “popping out” a tab into its own window. Apps that use the native window controls and the native window lifecycle manager get it for free and by default, but there is no way to get it otherwise (AFAIK), and apps can opt-out.
Windows 10 had this feature for a while in the Insiders build, called “Sets” (https://arstechnica.com/gadgets/2017/11/tabs-come-to-every-w...), which made every window available to be tabbed together with any other window, from any app, no specific code or framework necessary. It worked very well and was neat af, but it got scrapped :( https://www.windowscentral.com/microsoft-shelves-windows-10-...
There is a reimplementation of this by Stardock https://www.stardock.com/products/groupy/
On a personal note, I’ve been using Arc’s implementation of Spaces and Tabs, and it feels super natural and productive. With some tweaking, I think this would be a great UX for window managers, and I’ve found myself really needing it for my whole OS. Maybe Stage Manager can get there at some point (although right now it is bad as hell).
As it is, it never seems to work quite right and is easy to activate accidentally. Dragging a tab slightly downwards in firefox, but not out of the window at all, only out of the tabbar region, will result in that tab being turned into a new window. I would expect new windows to be created only if you drag the tab outside of the current window, but that's not how firefox does it.
This is easy to do accidentally if you are being sloppy with your mousing, and particularly, if you're using a touchpad with libinput which sets "Tapping Drag Enabled" to 1 by default. Tap the tab button, put your finger back down on the touchpad and move the cursor... ooops you just dragged the thing you clicked!
I agree to some extent, that there should be more structure or integration to workspaces.
tabs should be a part of the windowing system, for example, not something apps do themselves (and all differently). Then, the windowing system could support breaking out tabs to new windows, navigating between them, etc, in a manner consistent with the rest of the window system. The same with terminal multiplexers, etc. With text editors, some text actions could be defined universally, and mapped to keystrokes, so that in any editing environment, you have a consistent set of affordances. Why is the editor managing 'splits', when the terminal multiplexer, if not the window manager, should be doing this? You end up having to define (often conflicting) key mappings in multiple apps to get any kind of overall-usable/consistent setup.
Etc. I agree the current situation is a mess.
How do you switch to other apps, or between virtual worksapces though? All that's defined by the terminal emulator, or window system, outside of nvim, and hopefully it's consistent or at least doesn't conflict.
So I guess the OP argument is that everything should be in the 'window manager' garden, instead of all the apps making their own little alcoves with their own custom little languages.
I wonder if anyone already made tabs for StumpWM..
>That is the state of window management today
Why is this insane? Unlike directories in a file system, different levels of windows are conceptually different; it would make no sense to be able to embed a workspace (top level) into an alert box (lowest level), or a browser tab (middle level) in a terminal (unrelated middle level).
That the author has no justification for why they think this is “insane” nor any suggestions for what should be done differently speaks volumes.
For example, I might have a web server running in a terminal and the website open in a browser tab. Wouldn't it make sense to have the terminal in a tab, next to the browser tab?
Or I might see some error message in the terminal and google it in a browser tab.
Yes, the operative word is next to. This is already possible with any of today’s window managers (just drag the windows next to each other). In fact, certain tiling window managers (e.g. i3, notion) make it possible to permanently place the terminal as a tab next to the browser window, and move the two around as a unit.
You still haven’t made a case for arbitrarily nesting windows, which was the feature desired in your original post.
Currently, the text editor can have tabs, but they are all text files, the terminal can have abs, but they must all be terminals, the browser must all have tabs with pages...
The whole desktop being managed like an IDE seems like it would accomplish it.
On a separate note, there seems to be something wrong with the analogy you're using. You say it does not make sense to have a terminal in an alert box. Going with the filelsystem analogy the author suggested, that would be like having a directory inside a text file. Yeah, it doesn't make any kind of sense. There are intermediate nodes (folders, windows, tabs) and leaves (files, editors, web pages, videos, terminals). The point seems to be to have infinitely nested intermediate nodes, and leaves at any level. So the alert box could be inside 5 window splits and 3 tabs, but of course inside it would never be anything else.
But with i3/xmonad, if I run vscode or intellij, can I have the file explorer view be in a different place in the hierarchy than right next to the source editors?
vscode doesn't let you split out the internal file explorer view, but the reverse is possible- you can quickly open any file in its own window, which can then be placed arbitrarily.
Many tiling window managers also allow you to group arbitrary windows into tabs.
ChromeOS does this with crosh.
But what about a workspace in a workspace in a workspace etc.
One is a limit based on the logic of a hierarch, the other ist jus a limit.
The former is a strict rule, no workspace in an alert box, the latter depends on the level inside the hierarchy, one is obvious, one might be hard to know and keep track of.
That sounds a lot like jupyter
why you cannot have houses inside humans?
while analogy to a filesystem would be: you have a box, and in that box you can have another box, and another etc.
Eg imagine bug in some script that create some directory structure in a loop and bug that causes it to create infinite depth.
It makes sense to say "enough" at some point, otherwise you could destabilise whole system.
An unlimited screen wouldn't really solve much. The real limitation is our working memory – a cognitive problem. Visuals are there to offload working memory, and when you find yourself having three different windows of the same folder, you know visuals has failed at its job.
Surely Stage Manager might give us an extra "cognitive percent". Improved visuals, cues, an extra metaphor here and there might give us another percent. But at the end of the day, I think we reached the end of the road unless we rethink the concept of files, folders and the "jurisdiction" of applications. So at some point down the file hierarchy, arbitrary applications take over and visualise the rest of the hierachy in whatever unorthodox, material style of the season. However a browser window is a container and its tabs are locations, i.e. files in some aspect. A bookmark is also a file. The Photoshop pane of Patterns is also files inside a container. And since the hierachy is hijacked by applications, browsers must afford their own ways of sharing content besides the operating systems sharing mechanism.
To add to the mess we have Open and Save dialogs, which is just another unneccessary way to visualise the same file hierarchy, with their own means of navigating and creating new folders.
My $0.05: Let applications visualise and edit files, and leave the handling of hierachies to the next generation of operating systems. That way the nice patterns in Photoshop could display as a pane in the operating system hierachy since the operating system leaves the rendering to Photoshop (if it's available). Tabs doesn't have to be tabs. They could be displayed as vertical lists or thumbnails, however the content of each tab thumbnail would be rendered by the browser. A container of tabs (really "bookmarks with a state") could easily be moved to another application or browser.
They had it within grasp as they rewrote the UI APIs, they just didn’t choose to go that far.
Firefox doesn't allow each tab to be a window, which breaks the consistancy but i only sometimes have to use that.
But as has been mentioned, plan9 does this at a design level.