Skip to content

Switch to Firefox

Previous

大学刚用电脑时,估计用了半年的IE(和Windows),后来转Ubuntu后,自然就是Firefox。 没多久Google Chrome出来了,印象最深大概就是这个漫画,当时真是耳目一新, 从此简洁的风格风靡各大浏览器,最明显就是地址栏和搜索栏放到一起并占据显要位置。

后来就是尽管Chrome不崩溃了(当然这个锅主要是IE的),然而内存耗用却越来越大,再加上Chrome是基于Chromium开发, 感觉没有Firefox活跃(估计我主要被每天推送mozilla blogmozila hacks的文章而这么觉得)。 去年年末Mozilla开始大肆宣传Quantum新版本,什么Off-Main-Thread Painting,新的CSS引擎Stylo,Webassembly Streaming Compiler,以及用Rust写的WebRender等等, 我就自然重回Firefox的怀抱了。

Migration

Switching from Chrome to Firefox, 最重要是第一步,等把配置导入完了再删Chrome。

数据主要就是history和bookmark了,密码目前我是lastpass管理,Chrome那边还留了冷备。 具体密码管理见Password Manager

迁移具体过程也是无痛,如这儿所说,Switching over to Firefox Quantum was relatively painless,当然我对UI改变基本无感,即使有,也能通过自定义解决。

Add-ons

这个两年前Mozilla就说要迁移到类似Chrome的Web Extension,放弃旧的XUL体系,My new worry about Firefox 56 and the addons that I care about。 那篇博文的作者也列出了自己的插件, My current set of Firefox Quantum (57+) addonsThe addons that I would likely use with Firefox Quantum (57+)

我以前印象比较深刻的就两个,一个是DownThemAll!,另外一个是AutoProxy,总之记得logo上有一个福字。当然现在各种原因都没法用了~

现在主要用的插件有:

  1. Last Password 密码管理
  2. Firefox Multi-Account Containers 基本就是你可以把各个网站分组隔离开来,superuser上有个类似的问题Open Link in different Profile in Firefox
  3. Vimium 以前用Vimperator,后来用Chrome也有,迁移到Firefox时发现也出了不稳定版。
  4. Adblock Plus 广告屏蔽,流行必备装备。

自从发现了Firefox Multi-Account Containers这个好东西后,就想着官方是否还有其他精品, 写了个脚本发现官方出品extension总共也没几个...

firefox-addon.py
import random
import datetime
import requests
import jwt
JWT_ISSUER = 'user:xxxxxxx:xx'
JWT_SECRET = 'xxx'


def main():
    url = 'https://addons.mozilla.org/api/v3/addons/search/'
    while True:
        payload = {
            'iss': JWT_ISSUER,
            'jti': f'{random.random()}',
            'iat': datetime.datetime.utcnow(),
            'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=50)
        }
        encoded = jwt.encode(payload, JWT_SECRET, algorithm='HS256')
        resp = requests.get(url, params={'author': 'mozilla'}, headers={'Authorization': f'JWT {encoded}'})
        for item in resp.json().get('results'):
            name = item.get('name', {}).get('en-US', '')
            type_ = item.get('type')
            # http://addons-server.readthedocs.io/en/latest/topics/api/addons.html#addon-detail-type
            if type_ == 'extension':
                print(name, item.get('url'))
        if not resp.json().get('next'):
            break
        url = resp.json().get('next')


if __name__ == '__main__':
    main()

Chrome Mod

首先这个tab方块没法忍,发现有人跟我一样,photon-australis

打开 about:support 或者 about:profiles 查找 Profile Folder 或者 Root Directory 的位置, 比如我的MacOS上是 $HOME/Library/Application Support/Firefox/Profiles/xxxx.default,把Git仓库代码(我选择的是Default主题)拷贝到 chrome/userChrome.css 里就好。

Reader View非常适合阅读,但是默认宽度太窄,可以按照如下修改。

$ cat chrome/userContent.css
/* selectors are from aboutReader.css */
.container.content-width7 {
  max-width: 48em !important;
}

.container.content-width8 {
  max-width: 48em !important;
}

.container.content-width9 {
  max-width: 48em !important;
}

Sync

Comparison

  1. 查看CPU/内存使用没有Chrome那么方便,只能去 about:memory 里dump,组织还比较不清晰,哪个Tab消耗多少CPU内存没法一眼看出来。
  2. 内置的截图功能非常赞,堪比锤子手机上的滚动截图(话说Android P好像也要集成截图编辑功能了)。
  3. Tab同步功能跟Chrome一样好用,开始以为firefox不至于被🦀,但是没想到祖国的关心无处不在。
  4. 相比Chrome,Firefox移动端没有整页自动翻译了,这个有时看到日文或者俄文的只能单独处理了。
  5. Chrome移动端会提示启用Mobile Friendly View,但是Firefox Android可以启用Reader View,不过效果差不多。 1

更高级的设置,可以参考 Firefox Configuration Guide for Privacy Freaks and Performance Buffs,我就暂时打住,不然这嵌套一层层调用下去会无休止。

Comments

Comments