通过 Org 模式管理 Chromium 和 Firefox 会话
创始人
2024-03-02 04:34:28
0

我是会话管理器的铁粉,它是 Chrome 和 Chromium 的小插件,可以保存所有打开的选项卡,为会话命名,并在需要时恢复会话。

它非常有用,特别是如果你像我一样,白天的时候需要在多个“思维活动”之间切换——研究、开发或者阅读新闻。或者你只是单纯地希望记住几天前的工作流(和选项卡)。

在我决定放弃 chromium 上除了 uBlock Origin 之外的所有扩展后,就必须寻找一些替代品了。我的主要目标是使之与浏览器无关,同时会话链接必须保存在文本文件中,这样我就可以享受所有纯文本的好处了。还有什么比 org 模式更好呢 ;)

很久以前我就发现了这个小诀窍:通过命令行获取当前在谷歌 Chrome 中打开的标签 再加上些 elisp 代码:

(require 'cl-lib)

(defun save-chromium-session ()
  "Reads chromium current session and generate org-mode heading with items."
  (interactive)
  (save-excursion
    (let* ((cmd "strings ~/'.config/chromium/Default/Current Session' | 'grep' -E '^https?://' | sort | uniq")
           (ret (shell-command-to-string cmd)))
      (insert
       (concat
        "* "
        (format-time-string "[%Y-%m-%d %H:%M:%S]")
        "\n"
        (mapconcat 'identity
                   (cl-reduce (lambda (lst x)
                                (if (and x (not (string= "" x)))
                                    (cons (concat "  - " x) lst)
                                  lst))
                              (split-string ret "\n")
                              :initial-value (list))
                   "\n"))))))

(defun restore-chromium-session ()
  "Restore session, by openning each link in list with (browse-url).
Make sure to put cursor on date heading that contains list of urls."
  (interactive)
  (save-excursion
    (beginning-of-line)
    (when (looking-at "^\\*")
      (forward-line 1)
      (while (looking-at "^[ ]+-[ ]+\\(http.?+\\)$")
        (let* ((ln (thing-at-point 'line t))
               (ln (replace-regexp-in-string "^[ ]+-[ ]+" "" ln))
               (ln (replace-regexp-in-string "\n" "" ln)))
          (browse-url ln))
        (forward-line 1)))))

那么,它的工作原理是什么呢?

运行上述代码,打开一个新 org 模式文件并调用 M-x save-chromium-session。它会创建类似这样的东西:

* [2019-12-04 12:14:02]
  - https://www.reddit.com/r/emacs/comments/...
  - https://www.reddit.com/r/Clojure
  - https://news.ycombinator.com

也就是任何在 chromium 实例中运行着的 URL。要还原的话,则将光标置于所需日期上然后运行 M-x restore-chromium-session。所有标签都应该恢复了。

以下是我的使用案例,其中的数据是随机生成的:

#+TITLE: Browser sessions

* [2019-12-01 23:15:00]...
* [2019-12-02 18:10:20]...
* [2019-12-03 19:00:12]
  - https://www.reddit.com/r/emacs/comments/...
  - https://www.reddit.com/r/Clojure
  - https://news.ycombinator.com

* [2019-12-04 12:14:02]
  - https://www.reddit.com/r/emacs/comments/...
  - https://www.reddit.com/r/Clojure
  - https://news.ycombinator.com

请注意,用于读取 Chromium 会话的方法并不完美:strings 将从二进制数据库中读取任何类似 URL 字符串的内容,有时这将产生不完整的 URL。不过,你可以很方便地地编辑它们,从而保持会话文件简洁。

为了真正打开标签,elisp 代码中使用到了 browse-url,它可以通过 browse-url-browser-function 变量进一步定制成运行 Chromium、Firefox 或任何其他浏览器。请务必阅读该变量的相关文档。

别忘了把会话文件放在 git、mercurial 或 svn 中,这样你就再也不会丢失会话历史记录了 :)

那么 Firefox 呢?

如果你正在使用 Firefox(最近的版本),并且想要获取会话 URL,下面是操作方法。

首先,下载并编译 lz4json,这是一个可以解压缩 Mozilla lz4json 格式的小工具,Firefox 以这种格式来存储会话数据。会话数据(在撰写本文时)存储在 $HOME/.mozilla/firefox//sessionstore-backup /recovery.jsonlz4 中。

如果 Firefox 没有运行,则没有 recovery.jsonlz4,这种情况下用 previous.jsonlz4 代替。

要提取网址,尝试在终端运行:

$ lz4jsoncat recovery.jsonlz4 | grep -oP '"(http.+?)"' | sed 's/"//g' | sort | uniq

然后更新 save-chromium-session 为:

(defun save-chromium-session ()
  "Reads chromium current session and converts it to org-mode chunk."
  (interactive)
  (save-excursion
    (let* ((path "~/.mozilla/firefox//sessionstore-backups/recovery.jsonlz4")
           (cmd (concat "lz4jsoncat " path " | grep -oP '\"(http.+?)\"' | sed 's/\"//g' | sort | uniq"))
           (ret (shell-command-to-string cmd)))
...
;; rest of the code is unchanged

更新本函数的文档字符串、函数名以及进一步的重构都留作练习。


via: https://acidwords.com/posts/2019-12-04-handle-chromium-and-firefox-sessions-with-org-mode.html

作者:Sanel Z 选题:lujun9972 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

新型勒索木马ClickLo...
IT之家 7 月 20 日消息,安全公司 Group-IB 发文,...
2026-07-21 00:55:13
微软推出Fara1.5系列...
IT之家 5 月 23 日消息,微软研究院 AI Frontier...
2026-05-23 14:45:03
AI使用控制与AI治理解决...
随着AI成为企业生产力的核心引擎,安全负责人终于获得了绿灯和预算来...
2026-03-06 06:54:01
AI浏览器被指抄袭代码,美...
3月3日,美团旗下AI浏览器Tabbit被指涉嫌抄袭陪读蛙项目代码...
2026-03-04 06:50:14
美团AI浏览器陷“抄袭”争...
(文/刘媛媛 编辑/周远方) 3月2日,美团旗下备受瞩目的AI团...
2026-03-03 20:19:57
美团Tabbit 浏览器回...
3月3日消息,美团旗下光年之外团队近日因新发布的Tabbit AI...
2026-03-03 15:50:15

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...