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.<p>I remember using this regularly to mass-download the images embedded into a page - open the page this way by replacing <a href="http://" rel="nofollow">http://</a> with a pseudo-protocol, copy all, paste, done.<p>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.<p>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.
Wow, this is awesome!<p>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).<p>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.<p>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.
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 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.<p>cp html/body/*/img/.hero-img/hello.png ~Downloads/<p>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.
I'm loving this trend to do more things with filesystems.<p>There was <a href="https://amoffat.github.io/supertag/" rel="nofollow">https://amoffat.github.io/supertag/</a> [,] 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.
Just a heads up that this is a potential security vulnerability because it essentially allows sites to put arbitrary files into your file system.<p>This might cause certain software to automatically read them (for instance to generate previews) and allow an attacker to exploit vulnerabilities in that software.<p>Think of an unsandboxed process generating a preview for a PDF file...
Interesting use of a file server.<p>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 :-)<p>1. <a href="http://man.postnix.pw/9front/4/webfs" rel="nofollow">http://man.postnix.pw/9front/4/webfs</a><p>2. <a href="https://github.com/netsurf-plan9" rel="nofollow">https://github.com/netsurf-plan9</a>
This is the best idea I've seen all year.<p>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.<p>I would happily contribute $25k to this. reply if interested.
This is the type of tool that I would love to love.<p>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.<p>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:<p>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.<p>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.<p>It would have to copy from Chrome directly though, rather than re-fetch the content
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. <i>.com</i> too often implies a business, <i>.org</i> a non-profit, etc but <i>.website</i> 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 <a href="https://github.com/balta2ar/brotab" rel="nofollow">https://github.com/balta2ar/brotab</a>:<p>> 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.<p>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.<p>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.<p>The downside is that you can no longer use command-line utilities that operate on files (find/grep, fd/rg).
I’m excited to dig into this a bit and possibly add Safari support. I recently built a script (<a href="https://github.com/incanus/fari" rel="nofollow">https://github.com/incanus/fari</a>) 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.
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:<p><a href="https://chrome.google.com/webstore/detail/manage-tabs-by-domain/jgjhgpeaejjahlbcgijdibooomicdcfi" rel="nofollow">https://chrome.google.com/webstore/detail/manage-tabs-by-dom...</a><p>Which would allow you to easily close all tabs from Stack Overflow.
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.
I really like the idea and it made me realize that I want a simple interface to list/switch/create tabs from custom tools.<p>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.<p>The reporting bit of the extension could be as simple as a bunch of listeners a la:<p><pre><code> chrome.tabs.onSelectionChanged.addListener(
(tabId, props) => fetch('http://localhost:8118/report?'+JSON.stringify([tabId, props])));</code></pre>
> 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?<p>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.<p>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<p><a href="https://www.npmjs.com/package/livecomment" rel="nofollow">https://www.npmjs.com/package/livecomment</a>
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).<p>Very cool idea though and looking forward to seeing what comes of it.
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.<p>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?<p><a href="https://omar.website/tabfs/doc/delete.mp4" rel="nofollow">https://omar.website/tabfs/doc/delete.mp4</a><p>Ah, I see now. It is called "dired". I wonder if it can be used standalone, without emacs.
Would be cool if it was compatible with Tree Style Tabs ;-)<p>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.<p>Somehow TabFS feels like it could be used to achieve that.
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, <a href="https://github.com/billziss-gh/winfuse" rel="nofollow">https://github.com/billziss-gh/winfuse</a> 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?)<p>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.
Fantastic idea! As someone who was just starting to slowly learn their way around the Chrome API, your timing couldn't be better either.<p>Look forward to seeing what else gets implemented on your todo list.