The Unclear Impact

Hot take: Applications shouldn't have tabs. Not browsers, not file explorers, nothing. Tabbing should be the window managers job.

@robby I completely disagree. I want my WM to manage the applications, and the applications manage what is running inside them. If I want multiple instances of the same applications, I can run separate processes, which are different to tabs.

@inference Lots of applications don't have "tabs" already though. The only way to achieve tabbing is with my WM for these applications. Why should some applications have two tabbing mechanisms (internal, and via the WM) and some have one (via the WM)? Each program should do one thing well, and like you said the WM manages the applications (including tabbing them).

Why is running multiple instances of the application so different from running tabs internally? The biggest different to me is memory can be shared between tabs, which I think is a bad thing (and most browsers will break tabs into their own processes for isolation anyways). If the application has a lot that should be shared between tabs, I think it is better to have a daemon that each instance of the application interacts with using some IPC mechanism.

@robby One reason to use tabs is for compartmentalisation. For example, I run multiple Chromium instances, with each one having a different purpose; inside those instances, I have tabs related to their purposes. I have a general instance which contains most of my web browsing, a calendar instance, a Mastodon instance, a Reddit instance etc. Each instance contains tabs related only to the purpose. It's not for security, but for organisation. There are privacy reasons etc, too.

@inference Why should organization be the browsers job though? That sounds like it should fall under "managing applications" to me, which we agreed is the WMs job.

I have different workspaces that I use for organization, which is a part of my WM. Organizing windows just seems like it should be the window managers job to me 🤷‍♂️

@robby I, again, disagree.

I use workspaces for different types of work, including multimedia and communication, then I run web browser instances in those workspaces (communication has an instance for each service, such as Reddit and Mastodon), and each of those instances contains tabs related to those services (such as a tab for each chat or link opened).

@inference So you you have multiple browser windows, each one with its own tabs, with each window on a workspace of related applications?

@robby Yes.

@inference What's the difference between that, and having multiple browser windows tabbed by the window manager, on the same workspace that the browser window that normally contains the tab would be on?

Re: window management, hot take

@robby @inference One benefit would be saving/restoring browser tabs, which is not commonly implemented in window managers (guess you could use some kind of session manager, but browsers can unload unused tabs while still not removing them entirely, and that would be tricky with a session manager).

Plus browser tabs can show favicons, another feature not commonly implemented in tiling vms. There’s also tree style tab for Firefox, which would be very messy (but cool) to have in a vm, I think.

In general, applications can know a lot about their own tabs, which is not necessarily easy to expose to a vm (you could define custom wayland protocols for that, but there would be a problem of wide adoption).


Re: window management, hot take

@kristof @inference Interesting points. I personally have been using qutebrowser for a while now, which doesn’t show favicons (at least by default, maybe they can be enabled) so I kind of forgot about that :P.

FWIW though it looks like i3 has this functionality and therefore sway is working on it. Not sure about other WMs.

As for the other features, I think it could be done relatively easily by having a single “browser daemon” that interfaces with the WM and the browser windows to do these things.

@robby The issue with this is people who are using DEs or window managers which do not support nesting will be unable to do so. I use i3wm, which supports window nesting, so I could do it, but that doesn't mean everyone should be forced to use a WM if it's against their workflow or accessibility requirements.

@inference I simply think window managers that DEs use should support tabbing windows, similar to how i3 and other window managers can. I don't think it should be the applications job to make up for shortcomings of the WM :P

@robby Does that also mean that it should be up to file explorers to open the files of applications, rather than the applications having an "open" button? Should it also be up to the file managers to save the files? They are the file *managers*, after all.

At this point, it's just opinion, and I don't think it matters if the WM or application manages the tabs. There is no security or privacy issue, and there are choices which are good for accessibility and different workflows.


Does that also mean that it should be up to file explorers to open the files of applications, rather than the applications having an “open” button? Should it also be up to the file managers to save the files? They are the file managers, after all.

I don’t really understand this analogy. Yes? That’s normally how it works? When I go to File > Open in Libre Office, it opens up the GTK file picker. Most applications don’t make their own “file managers”.

It’s not an issue of privacy or security (though it would by default have the privacy and security mechanisms that browsers manually have to add), it’s more an issue of single responsibility. My WM manages tabs, and some applications manage tabs internally. My opinion (I acknowledge that it is nothing more than an opinion, that’s why I called it a “hot take” :D) is that it should be the WMs sole responsibility to manage the tabbing of windows.

@robby When it comes to security and privacy issues, I use fact, not opinion, which is why I stated that. Of course this is opinion and there should always be choices. Being someone who has specific accessibility requirements, I know how difficult it is to use software which does not comply with your requirements.

As for the file explorer/manager anology, the open button in LibreOffice is the same as tabs in a web browser, if you ask me; they both do something the FE or WM can do, in-app.


As for the file explorer/manager anology, the open button in LibreOffice is the same as tabs in a web browser, if you ask me; they both do something the FE or WM can do, in-app.

It doesn’t though, that’s why I found it confusing. LibreOffice does use the system file manager to pick what file to open. They don’t have their own file picker.

@robby Big issue with this is now every application suddenly needs IPC when sharing resources. For instance, I don't need two Firefox instances having the same data duplicated in different processes.

@tristan957 Many applications don't need shared resources, and the ones that do share resources between tabs, already use IPC to to do it. This is what browsers like Firefox, Chromium, etc. currently do.

@robby I can get behind this actually, I think I agree. I don't think it would really be a big difference in terms of UI but maybe performance can be impacted somehow? I guess it could depend on the software, but honestly I'm not sure how tabs function in they open another instance of the app usually?


do they open another instance of the app usually?

I think it depends how you define “instance of the app”. The state for each tab (at least for web browsers, not sure about other kinds of tabbed applications) is often stored in its own process for isolation. This can be observed by opening up your process viewer / task manager with one browser open, and seeing how many browser processes are running. So if you define “instance of the app” as a separate system process, then yes.

Though I don’t think it’s unreasonable to consider an “instance of the app” to include all of the sub-processes which work together as parts of the same program. In that case, it wouldn’t be a new instance of the app. However, multiple windows of the same browser often share processes as well, so at that point multiple windows wouldn’t even be new instances of the app.

But no, I don’t think it would have much of a UI difference. For me it would just be a matter of having one set of tabs instead of two.

I just realized the surf browser doesn't have tabs (at least by default). Anyone have experience with it? Is there a way to do vim-style navigation, like qutebrowser has?

@robby Yes! I've been thinking this too. Also, BeOS/Haiku seem to have been on to something in that regard.