好的,多谢多谢!
貌似还是不行。
js: WebSocket connection to 'ws://127.0.0.1:47199/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
which node
和
which nodejs
这两个命令输出的啥?我怀疑你的 node ./server.js 没有正常启动。
$ which node
/usr/local/bin/node
$ which nodejs
$
你手动在 app/terminal 目录下执行
node ./server.js 3000 /home bash
命令会输出啥?
events.js:287
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (net.js:1313:16)
at listenInCluster (net.js:1361:12)
at Server.listen (net.js:1449:7)
at new WebSocketServer (/home/johnny/.emacs.d/elisp/emacs-application-framework/app/terminal/node_modules/ws/lib/websocket-server.js:75:20)
at Object.<anonymous> (/home/johnny/.emacs.d/elisp/emacs-application-framework/app/terminal/server.js:27:12)
at Module._compile (internal/modules/cjs/loader.js:1156:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
Emitted 'error' event on WebSocketServer instance at:
at Server.emit (events.js:310:20)
at emitErrorNT (net.js:1340:8)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 3000
}
刚才按照@shanyouli 建议的,rebuild了一下,可以打开terminal了
今天我推送了一个补丁
这个补丁用QWindow的setParent方法替换了原来的X11 Reparent来实现跨进程画面粘贴,QWindow::setParent在Linux平台下应该用的X11 Reparent,在Windows和Mac平台下应该用了操作系统底层实现。
这个补丁更新后意味着: 如果能够搞定DBus, EAF应该可以在Windows和Mac平台下运行!!!
其他平台,难道没有和dbus类似的东西? 应该不太可能吧?
DBus要在操作系统层面先跑一个Daemon,不是不可能,只是其他平台折腾DBus Daemon比较麻烦。
这个终端应该是Emacs里面支持图形化最好的终端了。
我已经想尝试着把python
和nodejs
的那一块给去掉,直接拿c++
来搞的想法了
没有必要啊,PyQt底层调用的就是Qt的C++ API,在X86效率已经非常高了。 C++反而来回编译,把Hacking的感觉都编译没了。
只是为了减少一点外部依赖,多种语言混合使用,这里构建系统不太好处理。
最新版移植到Windows的障碍只有DBus,移植到Mac的障碍只有DBus和QGraphicsScene(影响Buffer内容在多个View之间镜像同步,主要对应于Emacs分屏操作)
移植的步骤:
- 重构 eaf.el 和 eaf.py, 把十几处DBus代码抽象成5个以内的固定IPC接口包装函数
- 用LSP的JsonRPC替换DBus
- DBus换掉以后,Windows平台应该可以工作了
- 随后折腾好Mac下QGraphicsScene, Mac平台应该也可以用EAF
移植过程中可能要针对Windows替换代码中的 / 路径链接操作。
欢迎Windows和Mac平台的黑客一起参与移植,最大的障碍X11 Reparent被QWindow::setParent跨平台API替换后,EAF移植到Windows和Mac平台,成为Emacs多媒体跨平台框架只是时间问题。
以前有一些闪屏的问题,升级后感觉好多了。另外,这意味着 wayland 下可以用了吗?
太好了,意味着只要DBus被替换后,EAF在Windows上运行完全不是问题。
有没有兴趣一起搞?
可以,我可以做windows上的适配