Hacker News new | past | comments | ask | show | jobs | submit login
TabFS: Mount your Browser Tabs as a Filesystem (omar.website)
1400 points by thesephist on Jan 1, 2021 | hide | past | favorite | 235 comments



KDE on Linux used to have something similar in the late 90s - it allowed you to open a website URL as a directory listing, so you could browse the site's asset directories and open image files, etc. Think like a client-side generated version of Apache's index pages, but using your local file manager. It was a plugin to the VFS framework (KIO) the desktop and all the apps use, so it would also work e.g. in Open File dialogs from anywhere within the toolset.

I remember using this regularly to mass-download the images embedded into a page - open the page this way by replacing http:// with a pseudo-protocol, copy all, paste, done.

KDE always came with a lot of VFS trickery like that. Ripping a music CD into MP3s was similar - you'd open the volume in the file manager and see your tracks along with a virtual folder full of MP3 files. The rip and encoding would happen on the fly, and you could do this e.g. straight from the file attach feature in an instant messenger.

Desktop Linux was a lot less friendly to get working smoothly back then compared to now, and feature discovery was by word of mouth more than anything, but it sure felt like living in the future early.


Reading your comment, it also came to my mind this inter-process communication from KDE called DCOP, which allowed you to call methods from KDE applications supporting DCOP from the command line or shell scripts. For example, the Konqueror web browser exposed functions to open tabs, navigate to URLs... instant messaging applications allowed you to query your contacts' online status, send a message, the music player would let you control the playlist, etc.

It then (IIRC 15 years ago) became deprecated in favor of DBUS, but I remember it was not as straightforward and simple to use as DCOP was, and also the applications, at least by the time, weren't supporting lots of useful operations with DBUS.


> Ripping a music CD into MP3s was similar - you'd open the volume in the file manager and see your tracks along with a virtual folder full of MP3 files.

AudioCD KIO is still working the same way. I'm ripping an old audio CD of mine to FLAC as I write this comment.

KDE's one of the oldest and best maintained feature is KIO backend. It's still alive and kicking as hard as in 3.5.x days.


Disclainer: KDE developer

Yeah, KIO is an awesome piece of software. Yesterday, a fuse interface was released[1] so that non-KDE software in Plasma also get most of the benefits of KIO.

And speaking of browser tabs, Plasma Browser integration allows to switch to an open tabs from Krunner directly and it works with Firefox, Chrome and Microsoft Edge.

[1]: https://feverfew.home.blog/2020/12/31/kio-fuse-5-0-0-release...


I had no idea kio-fuse was being worked on. This is awesome! gvfs (and its FUSE implementation) was my favorite feature of GNOME and was the reason I primarily used Nautilus on KDE on my work VM.


Yes, finally in 2020 Dolphin can open a file from an SMB shared folder without making a local copy, which basically made KDE unusable in any environment that involved editing files on a Windows share.

Took a while but it does work, bar a few minor issues. I have problems with certain applications not understanding Dolphin has already authenticated to a share. For example VLC will only open a file if the URI to the share contains the user name required to authenticate (smb://user@fileserver/Video).


Could you expand on this by filing a bug report[0]? In particular, noting exactly the location VLC is opening (via Ctrl+I).

[0]: https://bugs.kde.org/enter_bug.cgi?product=kiofuse&component...


> KDE on Linux used to have something similar in the late 90s - it allowed you to open a website URL as a directory listing

On this topic and more generally, I think KDE had gotten way too little credit!


And GNOME has GIO which you can not only use with most GNOME apps but also on the command line:

       gio help [COMMAND]

       gio version

       gio cat LOCATION...

       gio copy [OPTION...] SOURCE... DESTINATION

       gio info [OPTION...] LOCATION...

       gio list [OPTION...] [LOCATION...]

       gio mime MIMETYPE [HANDLER]

       gio mkdir [OPTION...] LOCATION...

       gio monitor [OPTION...] [LOCATION...]

       gio mount [OPTION...] [LOCATION...]

       gio move [OPTION...] SOURCE... DESTINATION

       gio open LOCATION...

       gio rename LOCATION NAME

       gio remove [OPTION...] LOCATION...

       gio save [OPTION...] DESTINATION

       gio set [OPTION...] LOCATION ATTRIBUTE VALUE...

       gio trash [OPTION...] [LOCATION...]

       gio tree [OPTION...] [LOCATION...]


I think the first OS with this functionality to be IRIX 6.3 in early 1996. It integrated Netscape Navigator to the 4DWM file manager, and allowed you to browse both HTTP and FTP, and also audio CDs and even audio DATs if you had a DDS drive!


The problem is that too many dump GNOME and KDE for their twm flavour window manager and then it is no wonder that these ideas get lost among GNU/Linux users.


Meh, I just remote-mount everything with stuff like rclone, then everything is a VFS kinda like plan9.


KDE 4.0 dumped me.


perhaps they shouldn't be tied to a specific WM or even a DE.


Perhaps GNU/Linux should decide what it wants to be, besides yet another UNIX kernel clone.

That is how Android and ChromeOS happen, or FOSS developers end up buying a BSD based proprietary desktop OS, or even Windows based systems, to develop software for GNU/Linux based cloud environments.


> Perhaps GNU/Linux should decide

GNU/Linux is an abstract idea, not a person, organization, or even community. GNU/Linux cannot 'decide' anything.

If you want something else, you should use something else. As you mention, popular alternatives exist.


That's not a GNU/Linux issue, BSD's have KDE too.

Also, back in the day you could compile and run KDE perfectly on Solaris and Irix.

>or even Windows based systems, to develop software for GNU/Linux based cloud environments.

I/O is still crappy and limited.


Heck, KDE is even available on Windows (now just the applications, but at one point you could run Plasma to a certain degree IIRC).

https://community.kde.org/Windows


Ideas like /proc and ToolTalk come from Solaris, no need for KDE to get inspired.

Irix had similar ideas as well.

That is the thing, these UNIX workstations had a whole stack experience, not what Linux or BSD ever were or are.


>That is the thing, these UNIX workstations had a whole stack experience, not what Linux or BSD ever were or are.

Uh, Irix with 4DWM and limited DE's were not as powerful as a FreeBSD workstation with KDE3. Not even close.

People compiled JWM, IceWM and KDE on Irix and Sparc machines because 4DWM and CDE were horrendously limited and slow.

Also, Urxvt ran circles on dterm on cpu/memory usage. Much, much snapppier and faster.


Yeah using Inventor on FreeBSD was blazingly fast.


/proc came from Version 8 UNIX.


I stand corrected, thanks.


I wonder if they were inspired by BeOS.

These days many desktop interfaces feel quite dumbed-down. Still very usable though. But perhaps sometimes with unrealized potential.


Nope, Telligent, Xerox PARC workstations, ETHZ Oberon based OSes, and Solaris already had this idea surfaced in different ways.


Which supports your feeling that the current (dominant) systems are dumbed-down. I don’t want to think about the security implications of the carious implementations on this long holiday weekend... but if we needed to spend less energy on security we could have nicer toys.


They aren't dumbed-down, the features are there, used on macOS, Windows, to certain extent by iOS and Android IPC, GNOME and KDE apps, they just aren't used by those that think using twm clones and the CLI are the epitome of UNIX desktop experience.


> Telligent

Taligent?


Yeah, typo.


Cool! TIL.


I suspect it would be harder to pull off these days without launching chrome headless for example. Opening the page itself wouldn't include images/resources loaded over JS. It would also not work great with image atlases.


So one thing really cool about KIO is that any KDE application can understand KIO URIs.

You can paste any KIO URI into any application's file open dialog box and it'll retrieve it. So for example, you could open any KDE media player, paste in an audiocd:// URI, and it'll play the specified track from your CD.

And it also meant that any application could open remote files without having to manually download them first. Like, if I wanted to open some random file off the web in a text editor, I can just go into Kate, hit Ctrl-O, and paste its URL into the dialog box, and it'll fetch it into a temp folder and open it without me having to first download it manually. This was especially useful for PDFs, because Okular is generally way better than any browser's PDF reader (and I was doing this before most browsers came with PDF readers).


How does it work internally for non-KDE apps? GNOME's equivalent, GVFS, uses real FUSE paths at /run/user/1000/gvfs. Does KIO do the same thing, or copy them to a temporary directory before sending the path to the application?


Since yesterday there's a stable release of KIO FUSE [0], which does functionally the same as GVFS.

[0]:https://feverfew.home.blog/2020/12/31/kio-fuse-5-0-0-release...


I think KDE still supports Konqueror, which implements things like this. It used to be KDE's file manager and web browser all in one app. I always found this to be quite logical. The underlying abstraction is called KIO. Unfortunately I have no KDE installation at hand, so I can't tell if dowloading all images of a webpage still works as easily. The Audio CD ripping feature should work without problems, though.

Btw Konqueror also used/uses the KHTML rendering engine, which was the foundation for WebKit.


KHTML came from kde before apple times


Wow i just learned that today Thanks btw and it’s sad how this did got very little attention


I think that was one of the casualties of the painful transition from KDE 3 to KDE 4. I really loved KDE before but KDE 4 was completely unusable for a year and many UX concepts were thrown aboard or have just not been ported, really sad actually. KDE 3 was paradise for power users. I wonder what KDE is like nowadays though


I don't think it was KDE 3 -> 4 transition that killed khtml.

I was only around in the last year or two but KHTML [0] was mostly developed by a single volunteer on his spare time (Hi SadEagle in case you're reading this). There were occasional commits by other people but the majority of KHTML's development was done by him.

You see, Konqueror as a web browser didn't even have a single full time developer. That was the beginning of browser wars when Apple and Google were both funding Safari and Chrome with millions of dollars.

It was not really feasible for KHTML to compete with so many new specs being introduced to the web.

It's still fascinating what they achieved though. At the time KHTML was the first to pass ACID2 test and beat competition performance-wise in many aspects.

This is all what I can recall so don't consider it 100% accurate but I'm pretty much sure about the main point, which is that it simply was not viable to develop khtml from a practical standpoint.

[0] Quick note that Konqueror itself was created and maintained by David Faure, who maintained KDELibs (Before it became KDE Frameworks). David was a sponsored full time developer but he wasn't doing a lot of work on KHTML and KJS (The browser aspects of Konqueror)


That's fascinating, also that it was written by a single person. I remember how surprised I was when I discovered that Konqueror was at that point in time on par or better in terms of rendering quality compared to Mozilla and others. Also browser speed, memory usage etc. was just flawless. But yeah, IMHO one person projects are doomed to be abandoned unless the person is really dedicated to that project. (glibc maintainer Ulrich Drepper is probably a well-known counter-example)


Please note that khtml was a big team effort initially. The single man show was towards the end.


Oh, yeah, I meant to say that, but now I notice that I wasn't clear about this fact.


> It used to be KDE's file manager and web browser all in one app.

It goes further than that. It's pretty much everything in one app. KIOs accesses stuff and KParts shows it. Since many applications expose their functionality using those, it can show whatever content they support and browse it as a filesystem when it's possible.

Web browsing is just KIO doing http and a KPart showing the page. File management is just the file (or smb or sftp or whatever) KIO and the Dolphin KPart. The Kate KPart is used in both cases to either view local text files or web pages source.

But there are others and you can do any combination, including some cool ones.

You can go to man:// or info:// to view man/info pages.

The Akonadi KIO from the PIM suite can be used to browse remote mail or calendar accounts and extract data.

It even used to be possible to use magnet links in HTML (like in <video src="magnet:...">) with kio-magnet or to browse mysql databases and use applications to edit content in cells with libferris, although I don't think those are currently maintained.


>It used to be KDE's file manager and web browser all in one app.

That was apparently common thing to do, as Microsoft did the same in Windows 98 integrating Explorer with IE.


Han, I completely forgot I used to do that. Indeed, that type of feature felt incredibly powerful back then. And Browser tabs were new anyway. ( Limited to Opera only IIRC )


Wow, this is awesome!

My OS is heavily scripted and keybound, thanks to 15 years of cumulative incremental fixes and a kick-ass WM. The one thing that's frustrated me is the relative black box that my browser represents, and writing a shim between my WM and browser tabs has been on my TODO list for a long, long time (through a couple of aborted attempts due to a combination of Chrome's at-the-time obsolete documentation and probably-necessary security model).

I'm cautiously optimistic that this is going to represent a dramatic step function in ease-of-use of my OS, in the same way that i3 was.

EDIT: I should clarify that I did read the author's note that this is experimental, not secure, etc. I'm mainly just excited about having a jumping-off point to play around with and possibly hack on a little.


I use qutebrowser in one-window-per-tab mode and EXWM[1] as my window manager (with ivy for switching buffers). It still needs some more integration but currently is my favorite solution to this problem.

[1]: https://github.com/ch11ng/exwm


That's interesting. I've been looking at EXWM recently as I expand my emacs usage (I've been using XMonad for about 10 years). How do you group related tabs together? Or is this somehow not necessary?

Have you noticed a significant difference in memory usage? qutebrowser turns into quite the memory hog over time. I have to periodically restart qutebrowser so my hundreds of tabs go into suspended mode. Even suspended tabs use a good chunk of memory.

Yes, I should be better at closing tabs.


I don't group related tabs together; I don't have a list of tabs on my screen anywhere and fuzzy finding with ivy-switch-buffer them is sufficient for me.

Unfortunately, I can't answer your other questions because I'm good at closing tabs :p


Thanks for the reply. I imagine I could tag them somehow and fuzzy find on the tag or a tagged subset. I'm actually looking at the Nyxt browser now also.

I'm a freelancer, so I regularly switch between various active projects or future, potential projects. That results in lots of tabs.


I will check out qutebrowser, thank you! I probably can't switch to exwm for ethical/religious reasons :p


would you mind providing context /docs to some of your fixes and scripts so I can observe/install some of them?


I wrote a long response to this but accidentally refreshed my tab, so you're getting an abbreviated response = /

I can give you one of my favorite examples. I have a pretty intense job, and I've struggled to some degree with the way stress eats into both my work productivity and my well-being after work. I wrote this script to mitigate the bouts of workday akrasia that induce me to almost-unconsciously procrastinate, as well as the unfortunate habit of checking work email/Slack after work hours or while on breaks (one of the pitfalls of not physically separating my work and recreational machines).

I use a simple launcher app called gmrun, which allows defining custom protocol prefixes. I've defined a few of these protocols, but my favorite is "m:", which switches "modes" on my laptop. Appending a prefix-string of either "work", "rec", or "all" rewrites my i3 config file to switch to the corresponding "mode" by selectively disabling a set of switch-to-workspace keybindings. It's about 100 lines of straightforward Python code incl docs and newlines, took me half an hour, and it paid for the time I put into it in less than a week. Probably a _dozen_ times a day, I catch myself trying to switch to the workspace that has my messenger apps or personal browser windows, and disabling the keybinding is enough to short-circuit the stress-driven impulse to distract and procrastinate and remember that I am trying to do focused work. It works very similarly for checking my email/Slack after work hours, something I almost never do now for the same reasons.

This is pretty tuned to my situation, OS setup, and personality, but that's pretty much the point: I'm extremely spoiled by Linux, i3, etc due to having a system that's been custom-fitted to my every need every moment of my computing life since late high school. If there's a rough edge, I sand it; if there's an optimization opportunity, I take it (if the ROI seems clearly worth it).

Not to get on my soapbox, but it saddens me a little that so many people I talk to, particularly technical ones, have become disconnected from just how many affordances general-purpose computers can offer without ever being _forced_ to avoid choosing the ease of a one-size-fits-all approach.


Hey, thanks so much for introducing me to the term "akrasia" because it works perfectly to describe a phenomena that happens to me as well. And my solution is similar, if admittedly much lower tech (I comment/uncomment lines of my etc/hosts file to switch modes).

But it was the rest of your post, describing the way in which you're environment has morphed with you over the years, and how you've been able to really dial in your computing experience...it's so striking! There are few people who can say the same. I certainly cannot. I have personally gone through perhaps 3 complete redos in my adult life. But it's disruptive and bad, and I have to admit I feel some envy that you've been able to maintain a single coherent thread of evolution for so long. You must move around incredibly smoothly - I'd be curious to see a video of a few cycles of a build-test-debug cycle with your setup. I would also be curious to know how your file-system is organized. That seems to be the most difficult problem of all!


> I have to admit I feel some envy that you've been able to maintain a single coherent thread of evolution for so long

What I find most interesting is how fundamentally it's changed over time while maintaining continuity over those years. In college, I had a tricked-out compiz setup with wobbly windows and a skydome and a wallpaper set via script and a bunch of other cool frills, a far cry from the spartan, productivity-focused keyboard-only setup I have now (I don't even have a wallpaper because a tiling wm means I can never see it). But at any given point, the majority of my workflow was similar to what it was the year before, and many of my config files date back to when I first started using Linux. Even when switching to i3, I already had a very keybinding-heavy workflow, so I just needed to learn one or two extra keybindings to get started, providing a gentle transition from my previous setup until I became more of an i3 power user.

> I'd be curious to see a video of a few cycles of a build-test-debug cycle with your setup

For work, I use a single screen session per "task". Im an MLE working on autonomous vehicles, so my environments vary, but I tend to avoid GUIs so every workflow (except browser-based tools like tensorboard or github code reviews) can fit within my screen sessions. Switching from my dual-monitor workstation to my laptop is pretty seamless; the same screen session is used for each task, but mapped to fewer visible windows at a time.

> I would also be curious to know how your file-system is organized

Nothing too interesting here


>Nothing too interesting here

Have you noticed your organizational approach change over time? I suppose this depends a lot on what you do with your computer, once its all setup!


I'd imagine so; the biggest reason this isn't interesting is that I simply don't keep that much on my local filesystem, at least for personal use. I have a repos directory and a scripts directory, and then I pretty much just use the Debian defaults. Perhaps my Google Drive structure would be more interesting, but even there the structure is pretty straightforward, with folders like Finances and Career.

For work it's slightly more complex, but also more driven by the environment tools that work provides (eg a datasets folder that gets mounted into the Docker images I use to train models).


What window manager do you use?


They mention they use i3.


This is a brilliant piece of work. As someone who has thousands of tabs open, I've always wanted to "close all tabs with a single command", or view all the open tabs and mass select them and close, for years. Otherwise, going through them one by one and deleting takes forever. Now somebody make a vim pluggin so I can delete tabs by visual selecting a bunch of them and typing "d".


It's a huge leap forward in browser management. Not exactly a replacement for headless browsing/scraping etc, but for personal use, nothing compares. A big contribution to the "personal data management" toolbox.

In the realm of tab management, I use this one liner in console of chrome://inspect every once in a while, then just close all of my tabs:

  collection = document.getElementById("pages").getElementsByClassName("subrow"); final_output_tsv = "title\turl\n"; for (let item of collection) {final_output_tsv += `${item.children[0].innerHTML}\t${item.children[1] ? item.children[1].innerHTML : "N/A"}\n`}; copy(final_output_tsv)
Substitute "devices" for "pages" to get android chrome tabs

This way I can backup all my tabs in simple, non-bookmark format and search them using python etc.


cool this seems handy, but when I try my chrome://inspect/#pages only contains a small subset of tabs out of the few dozen windows I have open. Any tips?


Looks like only recently opened tabs (or some variation on that) show up here. To test, reload all tabs In one window (I used an extension) and check out chrome://inspect again. It's all there. Maybe there's a good reason for not showing all pages in inspect. Who knows. Another problem is that my script grabs page subprocess urls also. I've mainly used this for grabbing my android tabs.

This is an adapted version that skips grabbing subprocesses

  collection = document.getElementById("pages").getElementsByClassName("subrow"); final_output_tsv = "title\turl\n"; for (let item of collection) {if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(item.children[0].innerHTML) === false) final_output_tsv += `${item.children[0].innerHTML}\t${item.children[1] ? item.children[1].innerHTML : "N/A"}\n`}; copy(final_output_tsv)
edit: I used reload all tabs extension with reload all tabs in all windows option turned on. This could get messy.


I keep a few tabs open, and close the browser regularly.

A friend of mine keeps basically infinity tabs open. I sort of rolled my eyes, but accepted his rare behavior.

However as time has gone on, I've been surprised to find I may have the rare behavior and it is common for people to work this way.

So.. maybe this is a way he can backup his "filesystem" and not suffer a nervous breakdown when his machine reboots or some othe browser failure where he loses his world.


I am like your friend... basically tabs are a "working memory" that you don't want to store permanently in bookmarks. each window or sets of windows is typically a different topic that is being research on with a bunch of middle clicks to open tabs. I have so many open that I wrote a small webext for it that shows a page of all your tabs that you can click on to navigate to that tab with a click. just a nicer interface to see all the windows open and all the tabs. https://github.com/fiveNinePlusR/tabist


This is the extension I didn't know I needed, thank you!


I hope you find it useful :) if you have any suggestions let me know. i have been working on a small upgrade to it where the tabs can be closed with a middle click and reordered in the windows but i don't work on it very often as it's quite useful as it stands for my needs

edit cmd-shift-e/ctrl-shift-e will open up the extension which I guess I should update on the homepage.


Hey cool, thanks, I've installed it now too - it'll be quite useful!

I'd love if you could have a link on the Tabist page that shows a popup allowing for copy/pasting of a text box to show list of titles/URL or just URLs for either easy sharing of a grouping of tabs or so I could do an occasional backup of URLs? Not sure if this person's code is useful for that: https://news.ycombinator.com/item?id=25605222 ?

Maybe a global link for all windows and one per window?

Edit to add: I have a dream of someday contributing financially to a bunch of open source organizational tools that I'd like to see/would use and depend on heavily, let me know if interested in hearing more - can email me matt@engn.com if curious.


Awesome! I'm not sure if the version on the store has the tab backup feature enabled or not but there is a backup feature that is under the options area. It just dumps a json file with all your tabs and a restore feature where it opens up all those tabs again but that is really slow if you have a lot of tabs.

Interesting idea on the popup; I'll give that some thought.


Cool, thanks. Another use case other than backup I was thinking is if just wanting to share a window of tabs (so all relating to a project) by copy/pasting it to someone in a message/email; I guess on flip side too, if person receiving the links also had Tabist then could have another popup to "open links" (maybe there's a way to do that in Chrome easily but I'm not aware); could eventually create a centralized service that just pushes the links to them and perhaps auto-opens them - obvious potential security issues there but arguably person you're receiving links from would be trusted by you.


> A friend of mine keeps basically infinity tabs open. I sort of rolled my eyes, but accepted his rare behavior.

For those in the comments who are like myself (and parent's friend) and have hundreds or even thousands of tabs open, I highly recommend the Panorama Tab Groups extension for Firefox:

https://addons.mozilla.org/en-US/firefox/addon/panorama-tab-...

This extension adds back in the functionality that was removed from Firefox half a decade ago. It gives you a visual, 2D-map of arbitrary groups of tabs in a tile layout you can view with "Ctrl-Shift-F". Combined with the backup feature (just in case it crashes or gets corrupted, although this has yet to happen to me) and Firefox's built-in tab session saving option, so long as you have enough memory (I bought 40 gigs of RAM for this laptop after terrible memories of running Firefox on a Chromebook with 4GB of soldered RAM), you can basically browse as though you'll never have to close a tab again, AND also be able to stay organized.


I can have as much as 100 tabs open, depending on what I'm doing.


Is having several tabs open in a browser rare? My social circle - which comprises mostly software engineers, admittedly - sees browsers with 30+ tabs open as normal.


Same here, currently sitting at 300 tabs ( Lost about 800 a few weeks ago from Safari crash again ). I just wish the Show All tabs on Safari put up a list of tabs so I could quickly navigate through them ( and selectively close them ). Right now Show All Tabs Reloads all the tabs. That is the same on macOS and iOS. Your phone gets quite warm doing it.


> Lost about 800 a few weeks ago from Safari crash again

Sounds like someone taking a corner at 200 mph and rolling their eyes when they hit the crash barrier. Not often is the following true, but - you're using that tool wrong.


The crash has nothing to do with 800 tabs. Most of those Tabs are not active. And a crash, whether it has 1 tabs or 10000 tabs that lost the previous sessions is not using the tool wrong.


It wasn't designed for that kind of use, and it's being used that way. There are extensions, bookmarking tools, session savers, other browsers and all of their extensions, which are better able to handle this kind of thing.


Safari maintains a list of tabs in a plist. You can’t delete while Safari is running, but at least you can extract the list to back it up.


Yes. I immediately check that after it happened except the plist was empty.

Firefox used to have similar problem with their json so after a few bug report with them they fixed it with another json.bak as redundancy. ( The good days of Firefox )


Time Machine has saved me more than once in this case.


Show All Tabs on iOS definitely does not reload tabs. I know on macOS it used to force all tabs to load but I had the impression lately that it wasn’t doing that anymore (though I rarely use this feature).


iOS reloads them ( or partially load them ) as you scroll through it to get a screenshot. I tried it just now. Or they somehow saved a Screenshot of it. ( But then there is no reason why macOS safari isn't doing the same. )

macOS does the same except without the scrolling.


iOS saves screenshots of tabs. I scrolled through my own and found a bunch of old tabs (didn't realize I had so many) that just showed pure black.

macOS saves screenshots too, to show when hovering over a tab. Curiously, it doesn't seem to use these saved screenshots in Show All Tabs. Also I just tested, Show All Tabs on macOS is no longer loading unloaded tabs. I have a window with 13 tabs right now, only two of which I've visited since launching Safari, and the others just remain as blank in Show All Tabs.


1 - Right-click empty space next to the tabs and select 'Bookmark all tabs'

2 - Name the bookmark folder (within the top-level bookmark folder) something like: 'Tab-mess-from-<date-time>'

3 - Ctrl-F4 close them. Press and hold Ctrl, then F4 them one at a time. You can close 200+ tabs in a minute. (or as other suggested, right-click any tab and use the option 'close other tabs').


I open a new window for each "task" and open tabs in that window, if it is non trivial I also move that window to a new Desktop/Space. When I want to shelve a task I bookmark all the tabs in that window into a dedicated folder then close the whole window and the desktop.


you should try amna, which basically automates that process. You make a task, it gives you a chrome window for the task and syncs your work. You can then close the browser, and the data is saved.

http://getamna.com


There is a browser extension called onetab that does this for you.

The issue i find is that even if you create the perfect system, you still rarely m go back and revisit these tabs kept open.


Try amna - https://getamna.com.

It can make this a little better by storing the tabs as part of a task. Soo you can get back to them as part of a context rather than just a link.


I've used this extension for doing mass closes: https://addons.mozilla.org/en-US/firefox/addon/sorted-tabs/

As a bonus you can arrange URLs by name, url, or time next to each other, so it's usually fast to churn through related or duplicate tabs.


> Ctrl-F4 close them. Press and hold Ctrl, then F4 them one at a time.

Ctrl-F4 shuts down entire browser, Ctrl-W closes each tab with a press of w. This is behavior in Ubuntu and it holds true for most application windows.


Alt-F4 closes the entire browser, and indeed Ctrl-F4 closes the current tab. (Just tried it out, I've always used Ctrl-W for that.)


My bad now I tried the Ctrl+F4 and yes it works exactly the way OP said. I assumed he was talking about Alt+F4 :)


>thousands of tabs open

yeah about that, are you sure they are open and not hibernated? Chrome had proactive-tab-freeze-and-discard , later renamed to proactive-tab-freeze and finally forced On in 80 with no option of turning it off. 'hibernated' tabs are merely a bookmark without loaded content. I dont think this extension would be able to work with non loaded tabs without forcing them all to load. 300 tabs is able to easily eat 16GB of ram, Im scared to think what would happen with 1000 tabs loaded in Chrome.

I remember good old Opera 12.x where you could sit on 200 actually loaded and active tabs and RAM usage was somewhere around 2GB.


Using single process Firefox forks I often load in 500 tabs plus another 500+ suspended in under 4 GB. Of course I'm also running NoScript temp whitelist only and most sites are websites not web applications. But 1000 loaded tabs is certainly doable in way less than 16GB of ram if you don't use a multi-process browser. It's just a shame this is written as a chrome style extension (which modern FF supports) and not a firefox extension.


Which fork do you use?

I'm starting to get seriously tempted to go with one of the forks. I seriously miss the old extensions.


Pale Moon. Although I usually try to not say which fork aloud on HN because anything but FF gets massively downvoted.


You can use auto tab discard. I've done 1500 tabs on an 8GB windows machine.


Somehow, Chrome doesn't seem to actually do this despite claims to, which is why I use The Great Suspender (a Chrome extension that actually hibernates tabs).


WARNING: The Great Suspender as distributed from the Chrome Web Store appears to come with malware. See this comment: https://news.ycombinator.com/item?id=25615971


If you just want to close all tabs then in Firefox right click a tab and select "Close Other Tabs". Also, you can control-click on tabs to apply commands the the whole set, such as closing them, sending them to your phone, etc.


In Firefox, you can click at tab bar and select "Select all tabs", then bookmark them all, then close them all.

Also, "Auto discard tab" plugin does a good job by keeping unused tabs closed, to save resources.


I'm not sure an addon is necessary for that. Firefox automatically unloads any tab that hasn't been used in a while.


> As someone who has thousands of tabs open

This behavior always confuses me. To what end? Have you ever derived any value from a tab you chose not to close?


Hm, I'm kind of confused by your perspective here. Do you only have a single thread of tasks you're doing at any given time on your machine, all of whose resources are torn down and rebuilt from scratch when needed? I use my current laptop both for work and personally, and in my personal workspaces alone, I have at least half a dozen browser windows with ~20 tabs representing research that I'm doing or a task that I'm organizing; everything from gift-buying to medical devices for a family issue to building a new workout routine for the pandemic. You can rack up tons of relevant tabs pretty quickly in these scenarios, and there's really no advantage to closing them in any well-managed environment (ie one that has non-rudimentary window management and a browser/extension that handles idle tabs with negligible ongoing resource use).

I probably have hundreds of "productive" tabs open, and that's before even getting to tabs that are serving as an "L1 cache" version of a read-it-later service. And all of this comes with extremely quick clean-up; once I buy the gift/finalize the routine/purchase the item, it's trivial to close the entire window for that task.


I cannot speak for the user you replied to, but to answer this question:

> Do you only have a single thread of tasks you're doing at any given time on your machine, all of whose resources are torn down and rebuilt from scratch when needed?

Yes, absolutely, at least when it comes to my web browser.

I run Firefox Nightly and intentionally use its prompt to restart for an update as a prompt to consider whether I should close the things I have open. I'll sometimes ignore the update for a few hours, but not usually longer than that.

If I need to retain some information over a period of more than a few hours, I'll transfer it to a note-taking app or something similar. Habitually not keeping a large number of tabs open helps me maintain focus to some extent, and deliberating over whether to close a tab or window presents and opportunity to think about extracting a snippet for storage elsewhere.

To me the idea of keeping an entire webpage open as a method of storing what is likely a very small subset of what it contains just doesn't seem "right", regardless of actual resource consumption on the computer I'm using.


I do the same. In a notes app, I have a TODO note where I save links and a few word description of what a link is. This gives me one place to maintain a reading list.

I also have notes for current projects/tasks. I have structure and search to find things.

As a life-hack to make better use of my time, I use the Freedom.io service to block all social media and “time wasting” sites so that I can only access them before work, first half hour of lunch time, and after end of work day. In practice what this means is that I scan HN and Twitter early each morning for tech stuff that is useful/interesting and add any useful links to my notes. Every few days I edit my notes to discard material.


On the topic of blocking distractions, I've found that creating a separate user account for focus time helps quite a bit, since it's sufficiently annoying to remove that particular barrier. Choosing not to configure a keyboard shortcut for account switching was a good call, too.

I tried using multiple Little Snitch profiles or different browsers on the same user account in the past but switching between them is way too low effort for my easily distracted brain. Getting back into distraction mode can be performed on autopilot in those cases.

That little delay in waiting for my watch to unlock my user account is just long enough to make me stop and think, and the vibration is like a gentle slap on the wrist.

My focus account has a single Little Snitch profile configured to block the time-vampires I know I'm susceptible to, along with Firefox configured to clear history on close. I don't need to be reminded Twitter exists just because I opened my browser and pressed T, they should at least have to pay for the privilege of advertising to my brain!

In general I think that taking full advantage of computers to make absolutely everything instantly accessible is in many ways actively harmful to many types of brains. We live in an economy and too many of us just give that stuff away.


Having hundreds or thousands open tabs also confuses me and always seems like a mess to me.

The way i work: I mostly work on a one thing at a time. For that i can have probably at max 40 tabs open. Once it gets past some threshold(i don't recognize or remember what's in them) i tend to start to close the obsolete ones. If there is something i find useful i bookmark it. If there is something i think i would like to read in future i also bookmark it. Once the work is done i close all the tabs. In general i like my tabs closed, it brings peace to my mind.


> it brings peace to my mind.

Mine too.

My thoughts on this kind of thing aren't in any way backed by studies or research (I know some folks are sticklers for that sort of thing), but they essentially boil down to reflecting on human history.

The ability to store a huge amount of information and near-instantly recall it with these computery things we all love is an incredibly new development that I don't really consider compatible with my brain. If the brain is a somewhat general purpose computer that's been really slowly optimised by evolution, the alternative approach to ours is akin to* scheduling hundreds of threads on a small number of hardware threads. Doable? Sure. Ideal? Doesn't feel like it to me.

I've tried allowing myself to just continuously spawn tabs and it makes me uncomfortable much like it does to see a Windows desktop used as a dumping ground for whatever a person happens to want to save on their machine. Fortunately I almost never see the latter these days, and I'll choose to believe people don't do that anymore without verifying that assumption...

*this is really hand-wavy, please don't shoot.


I don't think I go into thousands, but easily accumulate a few 100 tabs. The way I work, I rarely have a task truly done in one go. Besides various side projects, I work on multiple websites for multiple clients and constantly need to put one on hold and wait for feedback, so I go work on another one. If I expect feedback withing a ~2 day period, it really doesn't make sense for me to close the related tabs. Not only does it save time when picking up the task again, but helps me reconstruct my train of thought without having to take notes.

The way I think of it is kind of like swap memory. Instead of wasting effort saving to disk and verifying the saved data (taking notes), I chuck the data somewhere it isn't in the way (a new virtual desktop) so I can pick it up later. In fact, this is exactly what happens with the tabs at the system level. Since I'm constantly running out of ram and have a stupid amount of swap space set up, my OS gladly swaps the relevant browser processes and unswap the relevant set.


May I recommend Zotero [0] to you?

"Your personal research assistant

Zotero is a free, easy-to-use tool to help you collect, organize, cite, and share research."

Like you I am an avaricious multi-tasker over extended periods of time and was heading towards the same state you appear to have reached.

I realised it was not optimal and did some research and discovered Zotero. I use it personally and require it at my businesses.

It adds several wonderful abilities - best is the ability to share and collaborate on research at will.

[0] https://www.zotero.org/


> Like you I am an avaricious multi-tasker over extended periods of time and was heading towards the same state you appear to have reached.

> I realised it was not optimal

I will take a look, thank you! Would you mind briefly elaborating on what you found suboptimal about the workspace/window/tab hierarchy for organizing your tasks? So far it's working very well for me, and the low friction is a really important part of it. Though it's completely possible that I have blind spots around my pain points, or am about to run into a wall. Thanks in advance for your thoughts?


My issues with tabs, even with extensions that organise them:

  * sheer mental challenge of quickly relocating related tabs and the context for why they were kept and relationships between them

  * inability to easily add WIP notes and commentary

  * difficulty of sharing tabs and context with others

  * possibility of losing them if power lost unexpectedly (during extended suspend for example) or accidentally close a single window instead of doing File > Quit

  * moving between different devices and different browsers

  * efficiency; affect on the browser and system of keeping tabs open for long periods of time (without quitting browser)
I don't use workspaces for the same reason I don't like tabbing between applications on the same monitor. I use multiple monitors so I only need to move my eyes to switch focus.


This all makes sense, thank you. The friction-free aspect of browser windows is still pretty critical to my workflow, but I'll look into whether it makes sense to grow the habit of "migrating" a task to Zotero when it gets heavy-duty enough.


I first discovered Zotero via the Mozilla add-ons search whilst looking for an extension to help me. Using the Firefox/Chromium connector puts it a context-click away:

Zotero Connector > Save To Zotero > "Web Page with Snapshot" / "Web Page without Snapshot"

So I can both maintain the tab workflow whilst 'tracking' progress with Zotero application itself.


This describes Amna quite well. I think you'd love it! It's still early, but a lot fo the things you mention, we're working on.

https://getamna.com

It's designed like a todo list which is a layer out to keep that context


The promo looks slick but there are two blockers for me:

  1.  Not FOSS (Hard requirement *)
  2.  Basic/Free version doesn't claim Firefox connector
* I insist all my businesses use only FOSS for core functionality and we have on-premise capability (no 'cloud'). As well as putting us in control of our own destiny (we have the talent) we can add specific functionality at-will and do contribute that back to projects as well as buying support contracts or making regular donations.


Thanks for calling it out! Open Source is a consideration, but we're not there just yet with it. You still have 'On' Premise with Amna. All data is stored on your machine.


> well-managed environment (ie one that has non-rudimentary window management and a browser/extension that handles idle tabs with negligible ongoing resource use).

Can you elaborate on this? Which extensions are you talking about?

I also rack up hundreds of tabs and my browser is often the main resource hog for me. I’ll often have to kill -9 it to force it to start with “oops we crashed, here are your previous tabs in an unloaded state”, but it sounds like you have a better way of doing this


I currently use the Great Suspender on Chrome, which will suspend a tab that's been open for a while. The suspended tab just shows a Great Suspender icon, so it takes up ~0 RAM. I've whitelisted certain domains and sites (eg Messenger apps).

I know there are a ton of extensions aimed at this problem, including OneTab (which will collapse many tabs into a single page of links), but TGS works the best for my workflow.

I also use Session Buddy to periodically backup my current window/tab state, which I find more reliable and powerful than the default tab-restore functionality.


DANGER, Will Robinson!

I could really use something like the Great Suspender. However, looking into it, I found quite a bit of controversy surrounding its new (since June) "maintainer". This issue sums it up well: "SECURITY: New maintainer is probably malicious"[1]

Here is the gist of it:

> Using the chrome web store version of this extension, without disabling tracking, will execute code from an untrusted third-party on your computer, with the power to modify any and all websites that you see.

So, installing from the Chrome Web Store is a complete no-go.

One can still install the extension from GitHub, but with Chrome constantly evolving and the now, unmaintained-on-GitHub extension having known issues with losing all your tabs (to which there are workarounds), I'm very wary of using this extension.

[1]: https://github.com/greatsuspender/thegreatsuspender/issues/1...


Thank you for the heads-up! The way extension stores work always made me a little uneasy about using smaller ones like this.

Edit: haha, someone seems to have seen your comment and made a post that made it to the Frontpage of HN


You're welcome! Yes, it's quite problematic and there are numerous ways malicious code can abuse the sandboxed environment.

That's great news about that article! Thanks for pointing that out.

https://news.ycombinator.com/item?id=25622015


The Firefox extension "Auto Tab Discard" is what you're looking for. Not sure about equivalents for other browsers.


I have seen this behaviour repeatedly. Having to many “task windows” makes it difficult to focus. Similar to having to many tasks in Asana or emails in my Inbox. Prioritisation is the only option to come out of this. Unfortunately, I haven’t found a way to tag priority with the “task windows”. And that’s the reason I daily browse through all windows and close the ones that are not urgent.


Hm, I haven't found this to be the case. This is probably in part because of my WM/OS setup; I use a tiling window manager and different workspaces for different contexts, so my fan-out factor is never that high in cases where it matters.


I derive close to zero value from bookmarks. The only value they provide is that they appear in the address bar during searches. They are organized in a linear fashion, they require constant maintenance and they are also not immediately accessible often requiring you to open a separate window. Worst of all even if you choose to do something as stupid as manage bookmarks you will now have to have to manage both tabs and bookmarks at the same time.

Tabs? They are easy to organize, easily accessible because they are always visible and they are powerful enough to completely remove the need for bookmarks which makes using bookmarks always inferior because of the downsides of bookmarks.

Now lets get to the actual point:

>Have you ever derived any value from a tab you chose not to close?

I close tabs that I don't need eventually, bookmarks just keep accumulating because there is an easy method to add them, but actually finding or deleting bookmarks is a lot of effort.


It helps if you use tags more than folders for bookmarks, that way you can have a page marked as "dogs, computers", another as "dogs, pizza" and then filter to dogs to see both. It also helps (in firefox) if you know the special symbols you can put in the address bar for filtering. * for normal bookmarks, I think + for tags, and % works for open tabs. Follow them with a space and your keyword.

I've been using qutebrowser mainly for a couple months now, and I find the way bookmarks and quickmarks fit into the standard open or open in new tab dialogue feels very powerful. I often am just hitting O to open in new tab, typing a few characters, and picking a result from bookmarks or history. Searching and going to a URL happens there too. I try to use either descriptive names like "guix-bug-issue" for quickmarks so they show up when I type any of those bits (bug and issue intentionally redundant so if I think to search either, it comes up), or I use very shorts strings like "lfm" for my last.fm profile. In the case of these shorter ones, you get the added advantage of being able to go there without looking. If you type an exact quickmark name in the box and hit enter, it goes straight there, you don't have to wait and look over the suggestions in the box.


Chrome only preserves browsing history for 90 days. Keeping tabs open can work around that limitation


Without even bothering to check, this seems like it can't possibly be true. You are surely not saying that the billions of Chrome users worldwide have no browsing history from September or earlier, right?


That's absolutely right, at least in terms of the Chrome browser history. I always found this limitation astounding.

I use the History Trends Unlimited extension to work around this (https://chrome.google.com/webstore/detail/history-trends-unl...)

With 5 years of history the stats page is a bit slow to load but the search feature works great and it can export to CSV


"Your History page shows the webpages you've visited on Chrome in the last 90 days."[0]

Google's My Activity[1] stores everything though.

[0] https://support.google.com/chrome/answer/95589

[1] https://myactivity.google.com/myactivity


Damn, that's ridiculously evil... why the hell am I only able to get basic functionality through a cloud service?!


Yes–I go back and read them occasionally. By keeping things open I get frequent reminders to look at things and sometimes I do.


I used to do this now I just search again and occasionally I will bookmark a page that is too valuable to miss in future searches.

This keeps my bookmarks clean.


> Have you ever derived any value from a tab you chose not to close?

Not GP but of course!

Why would we close something we are going back to?


I open a new window to research a specific topic. Then I open up all the links on sub tabs.

This encloses all my research for this subject in one window. Often times I have upwards of 10+ windows opened. Since some of the work spans over several days or weeks.

I also take screenshots of relevant information. Which gets automatically labeled by date and time into a screenshot folder, and sub-sorted into months.


This is where I miss to be able to name each group-of-tabs (the window) with a name so I can manage (eg when alt-tab’ing) quickly.

So window ‘topic-1’ have 10 tabs relating to ‘topic-1’ and the property ‘topic-1’ is visible in my WM.

Is this possible (I have not -yet - searched ‘enough’ for this functionality...)?


I am very happy to have shared my thoughts here (and received good feedback and suggestions!), but the best is that it finally made me look into this need - and I am not the first (big surprise :-)

It turns out that just very recently exactly what I need was made possible in Chrome (currently only "experimental") just set this flag [1]. I especially like that it's possible without the need of third party SW.

This page [2] is what alerted my attention to the solution.

NB.: It does make me wonder why this feature have not existed until now as it seems so obvious, I mean ever since the introduction of the TABbed interface in browsers (which started pre 2000 IIRC) the (over-) usage pattern of tabs existed.

Anyway - even if I have missed something pre-existing I am now extremely happy to be able to name my TABS in Chrome!

[1] chrome://flags/#window-naming

[2] https://winaero.com/how-to-name-a-window-in-google-chrome/


I use Window Titler[0] for this because I use the same workflow of opening a new window for each "topic".

[0]: https://addons.mozilla.org/en-US/firefox/addon/window-titler...


Try Amna. https://getamna.com.

You can do this per chrome window and bubble the tasks up to a task.


This is exactly how I "partition" my work; makes closing logically related tabs super simple too - just close the window related to the "topic".


Onetab is great for dealing with that.

https://www.one-tab.com/


With vim's netrw plugin [0], I'm able to do this:

  $ cd ~/tmp/foo
  $ touch a b c d e
  $ vim .
Then select the file(s) you wish to delete, press D (must be capital "D"), confirm the deletion, and Bob's your uncle.

[0] https://www.vim.org/scripts/script.php?script_id=1075


FWIW in Chromium-based browsers you can shift+click tabs to select multiple, then close all selected at once or drag selected to new window


Vim already supports a decent file explorer view, if you edit a directory instead of a file. It’s sort of like emacs’ dired (DIRectory EDit).


> I've always wanted to "close all tabs with a single command", or view all the open tabs and mass select them and close, for years.

In Firefox you can right-click on a tab and close

- all tabs

- or all tabs to the right

If you use tree style tabs you can also close a tree or a subtree.

Edit: and there is an extension (yep :) to the tree style tab extension to allow you to export a subtree as a nested list of links - in Markdown!


Since recently, you can also ctrl- and shift-select them and either move or close just those tabs. Sounded like a gimmick when I first saw it, but it has proven to be a huge time saver when I neeed to split a window in two because my browsing session has expanded far beyond the original scope or kill a bunch of tabs in the middle somewhere because a thread of searching has proven fruitless.


In Firefox, you can install the Tree-Style Tabs extension, and have a reasonable tree of tabs. It does resemble a filesystem tree a bit.

I think it's the most important extension for people who do heavy browsing, research things online, etc.


Vivaldi has a tabs panel that lists all open tabs (as well as recently closed ones) like files in Windows Explorer, you can multi-select them and hit delete, or indeed hit Ctrl-A and delete. Sadly afaik there's no filter to e.g. select all Stack Overflow tabs.


You can a) right-click a stack overflow tab, stack them and then close them all or b) control-ddubleclick one site and Vivaldi will autoselect all from same domain.


This does seem like a brilliant idea, doesn't it. I'm thinking about how difficult it would be to setup something like 'surf' but using chromium/firefox, and then driving it completely off the CLI. It honestly sounds like my dream browser.


The author mentioned dired for emacs which is the perfect tool for this. Is there an equivalent file plugin for vim?


You can kinda do that with the vimium plugin. Select a bunch of tabs and press "x", but it doesn't support visual selection of tabs.


I have the same problem. I'm currently testing out the new tabmanager.io extension that seems to have a lot of potential.


This is possible in Nyxt browser, :-)


It would be cool if the DOM was exposed. Then you could write one liner bash scripts to do simple tasks like “download all images” or “delete script tags referencing spammyads.js”, all with nothing more advanced than find, cp, rm and mv in the shell. E.g.

cp html/body/*/img/.hero-img/hello.png ~Downloads/

You would need some clever way to express the DOM with ids and classes etc but it could be done with some subdirectory structure and long names, sometimes having multiple names for the same thing.


Cool idea, but I'd worry about all the malformed markup.


That's a good concern, but I think we can happily ignore it.

The DOM represents the tree structure derived from the markup by the browser, so dealing with malformed markup wouldn't be the problem of this extension, it'd be the problem of the browser it's integrating in to.


I'm finding malformed markup has not been a concern of mine for many years. It used to be bad, real bad, but now I cannot think of the last time that I had to deal with malformed markup while scraping.


This is exactly the kind of dumb idea I expected to see on HN


I'm loving this trend to do more things with filesystems.

There was https://amoffat.github.io/supertag/ [,] which I'm intending to use in my filesharing sftp server, and now this, which seems like something that exposes functionality from a web browser that I would love.


KIO and GVfs wave hopeless to the crowd too busy replicating a UNIX V6 experience with a bit of Plan 9/Solaris influence.


Ironically this is reimplementing plan9/9fs and everything is a filesystem. If any, this is Unix++.

Also, say hello to FUSE, which tries to mimic that on the userland.


Same here. I quite like some of the filesystem interfaces Linux provides (cgroups for example)


Just a heads up that this is a potential security vulnerability because it essentially allows sites to put arbitrary files into your file system.

This might cause certain software to automatically read them (for instance to generate previews) and allow an attacker to exploit vulnerabilities in that software.

Think of an unsandboxed process generating a preview for a PDF file...


In an ideal system, that process would be sandboxed of course.


Interesting use of a file server.

On plan 9 we use a file server called webfs[1] which serves web pages as a series of directories containing files of parsed html and so on. It's basically a tabbed browser back end. A front end such as mothra or netsurf[2] can then use webfs to abstract the html protocol and replaces post/get with read()/write(). And it can be served over a network so you could run a webfs "server" and let multiple clients on multiple machines surf the web through a single webfs server. Bonus is you can also do webstuff from shell scripts so the back end is used by shell programs like hget which is the plan 9 equivalent to wget :-)

1. http://man.postnix.pw/9front/4/webfs

2. https://github.com/netsurf-plan9


This is the best idea I've seen all year.

You can make it so that every website is fully searchable and the data easily viewable/extractable. Set up the marketplace for user created plugins, the possibilities are endless.

I would happily contribute $25k to this. reply if interested.


> This is the best idea I've seen all year.

Ba-dum tsshhh


If you are serious about spending 25k, please contact me, we are working on the Nyxt browser. Email us at hello@atlas.engineer


Thanks for sharing your project. I'm a long time Qutebrowser user (and Vimperator/Pentadactyl, etc. before it) and fascinated by the possibilities of Emacs style extensibility for browsing.

It's a shame that you all haven't gotten more traction on HN despite regularly making submissions for major developments over the years. This thread[1], though outdated, made for some interesting reading.

Best of luck for future development. I'm looking forward to digging into Nyxt very soon!

[1]: https://news.ycombinator.com/item?id=20064589


How can I control the Nyxt browser with the file system?


IMHO an extension for existing browsers seems like a better idea than creating a new browser.

Why did you choose the latter approach?


I'm not involved either, but after doing some reading it seems the project aims to create a completely customizable browsing interface for power users that would be impossible with extensions because of the limitations that Firefox/Chrome impose.


Not involved, but it's nice to see alternative browsers that break the firefox/chrome duopoly.


Next, a browser extension that shows your file system as browser tabs.


This is the type of tool that I would love to love.

But experience tell me that any tool that interfaces with the browser will break in a year and a half. Depending on this tool will put me into a situation where I'll have to decide between preserving my workflow or updating my browser and possibly other software.

Maybe once there's more than 5 forks or a few hundred Github stars, I'll start to see where I can incorporate it into my workflow. But as it is, I've become wary of super-useful tools that are not yet in widespread use.


A different kind of tab-based filesystem that would be nice:

Expose all the resources used in each tab in a virtual filesystem (JS, CSS, images, HTML, fonts, etc) in a folder for each tab. Basically Chrome Developer Tool's Sources tab but as files and folders on your computer.

This would be great for scraping with headless browsers. It'd let you use shell scripts or your favorite programming language's filesystem library to read/copy assets, rather than writing code with Puppeteer to copy files/data.

It would have to copy from Chrome directly though, rather than re-fetch the content


This sounds actually very similar to what I am building, if you ignore the Chrome part [1] :)

The general idea is to have more persistent caching locally, so that peer offloading (and persistence of offline content) can be guaranteed.

Since yesterday the cache supports multiple versions of each file (with a timestamp), and it will get a UI that allows to navigate back in time for each URL.

[1] https://github.com/tholian-network/stealth


> Basically Chrome Developer Tool's Sources tab but as files and folders on your computer.

Isn’t that what happens when you save a page? Or is that not possible with Puppeteer?


I think they were thinking more along the lines of a live system. Where you could change the settings of the page in real time using the filesystem interface.


As an aside, nice vanity URL. I find myself having a Patrick Bateman-esque moment of business-card envy, but for URLs. That domain is just so...good. .com too often implies a business, .org a non-profit, etc but .website is just saying it is a website, not necessarily for anyone or anything (although presumably created by someone). Sadly someone is squatting josh.website or I would own it right now.


Probably not as powerful as TabFS, but there's also https://github.com/balta2ar/brotab:

> bt (brotab = Browser Tabs) is a command-line tool that helps you manage browser tabs. It can help you list, close, reorder, open and activate your tabs.

It supports both Chrome and Firefox. I use it to get titles of tabs that make some sound in Firefox.


"mnt/tabs/by-id/*/title.txt" asks your shell to expand a wildcard match, generating a list of files holding the title of each tab. If I were to feed it into a command-line app, I might start running into command length limits.

Would it work better as a "relational database" than a hierarchical tree filesystem? I noticced that "by-id" and "by-title" and "last-focused" are several views into an underlying source of data, and changing one view causes other branches of the filesystem to change automatically. Maybe it could be more cleanly modeled as a relational data store with one row per tab, and columns with different meanings. Then use SQL, or a cleaner notation for relational algebra, to query this interface.

The downside is that you can no longer use command-line utilities that operate on files (find/grep, fd/rg).


/dev/disk and /dev/input both have a bunch of view subdirectories on my Debian box. the idea of a symlink itself suggests denormalization, suggests views, suggests relations, so perhaps we should try to loosen up our mental model of what a file-system is some?

i upvoted because it's an interesting question, but to me i would like good patterns for how to express data & views on the file-system. data goes into databases to die, alas. it remains tragically single consumer, one database one application. not that it has to be, but that's how things usually are. the file system by contrast is exposed system wide, & requires no app configuration or discovery to consume data on it (I guess choosing a file might sort of count?). there are a wide range of command line and gui tools built in to the os for exploring & manipulating the file system.

perhaps we could make a good sql on the file-system plugin, to make sql data more accessible across the system? :)


I’m excited to dig into this a bit and possibly add Safari support. I recently built a script (https://github.com/incanus/fari) for Curses-based (terminal) navigation of Safari tabs with hopes of adding management functionality in the future.


This is a cool idea. It would be nice to be able to blacklist some tabs though. For example, I wouldn’t want the text of my banks website easily readable by any random process.


You could probably run your bank website in incognito mode and avoid extensions. I do this all the time because I don't completely trust any of my installed extensions. Even if I did, they are auto-updated and their code can change at any time without any notice.


Good idea. You could also access your bank and other sensitive sites with a different profile:

    google-chrome --user-data-dir="/path/to/somewhere/else"
I use this switch and a directory from `mktemp -d` for remote debugging (--remote-debugging-port=1234). The debugging does not disturb my normal browsing and the profile is completely disposable.


Neat! Your example of closing all Stack Overflow tabs reminds me of a little extension I made a while ago to manage tabs by domain:

https://chrome.google.com/webstore/detail/manage-tabs-by-dom...

Which would allow you to easily close all tabs from Stack Overflow.


I like it, the plan 9/acme approach seems like it could be pretty powerful with browsers


This reminds me of Bookmark OS https://bookmarkos.com


Slightly OT: I would really like an alt-tab command that cycled through my browser tabs as well as my app windows. Nowadays a single website is more like an app than the entire web browser is, so I think this metaphor would make sense.


ctrl and page up or down move forward and back across tabs in most browsers. ctrl (or alt) + number switches to that tab.


But I want something that integrates browser tabs and other ordinary app windows. A single command for everything.


I really like the idea and it made me realize that I want a simple interface to list/switch/create tabs from custom tools.

However, I think a less powerful extension that just subscribes to `chrome.(tab|window).*` events and reports them to a local server and listens for commands (e.g to create tabs) would be enough. Not using the debug api and not exposing more than tabs, windows and URLs.

The reporting bit of the extension could be as simple as a bunch of listeners a la:

  chrome.tabs.onSelectionChanged.addListener(
    (tabId, props) => fetch('http://localhost:8118/report?'+JSON.stringify([tabId, props])));


I'd be willing to back a patreon that explores this concept further. I'd be worried about browser updates breaking things though.


If you are interested, we are thinking about exploring this concept in Nyxt, please voice your support on our GitHub (leave an issue or otherwise). https://github.com/atlas-engineer/nyxt


> more persistence stuff. as I said earlier, it would also be cool if you could put arbitrary files in the subtrees, so .git, Mac extended attrs, editor temp files, etc all work. make it able to behave like a 'real' filesystem. also as I said earlier, some weirdness in the fact that tabs are so disposable; they have a very different lifecycle from most parts of my real filesystem. how to nudge that?

It would be interesting to have a "persistent" layer where you could store stuff related to a domain. For example you would store userscripts in "ycombinator.com" folder, and they would load each time a tab of that domain is open. That would be a clean organization.

Then, if websites are made with TabFS in mind, the gap between the concepts of "apps" and "website" is probably filled.


TabFS is what I was looking for LiveComment. With a simple frontend and backend plugin for livecomment, you can manage your 800 tabs in one tab with iframe preview

https://www.npmjs.com/package/livecomment


I had been looking for a way to "scriptably" sort the Firefox tabs I have open. Unfortunately by cursory glance this would not allow us to change the order of tabs (AKA the index).

Very cool idea though and looking forward to seeing what comes of it.


In this post someone mentioned brotab which does exactly that.


Thanks, I'll check it out!


I don't get why it requires to be loaded as a temporary extension in order to work. Both Chrome and Firefox nowadays only allow permanent installation for extensions that are present on the store.

I know that both the Mozilla and Chrome stores have become increasingly strict in terms of what the uploaded extensions can do (I've gone through a quite bumpy road to get my extension published), but if you submit the extension to them and make sure that it is compliant with their policies I think that there would be no need to manually load the manifest from developer mode.


Interesting idea that could be applied to a lot of other things... You could imagine a unified /proc-like file system for a big hairy backend for instance.


Love it, I didn't see and would love to see them also grouped by window, as that is how they naturally get grouped into different tasks (for me at least).


If you have many tabs open, it’s good to schedule some time to put these into a bookmark manager, memex, org brain, tiddlywiki, or equivalent. I’ve found they’re open usually because the work on each tab is unfinished. I’ve got to read this, I want to remember this, or this could help me with a project, are the categories my tabs often fall into. An inbox zero approach to tabs is what I’m working towards.


What is the tool used in the example where they select files and then delete them?

https://omar.website/tabfs/doc/delete.mp4

Ah, I see now. It is called "dired". I wonder if it can be used standalone, without emacs.


You might like Ranger[1]. It's not dired, but has similar rich set of features.

[1]: https://github.com/ranger/ranger


There is also `vidir` which is part of `moreutils`:

https://joeyh.name/code/moreutils/


You could always

     emacs --eval '(dired ".")'
to immediately start emacs-dired in this directory :-)


Also:

    $ cat ~/bin/dired
    #!/bin/bash

    # Launch Dired in a plain Emacs configuration.

    # Arguments are passed to Emacs, e.g. "-nw" works as expected.

    emacs -q "$@" \
          --eval "(dired default-directory)" \
          --eval "(defun kill-window-or-emacs () (interactive) (if (one-window-p) (kill-emacs) (delete-window)))" \
          --eval "(setq dired-dwim-target t delete-by-moving-to-trash t)" \
          --eval "(define-key dired-mode-map (kbd \"q\") #'kill-window-or-emacs)"


Would be cool if it was compatible with Tree Style Tabs ;-)

In fact, one feature I am missing in Tree Style Tabs is the ability to save a list of tabs as a text file to archive it and to open/import it at a later point in time again.

Somehow TabFS feels like it could be used to achieve that.


It seems to be compatible with tree style tabs. I'm not sure how to import, but this seems to do a reasonable job of exporting: ls | xargs -I {} paste {}/url.txt {}/title.txt


This is an awesome idea and great work! I didn't even know I needed this until now. Now I even feel like something similar should be a regular part of a web browser, just like web development tools :)


If you are running WSL1, https://github.com/billziss-gh/winfuse is your friend.


> (now... how would you do this without TabFS? I honestly have no idea, off the top of my head. like, how do you even get the titles of tabs? how do you tell the browser to close them?)

chrome-cli


I haven't seen this included in the "what you can do with this" section but my first thought was that you could use git in there and save your usage over time.


This is a really cool idea. Any chance of supporting Safari?


Perfect example of "everything is a file", imo.


Finally, I can simulate 9P on worse browsers.


Slightly unrelated, but as a fan and user of Edge, I really miss their old 'Save tabs for later' feature.


I think the most useful extension of this would be to have any DOM node become a node in the filesystem.


I didn't see any cookie or local storage management. Is that included?


This is why we should move to Holochain and DAT: it allows this + more.


Smart! Though, it would be nice to have full html besides txt.


It looks like a fancy way to create a reverse shell


Cool.

I'd prefer the same info as a relational DB though.


Absolutely brilliant. Thank you


Fantastic idea! As someone who was just starting to slowly learn their way around the Chrome API, your timing couldn't be better either.

Look forward to seeing what else gets implemented on your todo list.


Sounds like a fantastic idea, especially if I can use it to save video and images from websites too.

Unfortunately it doesn't work for me though -- I get "Unchecked runtime.lastError: Native host has exited."

Output of install script: ``` $ ./install.sh chrome mnlmpigkagdnfjmicelbkejgfefcnlkp + [[ 2 -lt 1 ]] + [[ chrome == \f\i\r\e\f\o\x ]] + [[ chrome == \c\h\r\o\m\e ]] + [[ 2 -eq 2 ]] + [[ 32 -eq 32 ]] ++ uname -s + OS=Linux ++ echo chrome ++ tr '[:upper:]' '[:lower:]' + BROWSER=chrome + case "$OS $BROWSER" in + MANIFEST_LOCATION=/home/dheera/.config/google-chrome/NativeMessagingHosts + mkdir -p /home/dheera/.config/google-chrome/NativeMessagingHosts + APP_NAME=com.rsnous.tabfs ++ pwd + EXE_PATH=/home/dheera/code/clone/TabFS/fs/tabfs + case "$BROWSER" in + EXTENSION_ID=mnlmpigkagdnfjmicelbkejgfefcnlkp ++ cat + MANIFEST='{ "name": "com.rsnous.tabfs", "description": "TabFS", "path": "/home/dheera/code/clone/TabFS/fs/tabfs", "type": "stdio", "allowed_extensions": ["tabfs@rsnous.com"], "allowed_origins": ["chrome-extension://mnlmpigkagdnfjmicelbkejgfefcnlkp/"] }' + echo '{ "name": "com.rsnous.tabfs", "description": "TabFS", "path": "/home/dheera/code/clone/TabFS/fs/tabfs", "type": "stdio", "allowed_extensions": ["tabfs@rsnous.com"], "allowed_origins": ["chrome-extension://mnlmpigkagdnfjmicelbkejgfefcnlkp/"] }' ```


>save video

Problem with HTML5 video is you can use more than just a link to video file https://developer.mozilla.org/en-US/docs/Web/API/MediaSource There are "certain" websites serving videos using BLOB object mediasource created dynamically from encrypted https sources. So far I had no luck trying to capture resulting video datastream, mediasource is a write and forget type of interface, and on top of that MediaRecorder/captureStream() is bugged and crashes so you cant even record lossy reencoded capture.

https://stackoverflow.com/questions/50938089/how-to-download...

I should probably experiment with shimming whole MediaSource api and capture data before its pumped into the read only void.


Another trick is to use mobile safari, because mobile safari only supports HLS, which is more easily downloadable.


It's running a script in the background to exfiltrate the info from the browser to the system, and that script has an error. I believe it's a script like /home/dheera/code/clone/TabFS/fs/tabfs* – if you look around in the browser some more you should find the stderr output of the script, which probably explains the error




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: