我是SessionManager的忠实粉丝,它是Chrome和Chromium的一个小插件,可以保存所有打开的选项卡,为会话命名,并在需要时恢复会话。它非常有用,尤其是如果您像我一样需要在白天的多个“思维活动”之间切换——研究、开发或阅读新闻。或者您可能只是想记住几天前的工作流程(和选项卡)。在我决定放弃除uBlockOrigin之外的所有chromium扩展后,我不得不寻找一些替代方案。我的主要目标是让它独立于浏览器,同时会话链接必须保存在文本文件中,这样我才能享受纯文本的所有好处。还有什么比org模式更好;)我很久以前就发现了这个小技巧:通过命令行加上一些elisp代码获取GoogleChrome中当前打开的选项卡:(require'cl-lib)(defunsave-chromium-session()“读取chromium当前会话并生成带项目的组织模式标题。”(交互式)(保存游览(让*((cmd“strings~/'.config/chromium/Default/CurrentSession'|'grep'-E'^https?://'|sort|uniq")(ret(shell-command-to-stringcmd)))(insert(concat"*"(format-time-string"[%Y-%m-%d%H:%M:%S]")"\n"(mapconcat'identity(cl-reduce(lambda(lstx)(if(andx(not(string=""x)))(cons(concat"-"x)lst)lst))(split-stringret"\n"):initial-value(list))"\n")))))(defunrestore-chromium-session()“通过使用(browse-url)打开列表中的每个链接来恢复会话。确保将光标放在包含url列表的日期标题上。”(交互式)(保存偏移(行首)(当(查看“^\\*”)(前行1)(同时(查看“^[]+-[]+\\(http.?+\\)$")(let*((ln(thing-at-point'linet))(ln(replace-regexp-in-string"^[]+-[]+"""ln))(ln(replace-regexp-in-string"\n"""ln)))(browse-urlln))(forward-line1)))))那么,它是如何工作的呢?运行上面的代码,打开一个新的org-mode文件并调用M-xsave-chromium-session它将创建如下内容:*[2019-12-0412:14:02]-https://www.reddit.com/r/emacs/comments/...-https://www.reddit.com/r/Clojure-https://news.ycombinator.com或在chromium实例中运行的任何URL。要恢复,请将光标置于所需日期并运行M-xrestore-chromium-session。应恢复所有选项卡。这是我随机生成数据的用例:#+TITLE:Browsersessions*[2019-12-0123:15:00]...*[2019-12-0218:10:20]...*[2019-12-0319:00:12]-https://www.reddit.com/r/emacs/comments/...-https://www.reddit.com/r/Clojure-https://news.ycombinator.com*[2019-12-0412:14:02]-https://www.reddit.com/r/emacs/comments/...-https://www.reddit.com/r/Clojure-https://news.ycombinator.com请注意,用于读取Chromium会话的方法并不完美:字符串将从二进制数据库中读取任何类似URL字符串的内容,有时这会产生不完整的URL。但是,您可以轻松地编辑它们以保持会话文件的清洁。要实际打开选项卡,在elisp代码中使用browse-url,可以通过browse-url-browser-function变量进一步自定义以运行Chromium、Firefox或任何其他浏览器。请务必阅读该变量的文档。不要忘记将您的会话文件放在git、mercurial或svn中,这样您就不会再丢失您的会话历史记录:)那么Firefox呢?如果您使用的是Firefox(最新版本)并且想要获取会话URL,请按以下步骤操作。首先,下载并编译lz4json,这是一个解压缩Mozillalz4json格式的小工具,Firefox将会话数据存储在其中。会话数据(在撰写本文时)存储在$HOME/.mozilla/firefox/
