TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

TabFS: Mount your Browser Tabs as a Filesystem

1400 pointsby thesephistover 4 years ago

48 comments

sho_hnover 4 years ago
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&#x27;s asset directories and open image files, etc. Think like a client-side generated version of Apache&#x27;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:&#x2F;&#x2F;" rel="nofollow">http:&#x2F;&#x2F;</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&#x27;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.
评论 #25604244 未加载
评论 #25603117 未加载
评论 #25601957 未加载
评论 #25614637 未加载
评论 #25604669 未加载
评论 #25604393 未加载
评论 #25602629 未加载
评论 #25601778 未加载
评论 #25622291 未加载
wutbrodoover 4 years ago
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&#x27;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&#x27;s at-the-time obsolete documentation and probably-necessary security model).<p>I&#x27;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&#x27;s note that this is experimental, not secure, etc. I&#x27;m mainly just excited about having a jumping-off point to play around with and possibly hack on a little.
评论 #25609820 未加载
评论 #25601740 未加载
评论 #25607673 未加载
cocktailpeanutsover 4 years ago
This is a brilliant piece of work. As someone who has thousands of tabs open, I&#x27;ve always wanted to &quot;close all tabs with a single command&quot;, 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 &quot;d&quot;.
评论 #25605222 未加载
评论 #25604426 未加载
评论 #25601739 未加载
评论 #25601308 未加载
评论 #25601196 未加载
评论 #25601080 未加载
评论 #25601213 未加载
评论 #25601345 未加载
评论 #25603441 未加载
评论 #25605143 未加载
评论 #25615012 未加载
评论 #25601218 未加载
评论 #25601907 未加载
评论 #25602027 未加载
评论 #25601058 未加载
评论 #25621865 未加载
评论 #25601061 未加载
评论 #25604709 未加载
评论 #25608827 未加载
aljungbergover 4 years ago
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&#x2F;body&#x2F;*&#x2F;img&#x2F;.hero-img&#x2F;hello.png ~Downloads&#x2F;<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.
评论 #25602839 未加载
评论 #25603240 未加载
Shared404over 4 years ago
I&#x27;m loving this trend to do more things with filesystems.<p>There was <a href="https:&#x2F;&#x2F;amoffat.github.io&#x2F;supertag&#x2F;" rel="nofollow">https:&#x2F;&#x2F;amoffat.github.io&#x2F;supertag&#x2F;</a> [,] which I&#x27;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.
评论 #25601576 未加载
评论 #25601270 未加载
chmod775over 4 years ago
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...
评论 #25617099 未加载
MisterTeaover 4 years ago
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&#x27;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&#x2F;get with read()&#x2F;write(). And it can be served over a network so you could run a webfs &quot;server&quot; 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:&#x2F;&#x2F;man.postnix.pw&#x2F;9front&#x2F;4&#x2F;webfs" rel="nofollow">http:&#x2F;&#x2F;man.postnix.pw&#x2F;9front&#x2F;4&#x2F;webfs</a><p>2. <a href="https:&#x2F;&#x2F;github.com&#x2F;netsurf-plan9" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;netsurf-plan9</a>
sub7over 4 years ago
This is the best idea I&#x27;ve seen all year.<p>You can make it so that every website is fully searchable and the data easily viewable&#x2F;extractable. Set up the marketplace for user created plugins, the possibilities are endless.<p>I would happily contribute $25k to this. reply if interested.
评论 #25603126 未加载
评论 #25608843 未加载
Animatsover 4 years ago
Next, a browser extension that shows your file system as browser tabs.
dotancohenover 4 years ago
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&#x27;ll have to decide between preserving my workflow or updating my browser and possibly other software.<p>Maybe once there&#x27;s more than 5 forks or a few hundred Github stars, I&#x27;ll start to see where I can incorporate it into my workflow. But as it is, I&#x27;ve become wary of super-useful tools that are not yet in widespread use.
Jarredover 4 years ago
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&#x27;s Sources tab but as files and folders on your computer.<p>This would be great for scraping with headless browsers. It&#x27;d let you use shell scripts or your favorite programming language&#x27;s filesystem library to read&#x2F;copy assets, rather than writing code with Puppeteer to copy files&#x2F;data.<p>It would have to copy from Chrome directly though, rather than re-fetch the content
评论 #25601673 未加载
评论 #25601456 未加载
javajoshover 4 years ago
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.
skovorodkinover 4 years ago
Probably not as powerful as TabFS, but there&#x27;s also <a href="https:&#x2F;&#x2F;github.com&#x2F;balta2ar&#x2F;brotab" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;balta2ar&#x2F;brotab</a>:<p>&gt; 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.
nyanpasu64over 4 years ago
&quot;mnt&#x2F;tabs&#x2F;by-id&#x2F;*&#x2F;title.txt&quot; 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 &quot;relational database&quot; than a hierarchical tree filesystem? I noticced that &quot;by-id&quot; and &quot;by-title&quot; and &quot;last-focused&quot; 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&#x2F;grep, fd&#x2F;rg).
评论 #25604111 未加载
incanus77over 4 years ago
I’m excited to dig into this a bit and possibly add Safari support. I recently built a script (<a href="https:&#x2F;&#x2F;github.com&#x2F;incanus&#x2F;fari" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;incanus&#x2F;fari</a>) for Curses-based (terminal) navigation of Safari tabs with hopes of adding management functionality in the future.
jwaltonover 4 years ago
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.
评论 #25602859 未加载
nicolewhiteover 4 years ago
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:&#x2F;&#x2F;chrome.google.com&#x2F;webstore&#x2F;detail&#x2F;manage-tabs-by-domain&#x2F;jgjhgpeaejjahlbcgijdibooomicdcfi" rel="nofollow">https:&#x2F;&#x2F;chrome.google.com&#x2F;webstore&#x2F;detail&#x2F;manage-tabs-by-dom...</a><p>Which would allow you to easily close all tabs from Stack Overflow.
Palomidesover 4 years ago
I like it, the plan 9&#x2F;acme approach seems like it could be pretty powerful with browsers
davidp670over 4 years ago
This reminds me of Bookmark OS <a href="https:&#x2F;&#x2F;bookmarkos.com" rel="nofollow">https:&#x2F;&#x2F;bookmarkos.com</a>
dash2over 4 years ago
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.
评论 #25611343 未加载
felixrover 4 years ago
I really like the idea and it made me realize that I want a simple interface to list&#x2F;switch&#x2F;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) =&gt; fetch(&#x27;http:&#x2F;&#x2F;localhost:8118&#x2F;report?&#x27;+JSON.stringify([tabId, props])));</code></pre>
KitDuncanover 4 years ago
I&#x27;d be willing to back a patreon that explores this concept further. I&#x27;d be worried about browser updates breaking things though.
评论 #25608859 未加载
antplsover 4 years ago
&gt; 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 &#x27;real&#x27; 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 &quot;persistent&quot; layer where you could store stuff related to a domain. For example you would store userscripts in &quot;ycombinator.com&quot; 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 &quot;apps&quot; and &quot;website&quot; is probably filled.
ellis0nover 4 years ago
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:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;livecomment" rel="nofollow">https:&#x2F;&#x2F;www.npmjs.com&#x2F;package&#x2F;livecomment</a>
22cover 4 years ago
I had been looking for a way to &quot;scriptably&quot; 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.
评论 #25609221 未加载
blacklightover 4 years ago
I don&#x27;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&#x27;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.
bjornsingover 4 years ago
Interesting idea that could be applied to a lot of other things... You could imagine a unified &#x2F;proc-like file system for a big hairy backend for instance.
tjoffover 4 years ago
Love it, I didn&#x27;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).
twobitshifterover 4 years ago
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.
TekMolover 4 years ago
What is the tool used in the example where they select files and then delete them?<p><a href="https:&#x2F;&#x2F;omar.website&#x2F;tabfs&#x2F;doc&#x2F;delete.mp4" rel="nofollow">https:&#x2F;&#x2F;omar.website&#x2F;tabfs&#x2F;doc&#x2F;delete.mp4</a><p>Ah, I see now. It is called &quot;dired&quot;. I wonder if it can be used standalone, without emacs.
评论 #25601758 未加载
评论 #25601795 未加载
评论 #25603643 未加载
arendtioover 4 years ago
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&#x2F;import it at a later point in time again.<p>Somehow TabFS feels like it could be used to achieve that.
评论 #25605494 未加载
popc0rnover 4 years ago
This is an awesome idea and great work! I didn&#x27;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 :)
chxover 4 years ago
If you are running WSL1, <a href="https:&#x2F;&#x2F;github.com&#x2F;billziss-gh&#x2F;winfuse" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;billziss-gh&#x2F;winfuse</a> is your friend.
da39a3eeover 4 years ago
&gt; (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
oliv__over 4 years ago
I haven&#x27;t seen this included in the &quot;what you can do with this&quot; section but my first thought was that you could use git in there and save your usage over time.
lilyballover 4 years ago
This is a really cool idea. Any chance of supporting Safari?
mcdevilkillerover 4 years ago
Perfect example of &quot;everything is a file&quot;, imo.
rhabarbaover 4 years ago
Finally, I can simulate 9P on worse browsers.
abvrover 4 years ago
Slightly unrelated, but as a fan and user of Edge, I really miss their old &#x27;Save tabs for later&#x27; feature.
ameliusover 4 years ago
I think the most useful extension of this would be to have any DOM node become a node in the filesystem.
sfgweilr4fover 4 years ago
I didn&#x27;t see any cookie or local storage management. Is that included?
bergstromm466over 4 years ago
This is why we should move to Holochain and DAT: it allows this + more.
brokenkebabover 4 years ago
Smart! Though, it would be nice to have full html besides txt.
nudpiedoover 4 years ago
It looks like a fancy way to create a reverse shell
jerjerjerover 4 years ago
Cool.<p>I&#x27;d prefer the same info as a relational DB though.
adamretterover 4 years ago
Absolutely brilliant. Thank you
selfishgeneover 4 years ago
Fantastic idea! As someone who was just starting to slowly learn their way around the Chrome API, your timing couldn&#x27;t be better either.<p>Look forward to seeing what else gets implemented on your todo list.
dheeraover 4 years ago
Sounds like a fantastic idea, especially if I can use it to save video and images from websites too.<p>Unfortunately it doesn&#x27;t work for me though -- I get &quot;Unchecked runtime.lastError: Native host has exited.&quot;<p>Output of install script: ``` $ .&#x2F;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 &#x27;[:upper:]&#x27; &#x27;[:lower:]&#x27; + BROWSER=chrome + case &quot;$OS $BROWSER&quot; in + MANIFEST_LOCATION=&#x2F;home&#x2F;dheera&#x2F;.config&#x2F;google-chrome&#x2F;NativeMessagingHosts + mkdir -p &#x2F;home&#x2F;dheera&#x2F;.config&#x2F;google-chrome&#x2F;NativeMessagingHosts + APP_NAME=com.rsnous.tabfs ++ pwd + EXE_PATH=&#x2F;home&#x2F;dheera&#x2F;code&#x2F;clone&#x2F;TabFS&#x2F;fs&#x2F;tabfs + case &quot;$BROWSER&quot; in + EXTENSION_ID=mnlmpigkagdnfjmicelbkejgfefcnlkp ++ cat + MANIFEST=&#x27;{ &quot;name&quot;: &quot;com.rsnous.tabfs&quot;, &quot;description&quot;: &quot;TabFS&quot;, &quot;path&quot;: &quot;&#x2F;home&#x2F;dheera&#x2F;code&#x2F;clone&#x2F;TabFS&#x2F;fs&#x2F;tabfs&quot;, &quot;type&quot;: &quot;stdio&quot;, &quot;allowed_extensions&quot;: [&quot;tabfs@rsnous.com&quot;], &quot;allowed_origins&quot;: [&quot;chrome-extension:&#x2F;&#x2F;mnlmpigkagdnfjmicelbkejgfefcnlkp&#x2F;&quot;] }&#x27; + echo &#x27;{ &quot;name&quot;: &quot;com.rsnous.tabfs&quot;, &quot;description&quot;: &quot;TabFS&quot;, &quot;path&quot;: &quot;&#x2F;home&#x2F;dheera&#x2F;code&#x2F;clone&#x2F;TabFS&#x2F;fs&#x2F;tabfs&quot;, &quot;type&quot;: &quot;stdio&quot;, &quot;allowed_extensions&quot;: [&quot;tabfs@rsnous.com&quot;], &quot;allowed_origins&quot;: [&quot;chrome-extension:&#x2F;&#x2F;mnlmpigkagdnfjmicelbkejgfefcnlkp&#x2F;&quot;] }&#x27; ```
评论 #25601160 未加载
评论 #25601178 未加载