9
24
2017
7

书签搜索:藏在书签里的搜索引擎

最近开始用 Firefox nightly 了。纯 WebExtensions 时代就要来临了,然而 WebExtensions 还不能访问浏览器搜索引擎,所以我没办法选中文本,然后选个正确的搜索引擎了……

我之前使用的是 FireGuestures。选中文本,一个手势弹出我所有的搜索引擎,然后选一个使用。挺好挺方便。然而看现在使用 WebExtensions 的搜索扩展,因为无法访问浏览器搜索引擎,所以都是内置了几个搜索引擎,最多让用户手动添加自己想要使用的。多麻烦啊,而且还要维护额外的数据。

而火狐从一开始就可以「为此搜索引擎添加关键词」(如下图)。虽然也叫「搜索引擎」,但是并不是搜索栏用的那个,而是带关键字的书签。对于 GET 请求的搜索,是在 URL 里把搜索词写作「%s」。对于 POST 请求,「PostData」是用户看不到、扩展也访问不到的,也不能被同步。不过大部分搜索都是 GET 嘛。功能上是弱了一些,比如不能在只有关键词、没有搜索词的时候打开主页。但是书签可以同步呀!

添加用来搜索的书签

于是,利用书签来存储、同步搜索引擎的扩展——书签搜索——诞生了!效果图如下:

使用「书签搜索」上下文菜单

(这个其实是之前《改了一下 GTK 3 的默认主题》的配图 :-)

感兴趣就前往安装书签搜索吧~喜欢请给小星星(AMO 和 GitHub 都可以给星星的哦)~遇到问题请点击右侧「用户支持网站」报告~


这是我的第一个 WebExtensions 扩展,也是第一个正式发布的火狐扩展(其实也支持 Google Chrome 和 Opera;Microsoft Edge 没有尝试,大概也支持吧)。WebExtensions 写起来比 XUL 舒服很多,最主要是文档全面了!不用像写 XUL 那样,拿浏览器工具箱找要修改的 DOM,然后满世界找自己需要的 API。WebExtensions 提供的 API 就那么点,在 MDN 上都有写。另外就是 JavaScript 这些年来进步很大,越来越像 Python 了!可惜 Google Chrome 和 Opera 它们的扩展还不使用 Promise、不能用 await,不然写起来更舒服了。

8
31
2017
17

新的火狐,新的旅程

Firedoge

今年底火狐将不再支持旧的基于 XUL 的扩展了。火狐53已经不支持 GTK 2 了。每人一只与众不同的火狐的时代行将结束,而生活仍要继续。

使用 ESR 版本只是短暂地续命罢了,stylo 也用不了。正巧ヨイツの賢狼ホロ[archlinuxcn] 仓库打包了可以与已有版本共存的 firefox-nightly 包,于是新的旅程开始了。

一开始,我尝试喂给它旧的 profile(复制了一份,然后用 firefox-nightly -no-remote -P 启动)。我原本有64个扩展,结果只有六个还兼容……

不如像之前升级火狐4那样,重练好了。重新取一块干净的画布,从头开始。

结果比预期中的好很多。

首先,新火狐很快。我不想办法关动画了。我不担心开新的窗口耗时了。多进程的架构也使得我不那么害怕单个标签页卡死导致什么也做不了了。不过不知道是进步明显,还是我那几十个XUL扩展太拖累了。

然后,同步很好用。虽然同步的内容有限,但是比手工搬移一些数据好多了,也可以把标签页发送到另外的设备阅读。同步的数据包括:书签,历史,表单自动填充,密码,从AMO安装的扩展(不过只会安装最新稳定版),部分首选项(只是一部分,所以还是有不少需要手动调整)。打开的标签页也可以从另外的设备看到。我同时也在 Android 上登录了同步,这样访问历史可以同步,方便在不同的场景下继续阅读。

不过也有点问题。首先是 tampermonkey 支持同步从URL安装的脚本,但是呢,一开始它没同步过来,我手动安装了。然后它又不知道什么时候同步了一份,于是重复了。删掉重复的,又过了一段时间,同步过来的那份也消失了……

还有一些设置上的调整。about:config 打开,搜索 x-western,改成 sans-serif 字体。剩下的中日韩字体设置,这次我直接在 fontconfig 那边配置了,就不用在火狐里点来点去的了。

安装中文语言包之后([archlinuxcn] 源里有),搜索 locale,把 en-US 改成 zh-CN。

搜索 urlbar,关闭自动填充、双击全选、隐藏 http:// 和 ftp://,地址栏建议数量增加为15,关闭搜索引擎的建议。

定制一下工具栏,使用紧凑布局,把不需要的扔掉,用得少的放进收纳盒里去。RSS 按钮丢最右上角好了。侧栏还是显示左边吧,那按钮也放左边来。

导入旧的书签。开了同步的话,注意一定不要从备份中恢复书签!因为恢复的时候会删掉已有的所有书签,包含移动端书签。导出成 HTML 再导入就会合并了。

打开 InoReader 设置界面,把 InoReader 添加为RSS阅读器。

最后就是各种扩展了。许多扩展没有迁移到 Web Extensions,但是一些还是有替代方案的。具体可以看这个表格。然后是配置这些扩展,包含各种扩展数据的导入。

还有很多扩展没有替代品,那也只能放弃了。有些扩展目前是不可能在 Web Extensions 上实现的。至于 UI,算了,接受现实吧。其实 nightly 的 GTK 3 界面做得比最开始的版本已经好了很多。

哦对了,我还换了个轻量级主题。之前使用的 White Lily,已经下架很久了。这次我换了这个,明快简洁,挺好看的。

具体扩展的介绍,我准备单独写一篇,这里就不多说了。

在导入网易云音乐的播放列表(我没有登录)的时候,我还发现一个事儿:火狐52的 devtools 有 bug,并不会显示 localStorage……

总体感受,忍痛割爱之后,又是一片新天地。nightly 确实很快。

Category: 火狐 | Tags: 网页 火狐 浏览器
3
13
2014
1

我的浏览器A到Z

Re: 的确挺好玩的~

那个 frecency 懒得去研究是干什么用的,大概是频度之类的?frecency 即是火狐地址栏著名的 frecency 算法的值。

A
标题:工作台 - Chito
URL:http://lilydjwg.is-programmer.com/admin
访问次数:1828
frecency:3564600
最后访问日期:2014-03-13 21:26:42

B
标题:搜索结果 (页 1) / Arch Linux 中文论坛
URL:https://bbs.archlinuxcn.org/search.php?action=show_new
访问次数:1550
frecency:3100000
最后访问日期:2014-03-13 21:47:33

C
标题:Twitter / Interactions
URL:https://twitter.com/i/connect
访问次数:673
frecency:1063004
最后访问日期:2014-03-13 20:30:28

D
标题:豆瓣
URL:http://www.douban.com/
访问次数:290
frecency:212507
最后访问日期:2014-02-26 21:34:39

E
标题:所有消息 - SegmentFault
URL:http://segmentfault.com/user/events
访问次数:298
frecency:539380
最后访问日期:2014-03-13 21:44:30

F
标题:Index of /ftp/python
URL:http://python.org/ftp/python/
访问次数:7
frecency:2614
最后访问日期:2014-02-19 23:45:13

G
标题:Gmail
URL:https://mail.google.com/mail/
访问次数:396
frecency:449053
最后访问日期:2014-02-28 20:26:26

H
标题:工作台 - Chito
URL:http://lilydjwg.is-programmer.com/admin
访问次数:1828
frecency:3564600
最后访问日期:2014-03-13 21:26:42

I
标题:依云's Blog
URL:http://lilydjwg.is-programmer.com/
访问次数:100
frecency:126258
最后访问日期:2014-03-09 23:28:52

J
标题:jQAPI - Alternative jQuery Documentation Browser
URL:file:///home/lilydjwg/%E6%96%87%E6%A1%A3/%E7%BD%91%E9%A1%B5/Javascript/jqapi_2013-01-21/index.html
访问次数:5
frecency:1446
最后访问日期:2013-12-18 02:25:01

K
标题:The Linux Kernel Archives
URL:http://kernel.org/
访问次数:41
frecency:33347
最后访问日期:2014-03-02 21:47:12

L
标题:Lua 5.2 Reference Manual - contents
URL:file:///usr/share/doc/lua/contents.html#index
访问次数:24
frecency:14682
最后访问日期:2014-03-05 21:47:52

M
标题:Google 地图
URL:https://maps.google.com/
访问次数:83
frecency:52035
最后访问日期:2014-03-12 19:30:50

N
标题:None
URL:http://lilydjwg.is-programmer.com/admin/posts/new
访问次数:24
frecency:33600
最后访问日期:2014-03-13 22:08:35

O
标题:查看版面 - Vim和Emacs • Ubuntu中文论坛
URL:http://forum.ubuntu.org.cn/viewforum.php?f=68
访问次数:236
frecency:166138
最后访问日期:2014-03-02 22:26:47

P
标题:Python Module Index — Python v3.3.0 documentation
URL:file:///home/lilydjwg/%E6%96%87%E6%A1%A3/%E7%BC%96%E7%A8%8B/Python/python/py-modindex.html
访问次数:124
frecency:169744
最后访问日期:2014-03-10 23:10:46

Q
标题:Qt 4.8:
URL:jar:file:///home/.ecryptfs/lilydjwg/public/%E6%96%87%E6%A1%A3/%E7%BC%96%E7%A8%8B/qt4-doc/qt4-doc.zip!/index.html
访问次数:9
frecency:5198
最后访问日期:2014-03-06 22:05:35

R
标题:InoReader • 轻便快捷的 RSS 阅读器
URL:https://www.inoreader.com/
访问次数:155
frecency:177119
最后访问日期:2014-03-12 22:41:51

S
标题:SegmentFault
URL:http://segmentfault.com/
访问次数:1486
frecency:411473
最后访问日期:2014-03-13 20:47:13

T
标题:Google 翻译
URL:http://translate.google.cn/?hl=zh-CN
访问次数:138
frecency:145314
最后访问日期:2014-03-11 23:50:21

U
标题:Pinboard: public bookmarks for vayn
URL:http://pinboard.in/u:vayn
访问次数:13
frecency:5589
最后访问日期:2014-02-16 18:42:04

V
标题:查看版面 - Vim和Emacs • Ubuntu中文论坛
URL:http://forum.ubuntu.org.cn/viewforum.php?f=68
访问次数:236
frecency:166138
最后访问日期:2014-03-02 22:26:47

W
标题:新浪微博-随时随地分享身边的新鲜事儿
URL:http://weibo.com/
访问次数:78
frecency:117933
最后访问日期:2014-02-27 22:51:10

X
标题:None
URL:http://localhost/xcache/
访问次数:6
frecency:6688
最后访问日期:2014-03-02 22:50:15

Y
标题:soimort/you-get
URL:https://github.com/soimort/you-get
访问次数:24
frecency:19374
最后访问日期:2014-03-07 21:13:24

Z
标题:消息 - 知乎
URL:http://www.zhihu.com/notifications
访问次数:528
frecency:823165
最后访问日期:2014-03-09 16:53:10


附:从 URL 生成这些数据的代码。当然,还有后期处理,是用 Vim 简单地做了几次正则替换。

#!/usr/bin/env python3

import os
import sys
import sqlite3
from time import strftime, localtime

places = os.path.expanduser('~/.mozilla/firefox/profile/places.sqlite')

def main():
  db = sqlite3.connect(places)
  sql = '''select title, visit_count, frecency, last_visit_date
           from moz_places where url = ? limit 1'''
  c = db.cursor()

  for url in sys.stdin:
    url = url.strip()
    c.execute(sql, (url,))
    title, visit_count, frecency, last_visit_date = c.fetchall()[0]
    print('''\
标题:%s
URL:%s
访问次数:%d
frecency:%d
最后访问日期:%s
''' % (title, url, visit_count, frecency,
       strftime('%Y-%m-%d %H:%M:%S', localtime(last_visit_date//1000000))))

if __name__ == '__main__':
  main()

又附:上边的代码忘记写是哪个字母了 -_-||| 已经补上,用了个 Vim 宏来完成。话说好久没用 Vim 宏了呢~

Category: 未分类 | Tags: 程序员 火狐 浏览器

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com