在 Firefox 上使用 Org 協議捕獲 URL
介紹
作為一名 Emacs 人,我儘可能讓所有的工作流都在 Org 模式 上進行 —— 我比較喜歡文字。
我傾向於將書籤記錄在 Org 模式 代辦列表中,而 Org 協議 則允許外部程式利用 Org 模式 的某些功能。然而,要做到這一點配置起來很麻煩。(搜尋引擎上)有很多教程,Firefox 也有這類 擴充套件,然而我對它們都不太滿意。
因此我決定將我現在的配置記錄在這篇部落格中,方便其他有需要的人使用。
配置 Emacs Org 模式
啟用 Org 協議:
(require 'org-protocol)
新增一個捕獲模板 —— 我的配置是這樣的:
(setq org-capture-templates
(quote (...
("w" "org-protocol" entry (file "~/org/refile.org")
"* TODO Review %a\n%U\n%:initial\n" :immediate-finish)
...)))
設定預設使用的模板:
(setq org-protocol-default-template-key "w")
執行這些新增配置讓它們在當前 Emacs 會話中生效。
快速測試
在下一步開始前,最好測試一下配置:
emacsclient -n "org-protocol:///capture?url=http%3a%2f%2fduckduckgo%2ecom&title=DuckDuckGo"
基於的配置的模板,可能會彈出一個捕獲視窗。請確保正常工作,否則後面的操作沒有任何意義。如果工作不正常,檢查剛才的配置並且確保你執行了這些程式碼塊。
如果你的 Org 模式 版本比較老(老於 7 版本),測試的格式會有點不同:這種 URL 編碼後的格式需要改成用斜槓來分割 url 和標題。在網上搜一下很容易找出這兩者的不同。
Firefox 協議
現在開始設定 Firefox。瀏覽 about:config
。右擊配置項列表,選擇 “New -> Boolean”,然後輸入 network.protocol-handler.expose.org-protocol
作為名字並且將值設定為 true
。
有些教程說這一步是可以省略的 —— 配不配因人而異。
新增 Desktop 檔案
大多數的教程都有這一步:
增加一個檔案 ~/.local/share/applications/org-protocol.desktop
:
[Desktop Entry]
Name=org-protocol
Exec=/path/to/emacsclient -n %u
Type=Application
Terminal=false
Categories=System;
MimeType=x-scheme-handler/org-protocol;
然後執行更新器。對於 i3 視窗管理器我使用下面命令(跟 gnome 一樣):
update-desktop-database ~/.local/share/applications/
KDE 的方法不太一樣……你可以查詢其他相關教程。
在 FireFox 中設定捕獲按鈕
建立一個書籤(我是在工具欄上建立這個書籤的),位址列輸入下面內容:
javascript:location.href="org-protocol:///capture?url="+encodeURIComponent(location.href)+"&title="+encodeURIComponent(document.title||"[untitled page]")
儲存該書籤後,再次編輯該書籤,你應該會看到其中的所有空格都被替換成了 %20
—— 也就是空格的 URL 編碼形式。
現在當你點選該書籤,你就會在某個 Emacs 框架中,可能是一個任意的框架中,開啟一個視窗,顯示你預定的模板。
via: http://www.mediaonfire.com/blog/2017_07_21_org_protocol_firefox.html
作者:Andreas Viklund 選題:lujun9972 譯者:lujun9972 校對:wxy
相關文章
- 為firefox添注rtsp協議(轉)Firefox協議
- iOS 手機網站支付轉Native支付(使用WKUIDelegate協議獲取url)iOS網站UIIDE協議
- Android上kcp協議使用初探Android協議
- 在nginx中使用proxy protocol協議NginxProtocol協議
- 在 .NET 中使用 OPC UA 協議協議
- javascript捕獲組如何使用JavaScript
- HTTP協議中URI和URL區別HTTP協議
- JavaScript事件捕獲冒泡與捕獲JavaScript事件
- 在 docker 容器中捕獲訊號Docker
- PHP使用trycatch,捕獲異常PHP
- 使用mysqlsniffer捕獲SQL語句MySql
- JS 使用try catch捕獲異常JS
- 使用 C# 捕獲程式輸出C#
- jQuery捕獲jQuery
- 捕獲異常URL--scrapy 原始碼分析之retry中介軟體原始碼
- 在 C++ 中捕獲 Python 異常C++Python
- 使用jquery獲取url及url引數的方法jQuery
- JavaScript 事件捕獲JavaScript事件
- 錯誤捕獲
- 在ARM模式下捕獲VM並建立新VM模式
- 使用者協議協議
- 在 Android 上使用協程(三) :Real WorkAndroid
- php 正規表示式捕獲組與非捕獲組PHP
- netty系列之:在netty中使用protobuf協議Netty協議
- 在wildfly中使用SAML協議連線keycloak協議
- netty系列之:protobuf在UDP協議中的使用NettyUDP協議
- GOLANG使用簡單型別,在協議解析的妙用Golang型別協議
- 如何獲取和使用酒店協議程式碼,享受預訂優惠協議
- 用WebRTC在Firefox上實現YouTube直播WebFirefox
- 基礎篇-http協議《http 簡介、url詳解、request》HTTP協議
- URL載入系統之五:快取、Cookies與協議快取Cookie協議
- 使用requests庫獲取這個URL
- 通過 Org 模式管理 Chromium 和 Firefox 會話模式Firefox會話
- 在Delphi中捕獲控制檯程式的輸出 (轉)
- 捕獲 React 異常React
- 捕獲cookie的值Cookie
- iOS異常捕獲iOS
- Swift速成:捕獲列表Swift