拷贝浏览器链接到 org-mode

December 09, 2023
测试
测试
测试
测试
5 分钟阅读

在 org-mode 里写博客文章时,经常会旁征博引一些链接,之前都是用 C-c C-l(org-insert-link) 的快捷键来输入链接,但这是个费事费力的事情,需要去浏览器里面拷贝两次,一次是链接,一次是标题,有没有更好地方式呢?答案是肯定的。不同浏览器做法大同小异,这里以 macOS 上的 Safari 与 Firefox 为例说明。

Safari

在 macOS 中,可以使用下面的 applescript 脚本来获取 org 格式的链接:

#!/usr/bin/osascript

# @raycast.title Copy URL as org-capture
# @raycast.packageName org-capture-url-safari
# @raycast.mode silent
# @raycast.schemaVersion 1


tell application "Safari"
    set tab_link to URL of front document
    set tab_title to NAME of front document
    set org_link to ("[[" & tab_link & "]" & "[" & tab_title & "]]")
    set the clipboard to org_link
    display notification org_link with title "链接复制成功"
end tell

我这里封装成了 Raycast 中可以调用的格式。

Raycast 调用示范

Firefox

按理来说,Firefox 也可以参考 Safari 的做法,但是 Firefox 有个长达 20 年的 bug:

•125419 - [META]Add AppleScript support and capabilities to Mozilla on Mac, e.g. AppleScript/OSA Script menu[1]

因此只能另辟蹊径,虽然网上有些 hack[2] 的解法,但是我觉得太复杂了,不如直接用 userscript 来解决(完整代码可参考 web-util.js[3]):

function copy_as_org_capture() {
  const url = window.location.href;
  const title = window.document.title;
  GM_setClipboard(`[[${url}][${title}]]`);
  alert(title);
}
GM_registerMenuCommand("org-capture", copy_as_org_capture);

VM.shortcut.register('c-i', copy_as_org_capture);

这样既能在快捷菜单中,通过点击来实现链接的复制,也能通过快捷键 C-i 来复制。

油猴脚本快捷菜单

参考

•Violentmonkey API[4]

•Getting URL and Tab Title from Firefox with AppleScript · Matt's programming blog[5]

•使用 Emacs + ox-hugo 来写博客 · Jiayuan Thoughts[6]

引用链接

[1] 125419 - [META]Add AppleScript support and capabilities to Mozilla on Mac, e.g. AppleScript/OSA Script menu: https://bugzilla.mozilla.org/show_bug.cgi?id=125419 [2] hack: https://matthewbilyeu.com/blog/2018-08-24/getting-url-and-tab-title-from-firefox-with-applescript [3] web-util.js: https://github.com/jiacai2050/blog-snippets/blob/master/userscript/web-util.js [4] Violentmonkey API: https://violentmonkey.github.io/api/gm/#gm_registermenucommand [5] Getting URL and Tab Title from Firefox with AppleScript · Matt's programming blog: https://matthewbilyeu.com/blog/2018-08-24/getting-url-and-tab-title-from-firefox-with-applescript [6] 使用 Emacs + ox-hugo 来写博客 · Jiayuan Thoughts: http://blog.jiayuanzhang.com/post/blog-with-ox-hugo/

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多