我的 Firefox 的收藏夹里面的东西越来越多了,逐渐面临一个大问题就是 Firefox 自带的标签功能太弱:
- 只能使用树状结构,但是大部分网页属于不止一个分类,应该同时存在于多个节点下才方便查找。与此同时,用标签对同一个网页多次标记,然后用过滤来查找是一种更惬意且高效的方法 (=> Zotero & DEVNOthink)。
- 不能记录时间,在收藏夹里面吃灰的书签,基本等于没必要看,而 Firefox 要清理起来就麻烦了,不能做 “删除所有年龄超过半年的标签” 的这种操作。
- 不能标记重要性,有一些页面每次看都有新的体验,还有一些页面不看也罢,还有一些是学术性不想看也要看的
- 不能对标签” 存档 “,没有办法看到已经删除的标签
- 不能对标签做短的笔记
- 需要类似 Pocket 的 “稍后阅读” 的功能,然而分离开 “稍后阅读” 与书签又没有意义
- 不能模糊搜索
对现有的标签管理工具考察了一圈,发现对我的需求来说都很拉垮。
Firefox 有一些挺有意思的标签管理器,但是都没有突破 Firefox 本身标签的限制。相对好一点的是 Bookmarks Manager and Viewer :: add0n.com
而商业性的软件比如 Pocket 和 Instapaper 给大众设计的,总体上都是功能简略,几乎只能线性地一页一页地看,而且标签功能非常的简陋。
开源社区有不少优秀的解决方案,但和我的需求还是不符合,比如 buku 只能单纯地收集网页链接,搜索某个网页看演示确实华丽,但缺一些功能。ArchiveBox 还有 Shiori 都是停留在偏保存内容的方面。
更专业一点的 Zotero 还有 Paperpile 对于网页这种不太属于文档的东西,一些操作有一些麻烦。
其它的一些 Rationale 可以看我的 rant => https://moe.cat/web/statuses/107787421644190959
==== 正文 ====
考虑了一下,电脑里装的 taskwarrior 这个 todo 软件恐怕是这个星球上对我来说最高级的书签管理器。唯一缺少的一个部件是从浏览器保存书签的功能,所以我就写了一个。
安装过程就是安装一个 Firefox 插件,然后在本地启动一个监听的小脚本,具体看 README.md
。
https://github.com/shenlebantongying/Taskwarrior-Connector
插件的功能就是点击按钮,然后会自动抓取链接和标题,填一下标签就行了
然后从命令行里面用 task
就可以看到刚刚收集的网页了
打开 url
task 是按照 ID 来获取信息的,用子命令 _get
然后传递给 xdg-open 就行了
task _get {id}.url | xargs xdg-open
Bash 用户可以这样定义一个命令
taskopen () {
task _get ${1}.url | xargs xdg-open
}
增读改删统计
task +tag_name add "标题/描述" url:"https://www.google.com"
task 9 # 获取 task 9 的详细信息
task 9 modify -tag_name “新的标题” # 修改 9 的标题,并删掉标签
task 9 done # 标记为完成,依旧存在于数据库,但不会显示在 report 里面
task 9 delete # 彻底从数据库中删除
task +tag_name count # 查询有 "tag_name" 标签的任务数量
上面的 taskopen()
可以结合一下,比如打开的页面就直接标记为 done
调整显示的项目
那个显示界面叫 report,格式是可以创建和调整的,这里创建一个看 bookmark 专用的 report
task config report.Web.description “Bookmarks” # 描述 -> bookmark
task config report.Web.columns “id,tags,description,url,urgency” # -> 显示的项目
task config report.Web.filter “status:pending” # 过滤并保留只有处于 pending 状态的东西
task config report.Web.sort “urgency-” # 按照 urgency 来统计
然后使用`task Web 就可以直接看到链接和标题,如果使用像 Konsole,Kitty,WezTerm 之类的高级终端可以直接点开链接
按标签过滤
只显示有 scheme
标签,并且用 Web 的 report 来显示
做笔记
task {id} annoate "something"
可以 task {id} 里面看到笔记的时间和内容。并且 annoate 一下,会自动把 urgency 提高一些
用 task +ANNOTATED
可以过滤出所有有笔记的条目
和其它 Unix 工具的组合
fzf 模糊搜索!
task Web | fzf
Jq 批处理
例子使用 task 的导出 JSON 配合 jq 打开所有带 scheme
标签的所有页面
task +scheme export | jq ".[] .url" -r | grep -v null | xargs -n 1 xdg-open
导出所有带 scheme 的标签的条目 -> 只保留每个条目的 url -> 反向 grep 不是 null 的 -> 用 xdg-open 打开
多设备同步
用的 Syncthing 同步一下 ~/.task/
就可以,反正那几个设备总会碰面,单人使用又不会有冲突,分布式同步,姿势比 Firefox 的账号同步不知道高到哪里去了
偶尔用 Git 存一个备份,taskwarrior 的数据都是纯文本的 json。
~TO BE CONTINUED
Task 具体怎么用还需要看 https://taskwarrior.org/docs/
欢迎尝试使用,提 bug,交流经验或者咨询某些功能。。。