[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  : 550 points
       Date   : 2023-02-18 15:33 UTC (7 hours 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
        
       | 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.
        
         | 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.
        
           | latexr wrote:
           | If you use Alfred[1], it has a feature[2] to get information
           | from and act on browser tabs.
           | 
           | [1]: https://www.alfredapp.com
           | 
           | [2]: https://www.alfredapp.com/help/workflows/automations/aut
           | omat...
        
         | 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
        
             | 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!
        
           | 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.
        
           | 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
        
         | 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?
        
           | [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.
        
           | 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...
        
       | _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"
        
       | 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.
        
         | 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.
        
           | 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.
        
         | 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.
        
       | 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.
        
       | 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?
        
           | gorgoiler wrote:
           | Except now the attacker has your cookie jar with the bank.com
           | cookie in it.
           | 
           | (Fantastic extension, btw.)
        
       | 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.
        
       | 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...
        
       | 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
        
         | 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.
        
         | 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.
        
         | 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
        
       | 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.
        
           | 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.
        
           | 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.
        
             | 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.
        
               | 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.
        
           | 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
        
       | 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. ;)
        
       | 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 ...
        
       | 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.
        
       ___________________________________________________________________
       (page generated 2023-02-18 23:00 UTC)