新人询问org-roam-server在windows10环境下的配置问题

想要实现的效果: 在windows10环境下点击org-roam-server-mode中的笔记节点,在打开的emacs中能立刻显示。(目前仅能实现emacs中打开节点,浏览器刷新)

我的org-roam和sqlite3都安装运行正常,也尝试使用注册表来修改org-protocol,但始终无法实现在已有的emacs窗口打开笔记本。

诚心求教如何解决。

遇到了一样的问题,mac linux都有解决方案,偏偏windows没有,同求大神解惑

1 个赞

GitHub - sprig/org-capture-extension: A Chrome and firefox extension facilitating org-capture in emacs 这里有设置 org-protocol 的教程。

第一步需要开启 emacs-server

;; server 配置
(setq server-name "emacs-server-file")
(server-start)

设置两个环境变量:

ALTERNATE_EDITOR=C:\Program Files\Emacs\x86_64\bin\runemacs.exe
EMACS_SERVER_FILE=C:\Users\xhcoding\.emacs.d\server\emacs-server-file

路径按需更改

第二步设置 org-protocol

在注册表的 HKEY_CLASSES_ROOT 下新建一个 key org-protocol, 设置默认值类型为REG_SZ, 值为 URL:org-protocol,新建一个类型为 REG_SZ 的数据,Key 为 URL Protocol , 值为空。

org-protocol 下建 shell->open->command , 教程里写 command 的默认值设为 "C:\the\path\to\your\emacsclientw.exe" "%1" , 但是我这样设会有路径问题,解决方法就是写个脚本处理一下,我的 command 值:

org_capture.bat 脚本内容如下:

@echo off
set URL=%1
set URL=%URL:&=^&%
set URL=%URL:/?=?%
set URL=%URL:://=:///%
start "" "C:\msys64\mingw64\bin\emacsclientw.exe"  -na "C:\msys64\mingw64\bin\runemacs.exe" "%URL%"

这样就可以了。

最后,去掉 chrome 中一直提示确认的方法:

注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome 下新建一个 DWORD 类型的数据,key 为 ExternalProtocolDialogShowAlwaysOpenCheckbox, 值为 1

再次提示的时候勾上始终打开。

6 个赞

非常感谢您的回复!排版很清晰!!还很贴心给出了如何关闭chrome提示的教程!! 但是我按照以上步骤还是配置失败了。 我使用的emacs 是 windows下的gui版本。

init.el如下

image

环境变量如下:

注册表如下:

shell:

open: command:

roam.bat脚本如下:

最终结果: 第一步:启动org-roam-server:

第二步:点击笔记结点,打开bat文件: 第三步:弹出了一个新的窗口,而且没有成功打开笔记

有劳大神了!

这个还是 emacs server 没有配置好,先确保用 emacsclientw.exe 能够在启动的 emacs 中打开文件,可以在cmd 中尝试。

你先尝试一下打开emacs, 然后M-x => server-start 点击链接试试可以跳转

org-capture配置有点问题,我这里也配置不通过, 点击之后路径生成有问题,估计是bat文件的配置,导致windows文件路径问题

路径有问题,可以试试不用那个脚本做路径转换,直接在 command里写 "C:\the\path\to\your\emacsclientw.exe" "%1"

试试在现有的配置里加上这个:

(require 'org-roam-protocol)

非常期待楼主成功。

我之前试装过org-roam-server,也是搞不定protocol,已经放弃了,据说作者今后的升级为改善windows的用户安装,我老实地等更新。

成功不了,以上所有提供的办法我都试过了,emacs server的配置也没有问题,可以在命令行直接用emacsclientw或者emacsclient 使得server窗口打开某一文件,看来只能等作者更新咯。

无论如何,感谢各位愿意抽时间帮小弟研究这个问题。

卤煮其实还可以去reddit问问。

  1. 不用脚本
  2. 加入org-roam-protocol

尝试了一下,Win10下用楼上提供的配置:

  1. Doom Emacs的server-start会有问题,虽然显示是成功了,但是就是emacsclient会提示找不到服务器
  2. 自己的配置就没问题,

参考链接 按照这里设置系统变量SERVER-FILE,可正常工作了

图上节点能打开,但是内容不显示,是为什么? 可以看到doom 想打开的文件名跟实际的文件名不对照,多了EmacsdailyroamEmacs 这些内容。 我在文件夹里复制一份,改成doom 想要打开的标题,再从图上点击节点,还是打不开文件。 浏览器设置的是(setq org-roam-graph-viewer “C:/Program Files (x86)/Google/Chrome/Application/chrome.exe”) 打开时确是这个路径C:\Program Files (x86)\Google\Chrome\Application\83.0.4103.61

是的,出于某种安全原因,自定义协议,windows好像是会把浏览器的路径强制传进去, 你用上面 @xhcoding,提供的bat脚本启动,就能把这个问题处理掉。

@Neikice,谢谢您的回复,用的@xhcoding 的bat 脚本启动。org-roam-bibtex 的 cite 也不关联,估计我的配置有问题,有谁能做个教程就好了。graphviz生成的关联图,不好看,这个怎么设置呢?

关联图美化,现在可以用org-roam-server 好看不少

参考这里https://orgmode.org/worg/org-contrib/org-protocol.html#org124a1fc和这里https://earvingad.github.io/posts/doom_emacs_windows/完美解决,我用的是doom-emacs,用第一个链接的windows setup那的代码写入一个reg注册文件,然后用第二个链接的EMACS_SERVER_FILE环境变量,注意,我的doom-emacs的server文件在C:\Users\Administrator.emacs.d\server下,而不再.local下,配置文件中也不要(setq server-name “emacs-server-file”)(server-start),也不用设置ALTERNATE_EDITOR=C:\Program Files\Emacs\x86_64\bin\runemacs.exe环境变量,也不要写什么批处理程序。也不用(require 'org-roam-protocol)