本地运行 emacsclient, 结果居然是远端打开窗口么?

是这样的, 楼主开放了自己电脑 (系统是 Windows, 下称远端) 上的某个端口, 然后启动配置好了的 Emacs server;
再在同学的电脑 (系统是 Windows, 下称本地) 上运行 client:

PWSH 他的电脑> emacsclientw.exe  `
                  --server-file=C:/Users/UserName/Downloads/server-tcp.txt  `
                  --create-frame

其中 C:/Users/UserName/Downloads/server-tcp.txt 是 server 启动之后在远端生成的文件, 这个文件发到了本地用来给 client 认证.

我以为会在本地打开一个 frame, 访问远端的内容; 但上面那条命令就仅仅是叫远端在远端自己的桌面上打开一个 frame, 远端打开 frame 之后那条命令就直接返回了.

是我哪里操作有问题吗?

还是说 emacsclient 的功能就只是指挥一下远端的 server? 如果是这样的话, 从用户的角度看, 信息只是单向传输而已.
本地可以用类似这样:

PWSH 他的电脑> emacsclientw  `
                  -f C:/Users/UserName/Downloads/server-tcp.txt  `
                  -r  `
                  -e `(w32-notification-close` `(w32-notification-notify` :title` `"MSG`"` :body` `"` `"`)`)

的命令给远端的通知中心发送消息, 但是反过来却不行. 感觉少了很多玩法.

貌似和这个比较像?

这个我很早看过, 而且给 accepted 点踩了 (

其实我就是想确认能不能实现一楼描述的功能, 所有的回答都是 workaround 或者只是在回避问题而已.

能不能像 lsp-bridge 的远程 server 一样通过外部进程来通行解决呢?

(要是 Emacs 的远程体验更好一些就更香了 :rofl:

确实目前 tramp 的体验比较一般.

如果这个实现了的话, 感觉以后就没 SSH 什么事儿了 :rofl:

假设本地只有安装 emacsclient 而没有 emacs, emacsclient 作为一个连图形界面库都没有链接的程序,期待它能在本地开个 GUI 窗口只是过度期待罢了,显然是不符合常理的。

如果你用的是 X Window 的话,远程的 Emacs 是可以在本地的 X server 上显示的,当然这和 emacsclient 也没有什么关系。网上搜 ssh X forward

2 个赞

如果你用wayland的话可以试试waypipe,它实现了类似 X11 forwarding 的功能.

1 个赞

看来目前 Windows 上实现窗口转发还是有点难度, 只能尝试跑在 GNU/Linux 上的 Emacs server 了.