2018-01-22
The addons that I would likely use with Firefox Quantum (57+)
A significant number of my current Firefox addons are not WebExtesions based addons and so don't work in Firefox 57 and later. Since I'm going to have to move on from Firefox 56 at some point (although probably not soon, temptation notwithstanding), I've been checking in on the state of WebExtensions addons and putting together a snapshot of the addons that I would likely end up using if and when I move over.
(Since Firefox WebExtensions addons are very new at this point and some addon maintainers are undoubtedly getting to experience the charms of unexpected and not entirely welcome popularity, I would be surprised if this list did not change over the next six months or so.)
The simple case is current addons that already have Quantum-okay versions. In this category are NoScript, uBlock Origin, Open in Browser, and HTTPS Everywhere. I'm not exactly fond of the new NoScript interface (I find it much more confusing than the old Firefox 56 NoScript UI), but I'm sure I could get used to it.
As far as everything else goes:
- Foxy Gestures
appears to be the leading replacement for FireGestures.
The FG Github site has a bunch of
useful information, including about current inherent limitations
in WebExtensions that affect Foxy Gestures. The leading other
option is probably Gesturefy,
which I haven't experimented with (and it seems less actively
developed, which matters when the Firefox WebExtensions API is
actively changing as people tell Mozilla what they left out).
- My preferred way to deal with cookies is the 'don't allow cookies
at all' approach. Unfortunately, it seems
that everyone has moved over to the 'accept cookies then delete
them later' model (as far as I can see from picking through
addons.mozilla.org). The modern
addon for this that I'm trying out is Cookie AutoDelete,
partly because it's developed in the open on Github.
(For all that I grumble about this, accepting cookies and then throwing them away may make various websites somewhat more usable. On the other hand, I already read enough random things on the Internet as it is.)
- The replacement for It's All Text
that I've experimented with so far is Textern; it has
a somewhat convoluted install process but once installed it appears
to be close to the It's All Text experience. Textern uses Native
Messaging
(also,
and),
which is pleasantly straightforward compared to some of the
alternate approaches taken by other addons. The one thing I've had to
remember is that its magic file needs to be installed into every
strongly isolated Firefox instance.
(The It's All Text Github repo mentions some other alternatives. Everything I've looked at so far appears to have a pretty heavyweight process for going from adding the extension to 'edit textarea in vim in an
xterm
', although they're probably better if you want deep integration into a highly advanced editor.) - The alternatives to FlashStopper that
I've been looking at are
Disable Autoplay for YouTube
and Disable HTML5 Autoplay
but neither of them get stellar reviews; there's also this.
Some flaws may be inevitable in the brave new world of WebExtensions,
where apparently at least some addon operations have to wait for the
page's DOM to be fully realized, whereas YouTube's player can start up
before then. Or maybe there aren't any really good Firefox extensions
here yet.
Apparently setting the
media.autoplay.enabled
preference tofalse
may also do this, but there are reports of side effects (and when I look at the Firefox source code, I can't convince myself that this disables all video autoplay in all situations). Or I could see if the WebExtension version of NoScript can handle this on its own now.
(In looking at things to make Youtube less annoying, I just stumbled over YouTube Stop AutoPlay Next. I hate that particular YouTube behavior so I may experiment with this at some point.)
It's quite possible that I've missed some good options for replacement addons here. In fact, given that some areas are a bit disappointing, I actively hope that I have (and that I can find the better choices someday). And of course I have no idea whether these new addons (or in some cases new WebExtensions versions) will handle memory any better than my current set of addons do. Since I have had terrible luck with changing addons in the past, I live in moderate fear that they'll be worse, which is one reason I am so unenthused about changing anything about my relatively precarious addon environment. It may leak a bit now, but it could be much worse (and has been in the past).
Doing something when a Cinnamon-based laptop suspends or hibernates
I've used encrypted SSH keys for some time.
To make this tolerable (and even convenient), I load the keys into
ssh-agent
. On my desktop, I make this more secure by automatically
flushing the keys when I lock the screen (details here). To get a similar effect on my laptop,
I want to flush the keys before it suspends (suspending the laptop
is roughly the equivalent of locking the screen on a desktop; it's
almost always what I do before I walk away from it). I also want
to force-close any lingering SSH connection masters, because it's pretty likely that
my network connection will be different when I un-suspend the laptop
(and in any case, the server end will probably have timed out).
In the beginning I did this by hand with a shell script or two. I usually remembered to run it before I suspended (my custom Cinnamon environment made it not too hard), but not always, and it was kind of a pain in general. Then I found out that it's possible to hook into the modern suspend process to automate this.
The important magic is that there is a standard freedesktop DBus signal that is emitted when
your modern DBus and systemd-enabled system is about to suspend or
hibernate itself. The DBus details are covered in this unix.se
answer
(via),
and I simply copied and modified the Python code from David Newgas'
av program to make something I call
presusp.py
. My version
does not have a start()
action to do things after the laptop
un-suspends, and its shutdown()
action is simply to run my shell
scripts that drop SSH keys and cleans up shared SSH sessions. If I
used my Yubikey more on Cinnamon (which is possible), I'd also run my script to drop the Yubikey
from ssh-agent
(covered here).
Because presusp.py
is directly tied to my login session, I just
start it in a shell script I already have that does various things
to set up my Cinnamon session. This also terminates it when I log
out, although usually if I'm going to log out I just power down the
laptop.
(Logging out and then back in again has been somewhat flaky under Cinnamon for me.)
PS: According to the logind DBus API there's
also a signal emitted before screen locking, although it comes from
your session instead of the overall manager. If I cared enough, I
could presumably hack up my presusp.py
to flush keys even on
screen lock. Right now this is too complicated for me to bother
with, since I rarely lock the screen on my laptop and step away
from it.
Sidebar: Restoring keys to ssh-agent
after an unsuspend
Unlike on my desktop, I don't try to automatically re-add my encrypted
keys to ssh-agent
when the laptop un-suspends. Instead I have my
.ssh/config
set up with 'AddKeysToAgent yes
', so that the first
time I ssh somewhere it automatically adds the keys to the agent
after prompting me to unlock and use them. This is a bit less
convenient than on my desktop but it works well enough under the
circumstances. It helps that I don't try to do fancy things with
remote X clients on the laptop; mostly what I do is SSH logins in
terminals.