[HN Gopher] TabFS - a browser extension that mounts the browser ...
___________________________________________________________________
TabFS - a browser extension that mounts the browser tabs as a
filesystem
Author : pps
Score : 934 points
Date : 2023-02-18 15:33 UTC (1 days ago)
(HTM) web link (omar.website)
(TXT) w3m dump (omar.website)
| smusamashah wrote:
| Previous discussion https://news.ycombinator.com/item?id=25600338
| hendzen wrote:
| This is really cool. Great work
| Roxanne5 wrote:
| [dead]
| TenJack wrote:
| This reminds me of Bookmark OS but not in the browser
| https://bookmarkos.com
| phillco wrote:
| If you're on macOS, you can do a small piece of this natively
| with AppleScript (or anything that can send apple events) in
| Chrome or Safari -- namely, you can iterate through windows or
| tabs, view their source code, and execute arbitrary javascript
| you pass (there's a one time security option you have to accept).
| This can be handy for quick automations if you don't want to
| install anything.
|
| (Background: I have RSI, so I've been developing some
| integrations between applications and Talon Voice
| (https://talonvoice.com/). AppleScript ends up being surprisingly
| valuable/fast/reliable for applications that support it. I also
| built an integration with iTerm2's Python API before noticing
| that everything I was trying to do was already supported by its
| AppleScript dictionary, and was faster. In Google Chrome, the
| "iterate through tabs and execute javascript in them" is very
| useful for automating Google Meet muting/unmuting.)
|
| Nothing against this excellent project though; I'm a big fan of
| Omar's Twitter! And I suspect most here will appreciate the
| easier scriptability of the filesystem approach than dealing with
| the atrocious syntax of AppleScript.
| scarface74 wrote:
| If you had told me in 1992 when AppleScript was first
| introduced that it would be around for over 30 years across
| three processor transitions, I would not have believed you.
|
| Now they just need to bring back QuickDraw GX, OpenDoc and
| PowerTalk (please don't for all that is holy)
| nbar wrote:
| Love to hear more about this. I also suffer from RSI and would
| love to know if it's helped changing input to voice
| pmoriarty wrote:
| "If you're on macOS, you can do a small piece of this natively
| with AppleScript (or anything that can send apple events) in
| Chrome or Safari -- namely, you can iterate through windows or
| tabs, view their source code, and execute arbitrary javascript
| you pass (there's a one time security option you have to
| accept). This can be handy for quick automations if you don't
| want to install anything."
|
| Are there any good examples of doing this?
| phillco wrote:
| I believe I modified a version of this - https://gist.github.
| com/lyallcooper/10f48ab050ac8594fe46335e...
| cpleppert wrote:
| sure, for example this pauses every youtube video in every
| chrome tab: tell application "Google Chrome" repeat with
| theWindow in every window repeat with theTab in (every tab of
| theWindow) if (URL of theTab) contains "youtube.com" then
| execute theTab javascript "document.querySelectorAll('video,
| audio').forEach(e => e.pause())" end if end repeat end repeat
| end tell
|
| There are lots of examples just by googling. The script
| editor has a dictionary for every application you can
| natively script.
| [deleted]
| AlexAndScripts wrote:
| Have you got any suggestions for coping with RSI? I'm having
| significant issues.
| chaorace wrote:
| It's all about hardware. I've addressed it quite well with a
| three-pronged approach:
|
| 1. Motorized standing desk - typing from varying postures
| keeps strain spread out
|
| 2. Kensington trackball mouse - less hand sweeping /
| temptation to drags wrist on table
|
| 3. Ortholinear "Planck" keyboard - modifier keys accessible
| via thumb and programmable layers more generally can
| completely eliminate painful hand poses and keep fingers on
| the home-row
| smcleod wrote:
| Personally I find the Kensington trackball mouse made my
| carpel tunnel a LOT worse, they're not for everyone.
| ryukafalz wrote:
| With my particular RSI I also can't use a standard
| trackball, but I swear by my thumb trackballs. (But every
| body is different, every injury is different, etc.)
| ajolly wrote:
| Change is good. I find using a variety of mice helps.
| Rollermouse, trackpads, rockmouse, carpal tunnel
| mouse(quadraclicks), mousetrapper.
|
| For the dragging wrist problem, I really like the reloot or
| other similar gliding palm rests. I find upgrading them
| with ceramic lights makes a big difference.
| Scaevolus wrote:
| Have you tried a book on the mind body connection of pain? It
| helps some people with RSI: https://www.amazon.com/Healing-
| Back-Pain-Mind-Body-Connectio...
| nier wrote:
| That's also how I got rid of my RSI.
|
| Once I ended that one bad relationship in my life, my mind
| stopped messing up the most used part of my body to send me
| signals that I'm actually chewing on life's gristle.
|
| My wrists have been pain free for 15 years. Without
| surgery. Without therapy. Without a change in work hours.
| phillco wrote:
| If you're programming, definitely check out Cursorless:
| https://www.cursorless.org/.
|
| Talon itself provides noise and speech recognition, and
| provides the framework that allows you to build automations
| with any program; Cursorless really helps make programming by
| voice feel comparable to typing.
|
| For me, it's a combination of introducing alternate input
| methods (largely voice, but noises are also very additive --
| they very well for fast/discreet actions, whereas voice is
| higher bandwidth but lower latency), as well as building
| higher-level and better integrations with applications. But I
| still have always to go personally.
|
| I've been meaning to write up a blog post with everything
| that I've learned, but you know how it is :)
| jv22222 wrote:
| +1 on that blog post!
| phillco wrote:
| Edit: I meant to say that voice is higher bandwidth _and_
| higher latency, not lower.
| wahnfrieden wrote:
| Split vertical keyboards with very very light switches. I use
| Sofle Choc and have the sides at shoulders width apart
|
| I recommend breaks and rest over strengthening exercises when
| dealing with hand pain. Learn preventative measures
| mokanfar wrote:
| Devote a 4 digit budget for a new workspace that relieves RSI
| causing movements.
| jen729w wrote:
| You don't need to spend that much. I mean, go for it, it
| sounds fun, but just getting a desk the right height (i.e.
| probably lower than it is now) and a stable chair solved
| mine. See sibling comment here.
|
| https://news.ycombinator.com/item?id=34852007
| replwoacause wrote:
| The Kinesis Advantage 2 keyboard fixed mine. I also use a
| Logitech trackball instead of a mouse.
| password4321 wrote:
| I used to scan all the tabs in open browser windows to list all
| URLs.
|
| See also https://chromedevtools.github.io/devtools-protocol/
| with Playwright et al., even Excel VBA:
| https://github.com/PerditionC/VBAChromeDevProtocol
|
| Many sites fight against automation, see
| https://github.com/ultrafunkamsterdam/undetected-chromedrive...
| tedmiston wrote:
| Shameless plug: I've made a set of AppleScripts I call "Tab
| Transporter" for moving groups of tabs between browsers. The
| code is painful to write when you're used to a normal
| programming language, so these examples could be useful for
| anyone else looking to interact with browser tabs via
| AppleScript.
|
| I've used them daily for 5+ years.
|
| https://github.com/tedmiston/tab-transporter
| ayewo wrote:
| Funny, I do similar [1] though my solution is very basic
| compared to yours. The script allows me to quickly move the
| current tab from Firefox or Safari to Arc Browser [2] (which
| uses Chrome under the hood).
|
| I use the following key-bindings [?][?]F or [?][?]S in
| Raycast [3] to activate a tab move to Arc from Firefox or
| Safari, respectively.
|
| 1: https://github.com/ayewo/raycast-script-
| commands/tree/main/b...
|
| 2: https://arc.net
|
| 3: https://www.raycast.com/
| phillco wrote:
| Nice, thank you!
| oefrha wrote:
| You don't need to write AppleScript yourself, someone else has
| already done the hard work with Scripting Bridge and you can
| simply enjoy an easy-to-use CLI:
| https://github.com/prasmussen/chrome-cli
|
| Been using this for about a decade now.
| SonicSoul wrote:
| interesting, what are your use cases?
| aidos wrote:
| I can't answer that question exactly because that's driving
| Chrome, but I wrote an AppleScript the other day to make
| zoom less dreadful.
|
| I annotate on screens all day and there are no useful
| shortcuts for moving between drawing and erasing. Also the
| drawing button requires 2 clicks. I've wired my wacom
| tablet so the two buttons fire off shortcuts, they run a
| service I've registered in the menus, they run the
| applescript, it fishes about for the right windows in zoom
| and clicks the buttons. It could not have worked but it
| just happens to because I can trigger a button and then
| focus moves to the next button (which I can't otherwise
| target) and then I can push "space" to get the job done.
| aidos wrote:
| Here's one of the scripts if anyone wants to see how
| weird it all is. tell application
| "System Events" repeat with theProcess in
| processes if not background only of
| theProcess then tell theProcess
| set processName to name set
| theWindows to windows end tell
| set windowsCount to count of theWindows
| if processName is "zoom.us" then
| repeat with theWindow in theWindows tell
| theWindow set theSize to size
| set windowName to name end tell
| if windowName is "annotation panel" then
| if item 1 of theSize is 776 then
| tell theWindow to tell button 5 to click
| key code 49 else
| tell theWindow to tell button 4 to click
| key code 49 end if
| end if end repeat end
| if end if end repeat end tell
| jasomill wrote:
| Safari, not Chrome, but here's an AppleScript I use to map
| a trackpad gesture to the "next page" link on a wide
| variety of Web sites, tell application
| "Safari" to do JavaScript " (() => {
| const loc = Array
| .from(document.querySelectorAll('[rel=\"next\"], .next,
| [title=\"Next page\"]')) .map(i =>
| i.getAttribute('href')).filter(i => i)[0];
| if (loc) { document.location = loc;
| } })() " in document 1
|
| s/next/prev/g s/Next/Previous/ for the matching "previous
| page" script.
|
| Note that this requires Safari's
| "AllowJavaScriptFromAppleEvents" preference to be set,
| either via a "Develop" menu option or directly in its
| preferences file via, _e.g.,_ the
| defaults write com.apple.Safari
| AllowJavaScriptFromAppleEvents -bool TRUE
|
| shell command, and that this setting allows any program you
| authorize[1] to send Apple Events to Safari to potentially
| do Terrible Things. Given that the setting is both disabled
| and hidden by default, and additionally gated by an opt-in
| privacy preference, it's presumably an unlikely target for
| garden-variety malware, however.
|
| [1] Check the Automation group in the Privacy tab of the
| Security & Privacy preference pane for a list of programs
| so authorized.
| [deleted]
| gymbeaux wrote:
| If I were you I would find out which "RSI" you have. Mine
| wasn't from "overuse" per se, just posture and needing to
| stretch/exercise.
|
| If your RSI is Carpal Tunnel or Cubital Tunnel Syndrome, a
| quick and easy surgery is the answer.
|
| If your RSI is tendinitis (unlikely, for all the times I see
| people self-diagnose with it) rest is your best bet.
|
| If your RSI is arthritis, there are medications and even
| surgeries out there to help with it, but that's the easiest one
| to diagnose because it just requires looking at an x ray of
| your hand.
|
| You may have carpal tunnel syndrome-like symptoms, but that
| likely just means you have nerve impingement _somewhere_
| between your cervical (neck area) spine and your hand.
|
| I'm not a doctor, but through personal experience I can tell
| you, you probably have the power to get rid of your "RSI"
| without resorting to dictation software and so on.
| codethief wrote:
| +1
|
| This is solid advice! I had "RSI" for years (could barely
| type or write) and in the end what solved _everything_ were
| exercises to improve my posture and strengthen my back, neck
| and shoulders.
| gymbeaux wrote:
| There's a lack of awareness too - I saw three orthopedic
| surgeons and one neurologist and none asked me about,
| mentioned, or tested me for Thoracic Outlet Syndrome (which
| is likely what you had based on what fixed your symptoms).
| I only learned about TOS myself after they ruled out Carpal
| Tunnel Syndrome and going back to Google to try to find
| what could be causing CTS symptoms _other than_ CTS.
| dceddia wrote:
| Regarding stretching, I found the book Conquering Carpal
| Tunnel Syndrome to be a huge help. It has lots of suggestions
| for kinds of stretches to do based on the kind of work you
| do, but my big takeaway (and according to the author, the
| most important part) was _how_ to do the stretches: only
| stretch until you _barely_ feel a stretch, then hold there
| until you feel a sense of release. In my experience that was
| more effective than the "stretch until you feel a good strong
| stretch" strategy.
|
| https://www.amazon.com/Conquering-Carpal-Syndrome-
| Repetitive...
| jen729w wrote:
| I have a copy of this which I no longer need. If anyone in
| Australia wants it hit me up and I'll mail it to you.
| @johnnydecimal@hachyderm.io.
|
| FWIW -- I know this isn't an RSI thread -- mine was 100%
| fixed by changing my desk. It was too high, and my classic
| 5-wheeled office chair was unstable. I lowered the desk to
| about 68cm (I'm 172cm) and bought a chair with wooden legs
| (Ikea, ~$80), started doing light stretches in the morning,
| and that fixed it for me.
|
| I made the desk from Ikea cabinets and a $100 plain wooden
| door. So it's a) cheap, b) massive, and c) I can screw
| things in to the underside.
| smcleod wrote:
| I significantly reduced the symptoms of my carpel tunnel
| by changing from a normal height mechanical keyboard to
| one with slim key caps. I really miss my Das Ultimate but
| the difference is really noticeable.
| jen729w wrote:
| Aah yep, I also had a Das, and the Filco Majestouch 2.
| Beautiful keyboards. Sold 'em.
|
| Now I use the very-average Microsoft Sculpt Ergonomic.
| Low keycaps, low travel. And of course a split layout.
|
| Do _not_ use the execrable MS mouse that comes with that
| keyboard. I love the MX Anywhere series, I currently use
| a 2 and a 3. They 're light, so you can nudge them round
| with your fingers without having to move your arm too
| aggressively.
| smcleod wrote:
| Ah yes I know that keyboard - mine is a Keychron K2 V2
| with optical switches. It's decent to type on but I miss
| having a volume knob and proper function keys.
|
| I find it really helps not having the number pad - it
| means my mouse can be closer to the keyboard so my wrists
| are straighter.
|
| For a mouse I use a MX Master 3 which I'm very happy
| with.
| gymbeaux wrote:
| I tried an MX Master 3 and 2S, I also have the MX Ergo
| trackball mouse and the Logitech vertical mouse. The
| vertical mouse is what I ended up with, but for years I
| would switch mice, switch between several mice within a
| day, switch hands - and they were all half-measures that
| just kind of delayed the "degeneration". The issue, it
| would seem, was not the mouse or overusing the mouse. The
| issue seems to have come from my shoulder area (Thoracic
| Outlet Syndrome aka TOS / Pec. Minor Syndrome), which a
| vertical mouse will uniquely address as it allows your
| shoulder to be less interiorly-rotated than a standard
| mouse, even a trackball mouse that is not vertical.
|
| I remember reading a Medium article a while ago about a
| software engineer who described how he addressed his
| "RSI", which I suspect was just TOS - he switched to an
| ergonomic keyboard and vertical mouse, which over a
| period of MANY MONTHS more or less resolved his RSI. He
| talked about how he still has to be careful and take
| breaks often. I really think, especially considering his
| age (20s), he could have kept the mouse and keyboard he
| had, if he just engaged in posture-correcting shoulder
| stretches and strength exercises.
| jen729w wrote:
| I tried the Master but found it a tad large. As above,
| I'm not a ginormous person: 172cm (5' 8", just), 70kgs. I
| don't have huge hands. I found pushing round the Master
| to be a bit too much work, which sounds preposterous but
| -\\_(tsu)_/-.
|
| The Anywhere is just smaller, lighter. More nimble.
| smcleod wrote:
| Interesting! I like my mouse to be as heavy has possible,
| I find it more preside and exacting.
| drewmol wrote:
| I also use an MX Master (2S), and wish I would have
| switched sooner. It can connect to 3 devices (via
| Bluetooth or USB receivers) with a button on the bottom
| to switch, and an "infinite" scroll wheel with multiple
| modes, which is awesome!
| ako wrote:
| Any experience with low-profile mechanical keyboards,
| seems like a potential compromise between something like
| the Das, and the microsoft sculpt?
| gymbeaux wrote:
| My personal trainer told me the same- you won't gain
| flexibility by "forcing" the stretch, only by stretching
| just beyond where the muscle wants to stop, holding it
| there for around 30 seconds (and you should feel a
| "release"), and repeating the next day.
| jacob019 wrote:
| Can this be used like selenium for testing/scraping/automation?
| If you can open tabs, dump the DOM and inject JS, then I would
| think so.
| _V_ wrote:
| This looks quite nice - for some time I have been trying to list
| all tabs in Chromium window so I can stick it to proper workspace
| (I'm using i3) - one for general browsing and one for IM/socials.
|
| If this can identify the window (PID or better WindowID like
| wmctrl -l lists) it will be perfect!
| greatgib wrote:
| This is so awesome, I can't believe that someone really created
| that.
|
| I have dozens of windows, each with thousands tabs and this is
| something I would have dreamed of if I knew that it was possible.
|
| Really kudo to this guy for that!
| timetraveller26 wrote:
| unix gang approves
| brimstedt wrote:
| Pretty cool, but my advice to anyone is still "stop using tabs,
| you os already have a window manager"
| beaugunderson wrote:
| tabs are great, why would I want 147 windows open? I can group
| my tabs by window; e.g. work, personal, side project, etc.
| brimstedt wrote:
| My counterquestion is: why use tabs as bookmarks?
|
| Usually when you have that many tabs open, it's not because
| you read/work on the pages.
| dcreater wrote:
| Does this load all videos and images into the filesystem for
| Onlyfans?
| eichin wrote:
| Hmm, this might be the right audience - anyone with C _and_ JS
| skills want to poke at https://github.com/osnr/TabFS/issues/75
| and maybe come up with a pull request? (I got as far as I could
| on the C side, all the details are in the issue, but I'm not sure
| what shape the javascript side of the fix would be...)
| haunter wrote:
| Something in a similar vein: BTFS, mount a torrent file (or
| magnet link) as a read only drive https://github.com/johang/btfs
|
| It's really good, and use it a lot of times. Doesn't seem to be
| an active project anymore though but it still works
| guax wrote:
| This is a super nice idea. I wonder what other software we could
| interact in this form. The Unix people did have a good point
| about everything being a file.
| yesenadam wrote:
| I loved this talk by Omar Rizwan from !!Con 2018 on that topic:
|
| _Four fake file systems!_ (9 mins)
| https://www.youtube.com/watch?v=pfHpDDXJQVg
|
| i.e. screenshots, torrents, youtube, git.
| yjftsjthsd-h wrote:
| One source of inspiration is to see what the Plan 9 folks did,
| plus things inspired from that - filesystems for network
| access, for the clipboard, for representing windows on the
| screen.
|
| I've also been considering some sort of filesystem for MQTT,
| which combined with an appropriate bridge would allow for
| reading and control of assorted smart devices as a filesystem.
| pmoriarty wrote:
| Plan9 takes this even further
| behnamoh wrote:
| > The Unix people did have a good point about everything being
| a file.
|
| Yes and no. While it simplifies things to an extent, it's also
| confusing, especially with extension-less files.
|
| Example: Tell me, is this a file or directory?
| ~/hn/today-posts
|
| It could be a file that curls todays posts, or it could be a
| folder (directory) that contains them.
| dredmorbius wrote:
| 'ls -l' will tell you the basic information of a given
| listing, including whether it's a normal file, directory,
| symlink, block device, named pipe, etc.
|
| stat(1) will provide additional information on a file.
|
| file(1) will not only distinguish between filesystem=level
| distinctions, but will make a remarkably good guess as to
| what the file _contents_ of a normal file are, based on
| magic(5).
| yegle wrote:
| How would adding an extension solve the issue? E.g. is this a
| file, a device file, or a symlink?
|
| /dev/readme.dev
|
| To know what this is, a `stat(2)` is required.
| crabbone wrote:
| Valid complaint, but maybe not such a great reason.
|
| It gets worse when you deal with _sysfs_ or _procfs_ and
| similar. It all becomes obscure magic, like what values can
| be written into what file, why some files aren 't readable,
| or the contents of files being just a bunch of numbers which
| you have no way of interpreting.
|
| Another problem is that there's way too many of different
| file types and they aren't organized into any kind of
| hierarchy or any other meaningful order. This makes tools
| like _rsync_ extremely complicated, with loads of footguns
| and still not solving the problem well. It feels especially
| bitter because in exceeding majority of cases you don 't want
| tools like _rsync_ to deal with named FIFO or device files or
| sockets etc. but you get accidentally but painfully bitten by
| them every now and then.
| sva_ wrote:
| The terminal emulator may change the color of the prompt, for
| example.
| drdaeman wrote:
| > Example: Tell me, is this a file or directory?
|
| A directory is a file (and IIRC e.g. Plan 9 decided they
| should be readable just like normal files and there shouldn't
| be any special readdir syscalls). You can see its attributes
| to figure out the rest.
|
| If not for strong Linux limitations (because of alleged
| hardlink knot-tying problem) and belief that it just cannot
| be both, transparent archive access through a filesystem
| would be a thing. As well as metadata access (`play
| ./file.mp3` vs `edit ./file.mp3/id3v2`). People of the past
| seemed to have paid great attention to interoperability and
| effort to make common interfaces; folks of the modern age
| ('00s and later) love unique and completely incompatible
| solutions to the same problem.
| christophilus wrote:
| Neat. I've often wished I could cat a directory or ls a
| file. Plan9 sounds like something I would have enjoyed
| using.
| enriquto wrote:
| > I've often wished I could cat a directory
|
| This was possible in the beginning. But then came the
| moral police and deprived us of this freedom, because
| they deemed it to be "confusing".
|
| See, for example, The Unix Programming Environment, by
| Kernighan and Pike, page 51 [0]:
|
| _Despite their fundamental properties inside the kernel,
| directories sit in the file system as ordinary files.
| They can be read as ordinary files. (...) The time has
| come to look at the bytes in a directory:_
| $ od -cb .
|
| [0] https://archive.org/details/UnixProgrammingEnviornmen
| t/page/...
| layer8 wrote:
| The file interface is somewhat limited though (e.g. everything
| is just an opaque untyped byte stream) and has security issues
| in conjunction with shell scripting (e.g. quoting and
| escaping).
|
| A data type aware interface like AppleScript or COM, if
| universally supported, would be more expedient.
| enriquto wrote:
| > The file interface is somewhat limited though
|
| And so? The mantra says "everything is a file", not
| "everything is only a file". You can provide stream access to
| everything, and then more advanced access to some particular
| resources.
| layer8 wrote:
| The problem is that everything below the file surface is
| proprietary, so to speak, _and_ that the file interface
| doesn't give you a standard way of discovering the file
| format or (for command pipes) the commands it understands.
| What's missing is a standard way of querying schema
| information about files /pipes. In addition, like in the
| TFA use-case, not just individual files have schemata, but
| whole directories and directory trees have. Those are not
| communicated by the file system, but have to be known out-
| of-band for each specific purpose.
|
| Providing just a generic interface cuts two ways: On the
| one hand, you can represent anything, but on the other
| hand, you don't know what anything represents without
| additional information (metadata).
| jbverschoor wrote:
| Any database: cat
| /mnt/imdb/movies/tt0103064/director/details.json
| cat /mnt/imdb/actors/by_contains_name/arnold/roles.csv
|
| Or any graphql source
| pmoriarty wrote:
| GraphiQL.... what a fucking nightmare
| danShumway wrote:
| If anyone already uses Sideberry (and I assume TST will work as
| well) on Firefox and doesn't want to download an additional
| extension or doesn't want something quite this powerful, I wrote
| https://textmark.netlify.app/ a week or two ago, and I've been
| using it as a bookmark replacement.
|
| Sideberry allows selecting arbitrary groups of tabs and copying
| them to the clipboard as an indented list of tabs. The site I put
| up will reopen those tabs, preserving the order and parent-child
| relationships between pages. It also uses `rel=noopener` to avoid
| a security risk I've noticed with similar sites in the past with
| parent-child page references. And it has no advertising and
| absolutely zero user tracking (aside from Netflify serverside
| logs that I can't turn off), since it's a project I made for
| myself and costs me nothing to run.
|
| Also, the entire source (minus the favicon) is in one page, so if
| you want to self-host it yourself for extra protection, just
| view-source and copy and paste. It'll work on any static web
| host.
|
| I've found this to be a hugely beneficial replacement for
| bookmarking. Bookmarks are too slow and cumbersome for me, so I
| end up not really using them. It's also annoying to enter
| descriptions for bookmarks, and I don't like that all of my
| bookmarks need to be in the browser at the same time. This allows
| me to copy tabs out to separate files (I use org-mode to sort
| everything). And then I just keep this site pinned and use it to
| reopen tabs later if I context-switch. It's the closest I've ever
| come to being able to actually manage my browser sessions and
| stop my tabs from growing out of control into the thousands.
|
| I was going to wait to Open Source it and write up a better
| explanation of the workflow I use before sharing it, but it's
| appropriate to share it here. It's not nearly as powerful as what
| TabFS is talking about (and I'm very interested to look into
| TabFS more, since I've been thinking about roughly the same
| problem, and this looks like a potentially quite powerful setup),
| but it's a small system that has made a big impact for me over
| the past week or so, and since I was already using Sideberry it
| doesn't require me to install anything new or open any additional
| attack vectors.
| mkl wrote:
| For some reason (to confuse everyone?) it's "Sidebery", with
| one r. https://addons.mozilla.org/en-US/firefox/addon/sidebery/
| rektide wrote:
| If anyone knows a twitter account even 1/8th as fun as Omar's[1]
| (the author of TabFS), I'd love to hear it.
|
| Endless fun meditations & musings on code & processes &
| computing. It's the most live, most inove stream of computing out
| there.
| chrisshroba wrote:
| [1]: https://twitter.com/rsnous
|
| :)
| sirjaz wrote:
| No support for Windows? There are more Windows endpoints than all
| iOS, MacOS, and Linux desktops combined.
| arrakeen wrote:
| echoing the sentiment given to linux users every time they ask
| for a version for their os-- you can just install linux in a vm
| if you want to use this.
| rmbyrro wrote:
| How many of those windows users would want to write a mesh of
| Python and Bash to interact with their browser?
|
| Not saying it shouldn't support windows, but choosing Linux and
| MacOS as initial support is a sensible choice...
| smashed wrote:
| Haven't looked into the source, but this is most probably using
| FuseFS in order to present a mountable filesystem.
|
| Fuse does not support windows. If it did the extension could
| probably be easy to port..
|
| Your best bet is probably running the browser under some wsl
| layer.
| dlivingston wrote:
| https://github.com/osnr/TabFS/issues/13
| [deleted]
| mgaunard wrote:
| This is extremely useful. Thank you.
| lerax wrote:
| Oh cool! it seems I am a first class citizen here! Linux + Chrome
| + Emacs user! I will test it
| sabujp wrote:
| I have to thank emacs OS (users) for this browser extension.
| napsterbr wrote:
| This is absolute genius and opens up so so many opportunities!
| barbazoo wrote:
| This is fantastic. I hope more people support them.
| prhrb wrote:
| This seems very interesting and all the uses cases it satisfies
| jadbox wrote:
| Plan 9 is pleased.
| IncRnd wrote:
| This is a great idea. I really do like this.
|
| However, we shouldn't forget the reduced security of the
| situation. This opens entirely new attack vectors by introducing
| the otherwise fantastic ability of local programs to consume
| network input.
|
| With the flexibility and utility of local information comes
| additional remote attacks. In doing so, this extension blurs the
| lines between the greater difficulty of remote attacks vs local
| attacks. Many programs never considered in their threat models
| that input would come over the network. There are many developers
| who never try to protect past a certain point, saying, "if the
| person gets this far, there is nothing we can do anyway", then
| they ship.
| rmbyrro wrote:
| Isn't this already a reality with wget, curl, and even package
| managers like pip and npm?
|
| I mean, any script on my machine can use these tools to
| interact with network input and execute untrustworthy code...
| IncRnd wrote:
| That's not the issue. The issue is adding network input into
| local tools whose threat models never considered having
| network input.
| NoZebra120vClip wrote:
| If a tool's threat model never considered having network
| input in the first place, that tool would seem deficient in
| most every real-world situation.
|
| I do not _per se_ see a problem with "network input" but I
| think you're referring to input from untrusted sources,
| i.e. input that is not controlled or approved by the user
| of the tools.
|
| I think that a modern operating system must definitely have
| access controls that can flag and signal when input is
| untrusted, wherever the source may be, network, keyboard,
| USB stick, camera, whatever. If the input is from a network
| source such as _el rando website_ , then an AAA-layer
| service can block, flag, log, and handle an exception,
| rather than forcing every tool and every application to
| track the provenance of every byte of input. Don't you
| think?
| IncRnd wrote:
| > If a tool's threat model never considered having
| network input in the first place, that tool would seem
| deficient in most every real-world situation.
|
| The hyperbole isn't needed. Risk can be avoided,
| mitigated, transferred, or accepted. This extension,
| which otherwise looks fantastic by the way, moves the
| risks between those categories for various local tools,
| the data in the DOM, and even for remote accounts of the
| other current websites. That is what is happening here.
|
| > I do not per se see a problem with "network input" but
| I think you're referring to input from untrusted sources,
| i.e. input that is not controlled or approved by the user
| of the tools.
|
| That is the implication of saying network input, since
| that input is uncontrolled and from a third party.
| NoZebra120vClip wrote:
| > That is the implication of saying network input, since
| that input is uncontrolled and from a third party.
|
| Hey, it is easier to authenticate and authorize network
| input than keyboard input, considering what sort of USB
| devices are floating around.
| gorgoiler wrote:
| Except now the attacker has your cookie jar with the bank.com
| cookie in it.
|
| (Fantastic extension, btw.)
| vorpalhex wrote:
| They already did. Where do you think Firefox stores your
| cookies?
| quickthrower2 wrote:
| I guess we are now getting into which folders and what
| permissions
| vorpalhex wrote:
| If your local machine is compromised such that your mountpoints
| are free game to some tool running.. what difference do you
| think this will make? Your cookie jar IS STILL exposed without
| this.
| IncRnd wrote:
| You misunderstand the security implications, so making
| categorical statements like that isn't useful. While random
| running processes may be on a developer's machine, that's not
| at issue here.
| hannasm wrote:
| I think the security implications of this would qualify as a
| fantastic new problem to solve if it's really of any meaningful
| consequence.
| nchudleigh wrote:
| Now THAT is unix philosophy at its best.
| prettyStandard wrote:
| Wow, this is brilliant.
|
| So often I want to automate parts of my web experience, and I
| think ugh I need a browser extension, or user script, or
| puppeteer. All of which feel clunky for trying to do something
| simple.
|
| Seems like this will get me 90% of the way for most things, then
| when I need to click a button or automatically respond to an
| automatic email, that's just a few lines of code and a cron job
| away.
| mdni007 wrote:
| Genius
| hailruda wrote:
| Exactly, why isn't more software made to be accessible from a
| filesystem?
| vitiral wrote:
| One of the coolest use-cases for this for me is the ability to
| "host" these folders on a server and be able to access it from
| embedded contexts. I'm hoping to write a full computer stack that
| can run on microcontrollers (GitHub.com/Civboot/fngi), including
| a gopher-like browser for lightweight protocols. It could never
| interface with the real WWW... unless it had a server hosting the
| browser like this!
| aeonik wrote:
| Two things,
|
| 1. I couldn't get this working on my M1 Mac due to MacFUSE
| issues.
|
| 2. I wish there was a version for Firefox.
|
| I think this is such a cool project, and I want this to work
| really badly. I have many workflows where I'd like to log data
| for certain sites I visit it plain text for further analysis. And
| long term storage.
| mdaniel wrote:
| There was recently someone who made a "fuse-ish" thing using
| user-mode NFS, which more closely matches my mental model of
| living in the new multi-arch, locked-down macOS world
| (https://news.ycombinator.com/item?id=32726166 not open source
| but the discussion shows the general idea)
|
| I regrettably don't know the guts of NFS enough to know how
| much of FUSE can be ported, but my guess would be "perfect is
| the enemy of good" for folks who otherwise can't even run this
| right now
| HALtheWise wrote:
| The open-source implemention I'm aware of is in Buildbarn
|
| Design doc: https://github.com/buildbarn/bb-
| adrs/blob/master/0009-nfsv4.... Code:
| https://github.com/buildbarn/go-xdr
| HALtheWise wrote:
| The article claims this does support Firefox? (albeit,
| requiring re-install each time you open the browser due to an
| upstream bug)
| superkuh wrote:
| It's not a bug. It's an intentional choice by Mozilla that
| users should not be able to install software without the
| approval of Mozilla. They say it is for security. But the
| signing portal is automated so this is only realistically for
| revokation after widespread damage has been done.
|
| The suggestion in the thread is to use the developer edition
| which is, in lineage, essentially aurora/alpha version (in
| the past naming scheme) and contains bugs and security holes.
|
| With modern Firefox if you want software freedoms you have to
| give up safety... or use the unbranded version which has no
| auto update and manually re-install the browser for every
| update.
| layer8 wrote:
| While a bit annoying, the signing process for a self-
| distributed add-on [0] seems straightforward?
|
| [0] https://extensionworkshop.com/documentation/publish/sub
| mitti...
| behnamoh wrote:
| His link [0] makes me trust him more about what he's doing as
| he's clearly using Vim/Neovim :)
|
| 0: https://twitter.com/rsnous/status/1338932056743546880
| luispauloml wrote:
| >he's clearly using Vim/Neovim
|
| The author directly mentions Emacs twice and one of their liked
| tweets says "in practice most of my logical 'windows' are
| actually browser tabs or Emacs buffers":
| https://twitter.com/rsnous/status/1176587656915849218
| behnamoh wrote:
| There's Evil mode on Emacs which is basically Vim.
| yonz wrote:
| Genius! Gott love it when simple ideas create game changing
| improvement.
|
| I have 168 tabs open and regardless of how hard i organize them,
| it's still a mess. I will give this a try today.
| throwaway290 wrote:
| It says some features are Chrome-only. How much of what us shown
| will not work in Safari? If anyone already tried. Otherwise I
| might...
| zemetras wrote:
| Working on a nodejs/electron app called "canvas" (code hosted on
| a personal gitlab inst for now), core functionality being
| organizing all your data into "contexts". A context is identified
| with a context url - fe customerA/projectP/reports, each url part
| representing a layer on top of your data, using roaring bitmaps
| and lmdb underneath. Switching your context to customerB/projectR
| automatically changes your tabs(socketio based poc ff extension),
| it also exports all your data(data/abstr/notes, data/abstr/tabs,
| data/abstr/files etx) as part of a webdav exported "virt" fs
| tree. While the concept is not new, paired with the cli iface the
| ux is a huge boost to productivity, witch chokidar based
| monitoring of downloads and desktop and minio/s3, my drsktop is
| finally used as a virtual work desk and not as a showcase for the
| 2nd law of thermodynamics. Stay tuned
| rsync wrote:
| I wish I could just visit about:tabs and see a plain text
| listing, one URL per line, of all the tabs I have open.
|
| No esoteric attack vectors, no major new features or
| integrations, just a quick and easy way for any user _regardless
| of technical ability_ to dump their tabs before they update
| firefox or reboot their system ...
|
| ... since _everyone_ has been burned by a FF restart that, for
| unknown reasons, fails to restore tabs _even when configured
| properly to do so_.
|
| As it stands, you need to dig several directories deep into
| /Library (or whatever, depending on your OS) and then use JSON
| tools to export ... I've already lost most people.
|
| FWIW, rsync.net has an outstanding $1500 bounty for this
| feature[1]. Consider this an inflation adjusted bump to $2500.
|
| [1] https://news.ycombinator.com/item?id=24524923
| paulirish wrote:
| about:discards is almost this. (Chromium desktop)
| weaksauce wrote:
| I have a extension that does that almost pretty identically to
| what you are looking for... it does list out every page you
| have but doesn't list the url. there is an unreleased version
| that I use that has a tab dumping to json that I use for just
| that session restore reason.
|
| Maybe I'll finish the updated version and release it soon.
|
| feel free to check it out:
| https://github.com/fiveNinePlusR/tabist
|
| https://addons.mozilla.org/en-US/firefox/addon/tabist/
|
| https://chrome.google.com/webstore/detail/tabist/hdjegjggiog...
| ww520 wrote:
| I built [1] for the reason to save and restore the browsing
| tabs. It has export and import sessions feature as a by
| product. [2] also has a test list mode on tabs.
|
| [1] https://addons.mozilla.org/en-US/firefox/addon/session-
| boss/
|
| [2] https://addons.mozilla.org/en-US/firefox/addon/tip-tab/
| rsync wrote:
| Thanks - I will look at these.
| hnaccy wrote:
| https://addons.mozilla.org/en-US/firefox/addon/tabhunter/
|
| Makes it simple to select all tabs and copy paste as url or url
| + title
|
| It's also snappy for filtering and jumping to tabs especially
| when using the hotkey, I've used it for years with regularly
| over 5k tabs.
| hitekker wrote:
| Great takedown in the linked thread. jhardy54 snarks that the
| author just needs to open a patch. When rsync presses, it turns
| out jhardy54's own patches have been completely neglected by
| the maintainers and he hasn't been able to merge them in.
| sert121 wrote:
| Onetab does it, and lets you export your links as a text file
| as well.
| Sebb767 wrote:
| > ... since everyone has been burned by a FF restart that, for
| unknown reasons, fails to restore tabs even when configured
| properly to do so.
|
| I've actually had this several times with Chrome, but never
| with Firefox. The major point of me moving to FF actually was
| when Chrome lost 50 Tabs once again.
| frontierkodiak wrote:
| Firefox reliably remembers my tabs, but never my pinned
| tabs-- which, of course, are the ones that I actually want to
| be preserved across restarts. In my dream world, pinned tabs
| persist forever, and are even accessible across devices,
| perhaps sorted into separate containers a la Sideberry.
| concordDance wrote:
| I just use Tree Tabs ability to export the entire sessions
| tabs.
|
| My work laptop has around 30MB of old Tree Tabs exports I
| haven't gotten around to deleting.
|
| https://addons.mozilla.org/en-US/firefox/addon/tree-tabs/
| sicariusnoctis wrote:
| With Sidebery (modern alternative to TST), the tab tree is
| automatically backed up every $time_interval.
|
| https://addons.mozilla.org/en-CA/firefox/addon/sidebery/
| mgdlbp wrote:
| Firefox's session is stored entirely within
| sessionstore.jsonlz4 in the profile folder (and backups, or
| while running, in sessionstore-backups) -- locate using
| about:profiles. It's a nonstandard lz4 container but you can
| find implementations, e.g. lz4json/lz4jsoncat in some package
| managers.
|
| Once decompressed you have json lists of windows of tabs,
| including recently closed; for every tab, urls and titles of
| each entry in per-tab history, base64ed favicon, last selected
| time, and various less useful data (some still incomprehensible
| -- binary serialized or cache keys?). Cookies and data from
| extensions like treestyletabs are in there too.
|
| OTOH... is there a currently working deserializer for Chrome's
| session files?
| madphilosopher wrote:
| Indeed! Dumping this recovery.jsonlz4 file on the command
| line is how I inspect and archive all my tabs and windows.
| You can do this on remote systems, too, and Firefox does not
| need to be running.
|
| The scripts I use to do this can be found here:
|
| https://github.com/madphilosopher/dump_firefox_session
| zemetras2 wrote:
| Working on a nodejs/electron app called "canvas" (code hosted on
| a personal gitlab instance for now), core functionality being
| organizing all your data into "contexts". A context is identified
| by a context url, fe customerA/projectP/reports, each url part
| representing a layer on top of your data, using roaring bitmaps
| and lmdb underneath. Switching your context to customerB/projectR
| automatically changes your tabs(socketio based poc ff extension),
| it also exports all your data(internally data/abstr/notes,
| data/abstr/tabs, data/abstr/files etc) as part of a webdav
| exported "virtual" fs tree. While the concept is not new, paired
| with the cli iface the ux is a huge boost to productivity, esp
| with chokidar based monitoring of the os downloads and desktop
| folders and minio/s3; my desktop is finally used as a virtual
| work desk and not as a showcase for the 2nd law of
| thermodynamics. Stay tuned
| superkuh wrote:
| Too bad firefox doesn't allow it's users to install extensions
| without their approval and this extension can only be installed
| temporarily.
|
| >in Firefox You'll need to install as a "temporary extension", so
| it'll only last in your current FF session. (If you want to
| install permanently, see this issue:
| https://github.com/osnr/TabFS/issues/4#issuecomment-75344738...)
| solarkraft wrote:
| This was the straw finally pushing me to very seriously
| consider migrating to Chromium. They seem to absolutely despise
| power users, they pull the same type of shit with Fennec/Fenix.
|
| They hate their users so much they're perfectly willing to
| compromise their security. "This extension is not actively
| monitored by Mozilla". But you can't do the responsible thing
| and build it from source yourself.
|
| Even installing the "Developer Edition" didn't enable to me to
| install self-built extensions (yes, _with_ that secret flag).
| And it doesn 't even tell you that it doesn't accept unsigned
| extensions, they claim that the extension is "broken".
|
| The fuck?! This is Apple-level user hostility. Meanwhile
| Mozilla execs are getting Apple exec-style compensation while
| driving it further into the ground.
| bradrn wrote:
| > Even installing the "Developer Edition" didn't enable to me
| to install self-built extensions
|
| For a different perspective, I've successfully done this on
| both Windows and Linux. In both cases it was pretty
| straightforward. (My extension was admittedly very simple,
| though... maybe it's different with more complex ones.)
| evilpie wrote:
| > And it doesn't even tell you that it doesn't accept
| unsigned extensions, they claim that the extension is
| "broken".
|
| It's likely you forgot to include the
| browser_specific_settings with a some arbitrary id in the
| manifest.json.
|
| Permanently installing unsigned extensions definitely works
| in the Developer Edition after setting the pref in
| about:config.
| bilkow wrote:
| Have you tried rebuilding the XPI in a different way or
| trying a different XPI? I would guess that your addon is
| broken, as it works for me: https://postimg.cc/9rkbMd7v
|
| I understand the frustration and would also like improved
| control, but I understand firefox preventing this in the
| "normal" edition as it's very common for trojans to install
| unwanted extensions manually by fiddling with the profile
| files, I've had to remove them manually from family computers
| in the past.
| doublerabbit wrote:
| lol, I feel that Firefox is chrome but using Firefox engine.
| What I don't understand is that can see evidence of this if
| you cause an error and view source. It has chrome://
| literally hard-coded and commented out.
|
| Host a web server, kill the web-server, try to visit the URL,
| open inspector and look chrome.
|
| Examples:
|
| "<script xmlns="http://www.w3.org/1999/xhtml" src="chrome://g
| lobal/content/neterror/aboutNetErrorCodes.js"></script>"
|
| Visit chrome://global/content/aboutNetError.mjs in your
| firefox browser. Why is Firefox accepting chrome:// URI's?
|
| You can even browse: chrome://global/skin/icons/
|
| Visit: jar:file:///usr/local/lib/firefox/omni.ja!/chrome/
|
| (i'm on freebsd, so if linux:
| /usr/lib/firefox/omni.ja!/chrome or something) too drunk to
| care. The internet is fucked.
|
| Firefox version: 109.0 (64-bit)
|
| root@cuddles:/usr/crystal/doublerabbit/ # pkg install
| chromium Updating FreeBSD repository catalogue... FreeBSD
| repository is up to date. All repositories are up to date.
| The following 3 package(s) will be affected (of 0 checked):
|
| New packages to be INSTALLED: chromium: 109.0.5414.119 noto-
| basic: 2.0_1 sndio: 1.9.0
|
| Call me skeptical, what a coincidence. Convince me.
| eipi10_hn wrote:
| Oh gosh, "chrome" here is not the browser...
|
| https://developer.mozilla.org/en-US/docs/Glossary/Chrome
|
| https://www.nngroup.com/articles/browser-and-gui-chrome/
|
| > 'Chrome' is the user interface overhead that surrounds
| user data and web page content.
|
| Browser/GUI's "chrome" terminology existed before google
| "chrome" browser. That's why you use "userChrome.css" to
| modify the visual look by yourself.
| doublerabbit wrote:
| Well you've convinced me, call me skeptical. Thanks!
| solarkraft wrote:
| Chrome is named after this :-)
| phatfish wrote:
| I always assumed Google Chrome was named Chrome BECAUSE of
| "Chrome" being the internal name for the Firefox UI
| styling. I guess I'm old :)
| oh_sigh wrote:
| It is hostile to power users, but gracious to unsuspecting
| users who might have a sneaky person install extensions on
| their browser to steal their data/spy on them. In any case, a
| real power user could always use a developer build and set
| that flag.
| yjftsjthsd-h wrote:
| > In any case, a real power user could always use a
| developer build and set that flag.
|
| ...this one?
|
| >>Even installing the "Developer Edition" didn't enable to
| me to install self-built extensions (yes, with that secret
| flag).
| bilkow wrote:
| I just tested it and it does work for me:
| https://postimg.cc/9rkbMd7v
|
| I would guess that they are trying to install is actually
| broken.
| oh_sigh wrote:
| Yes, my not so nice implication was that they aren't a
| real power user and it was PEBKAC. I usually try to be
| nicer but it's hard when someone is saying "X sucks
| because..."
| HellsMaddy wrote:
| It's really not that bad. You can sign up for a free Mozilla
| developer account and upload the bundle you'd like to sign,
| and install the signed extension a few minutes later on any
| edition of Firefox.
| solarkraft wrote:
| How about I have to approve of any code you want to run
| before you can run it? That's dystopian.
| dTal wrote:
| Not that bad?? I'm sorry, but that's horrifying. Imagine if
| you couldn't run any code on Linux without uploading it to
| Linus's servers first.
| ikiris wrote:
| if this is horrifying, perhaps you should go touch some
| grass man. A decent security take is not a horror show
| when you can get even hobby stuff of your own signed
| fairly trivially.
| vorpalhex wrote:
| Sorry, what security is this offering? At the cost of my
| PII?
|
| And Mozilla still doesn't scan or do any due diligence on
| whatever it is you are installing.
| lutoma wrote:
| Okay, but Linux is an operating system (kernel), Firefox
| is a web browser. That's two completely different things
| with different expectations and threat models.
| mardifoufs wrote:
| Chrome lets you do it, and with the market share that it
| has, it means that it's the de facto expectation that you
| can actually install extensions without an account. And
| it's not like chrome is _less_ secure than firefox, the
| opposite is true actually.
| trwired wrote:
| > This was the straw finally pushing me to very seriously
| consider migrating to Chromium.
|
| What is the situation surrounding Manifest V3 in Chromium?
| Won't that throw a wrench into power user's workflows with
| its own arbitrary limitations?
| solarkraft wrote:
| Not as much as it initially seemed. All extensions I use
| work fine, including uBlock Lite. The arbitrary limits
| would trivially be increasable in a fork.
|
| But of course I'm worried about Chromium going the way of
| the third E, which makes it quite possible I'll continue
| the toxic relationship with Mozilla for even longer.
| alamortsubite wrote:
| It's not the prettiest solution, but you can work around this
| problem with web-ext: https://www.npmjs.com/package/web-ext
| beckhamc wrote:
| Nice work! Is it possible to somehow switch to a tab somehow
| using this? (Use case: switching browser tabs within Emacs).
| Thanks
| arambhashura wrote:
| You mean like what this does?
|
| https://github.com/atomontage/osa-chrome
| https://melpa.org/#/osa-chrome
| evo_9 wrote:
| Took me forever to find a good option on FireFox, Simple Tab
| Groups is pretty awesome: https://addons.mozilla.org/en-
| US/firefox/addon/simple-tab-gr...
| loa_in_ wrote:
| BroTab exposes a python library for doing same in Firefox
| layer8 wrote:
| I'm already thinking about how to name web pages to trigger shell
| command injection attacks. ;)
| sabujp wrote:
| Be my guest, I'll run this in a vm. But what's even scarier is
| cross tab exploits. Want to steal data from another tab of a
| tabfs user?
| linza wrote:
| That looks incredibly useful. Now i imagine i had a small
| terminal window within my browser that i could focus by pressing
| ESC ...
| EFruit wrote:
| I use a deeply modified fork of this every day. My changes have
| been:
|
| 1. Rewrite the backend in Go (I'm nkt qualified to audit the C
| version, and having Web Stuff(tm) interact directly with an
| unaudited C filesystem daemon makes my skin crawl)
|
| 2. Modularize it quite a bit to make it easier to add endpoints
| like...
|
| 3. Rudimentary Tree-Style Tabs support
|
| 4. Desperately try to improve the performance enough to navigate
| a sizable session (I have not yet succeeded)
|
| Even after all this, I've come to the conclusion that the
| relationship is backwards: the filesystem representation needs to
| drive the browser, not the other way around.
|
| It's my considered opinion that some hero needs to step up and
| build a browser that exists to render one tab and nothing else,
| shelling out for everything more complex than scrolling. Then the
| power users cwn supply their own tab/bookmark/window/filesystem
| schemes using whatever glue they prefer, be it python, node,
| shell scripts, Windows Explorer...
| soulofmischief wrote:
| What I want is foobar2000 + meets browser (decoupled
| renderer/chrome/css engine/javascript runtime/plugin system
| etc)
| jolmg wrote:
| > It's my considered opinion that some hero needs to step up
| and build a browser that exists to render one tab and nothing
| else, shelling out for everything more complex than scrolling.
| Then the power users cwn supply their own
| tab/bookmark/window/filesystem schemes using whatever glue they
| prefer, be it python, node, shell scripts, Windows Explorer...
|
| That's basically uzbl. The core version has no tabs, no
| bookmarks, no history, and is extensible in whatever language.
| Seems it's been abandoned, though.
|
| https://www.uzbl.org/
| alanbernstein wrote:
| I just moved my bookmark management out of my browser because I
| wanted to use unix-y tools to deal with them. CLI instead of a
| GUI afterthought. I think you're absolutely right. I'd love to
| access browser history at CLI. And management of open tabs.
|
| Care to share your fork? Go works better for me.
| EFruit wrote:
| FUSE proxy: https://gitgud.io/ee/gtabfs WebExtension:
| https://gitgud.io/ee/tabfs
|
| Caveat _extremely_ emptor: This code works on my machine, and
| I have no recollection of how it came to be that way. There
| are undoubtedly bugs, both obvious and subtle, in both
| halves. The Go side is a pile of garbage (in no small part
| because of the countless interfaces it has to implement).
|
| It is EXTREMELY unlikely that either the server or extension
| is compatible with its original counterpart. The filesystem
| layout itself has been reorganized more along the lines of
| /sys conventions.
| UltimateEdge wrote:
| Could you expand a bit more about your bookmark management
| strategy?
| rakoo wrote:
| As alluded in the post, we should all have switched to Plan 9
| decades ago. Everything behaves like a file, which means you
| get a mountpoint for web stuff
| (https://man.9front.org/4/webfs), and use another application
| that reads and writes files on top of that
| (https://man.9front.org/1/mothra).
|
| I fear the current web is too complicated for that. All hope is
| lost, the web cannot be salvaged.
| love2read wrote:
| Is your fork opensource? If so, would you mind giving a link?
| EFruit wrote:
| Yes, see the sibling comment, and for the love of all that is
| holy, heed the warnings. Use it at your own peril, and even
| then with caution and distrust.
| [deleted]
| madeofpalk wrote:
| * > It's my considered opinion that some hero needs to step up
| and build a browser that exists to render one tab and nothing
| else, shelling out for everything more complex than scrolling.*
|
| Is that not what your OS's 'native' web view API is?
| ramijames wrote:
| At that point it's just an OS.
| MathMonkeyMan wrote:
| That's a good point. Browsers are desktop environments with a
| built-in application runtime. Maybe it's the "Inner-platform
| effect."
|
| It's an interesting idea to pull bits of the browser back
| into the system, or alternatively to write a desktop
| environment that's also a web browser (ChromeOS?).
|
| A former coworker used Plan9 at a previous job, and he said
| it was cool how you could draw a rectangle on part of a
| terminal, and pipe that text (as it changes) to another
| process. Maybe rethinking GUI (and web in particular) from a
| unixy/plan9y perspective is a worthwhile exercise.
|
| I grew up on Windows, and then there was the browser, and now
| everything is just the browser.
| [deleted]
| sampa wrote:
| for Firefox I use this
|
| lz4jsoncat ~/.mozilla/firefox/YOUR_PROFILE.default/sessionstore-
| backups/recovery.jsonlz4 | jq '.windows[].tabs[] | .index as $a |
| .entries[$a-1] | .title,.url'
| djha-skin wrote:
| I was just thinking there is nothing new under the sun, but then
| I find imaginative programs like this.
| arjvik wrote:
| What would it entail to add support for this to another browser?
|
| Is there an API contract defined and documented anywhere?
|
| I'm specifically hoping to use this with Qutebrowser
| wraptile wrote:
| Qutebrowser already kinda does this. You can use environment
| variables to access most browser details in python user
| scripts. For example, QUTE_HTML points to file containing
| current tab's HTML.
|
| It has been one of my favorite things about this browser as you
| can quickly write up easily maintainable user scripts in Python
| compared to whatever unmaintainable magic greasemonkey scripts
| end up being.
|
| See more: https://qutebrowser.org/doc/userscripts.html
___________________________________________________________________
(page generated 2023-02-19 23:02 UTC)