Emacs 29 无法识别 frame
我在manjaro xfce和i3上面都一切正常。不过emacs用的是archlinuxcn的emacs-git包,是打开pgtk之前的版本。现在的版本我没试过,不得而知。
什么叫无法识别 frame ?
Symbol’s value as variable is void: frame
不好意思,试一下 (frame-parameter nil 'window-id)
“94312896905888”
暂时不清楚 Emacs29 的情况, Emacs29 在我电脑上各种卡死, strace 追踪的话电脑就完全没反应了,再过段时间我再看, 你先用 Emacs 27 吧。
估计是你开了 pgtk
我下载的是emacs-git,是开启pgtk的版本,有什么方法手动关上呢
自己编译Еmacs
如果是你用yourt或者paru安装的emacs-git,去~/.cache/yourt
或者~/.cache/paru/clone
下面找emacs-git
的目录,修改emacs-git
目录里面的PKGBUILD文件,把PGTK= "yes"
这一行的"yes"
去掉,然后执行makepkg -si
重新编译就行。
你可以把对PGTK="yes"
的修改commit一下,这样yourt或者paru在下次升级emacs-git的PKGBUILD文件的时候,会自动merge你对PKGBUILD文件的修改。
通过补丁EAF正式支持Wayland native环境, 以前EAF只支持XWayland, 我已经在Emacs 29环境下测试过了。
在Wayland native环境下,EAF会采取和macOS同等的策略,Emacs获得焦点时显示EAF窗口,Emacs失去焦点时隐藏EAF窗口,以绕过Wayland native下窗口管理器不允许XReparent这种跨进程粘贴技术。
目前还有点小问题是,Wayland native环境下放弃XReparent跨进程粘贴技术后,EAF窗口的坐标只有在Emacs全屏的时候是正常的,原因是我还没有找到怎么获取Emacs窗口在屏幕范围的绝对坐标,找到对应的方法就可以修复这个小问题。
更新到EAF最新版, emacs29 pgtk版本也可以直接使用了,当然 emacs27 XWayland 也可以使用。
最新版emacs29 开了pgtk后,在dwm上 打开eaf 页面时会打开一个新的dwm窗口,而不是在原dwm窗口打开eaf页面。这个有什么方法解决么
eaf buffer 的输出是
(python3:565024): Gtk-e[1;33mWARNINGe[0m **: e[34m13:57:34.000e[0m: Unable to locate theme engine in module_path: "murrine",
QXcbConnection: XCB error: 3 (BadWindow), sequence: 589, resource id: -1430535584, major code: 7 (ReparentWindow), minor code: 0
QXcbConnection: XCB error: 3 (BadWindow), sequence: 663, resource id: -1430535584, major code: 7 (ReparentWindow), minor code: 0
QXcbConnection: XCB error: 3 (BadWindow), sequence: 715, resource id: -1430535584, major code: 7 (ReparentWindow), minor code: 0
[EAF] Browser https://www.google.com/ loading time: 0.7739334106445312s
QXcbConnection: XCB error: 3 (BadWindow), sequence: 893, resource id: -1430535584, major code: 7 (ReparentWindow), minor code: 0
QXcbConnection: XCB error: 3 (BadWindow), sequence: 1016, resource id: -1430535584, major code: 7 (ReparentWindow), minor code: 0
QXcbConnection: XCB error: 3 (BadWindow), sequence: 1151, resource id: -1430535584, major code: 7 (ReparentWindow), minor code: 0
dwm应该是x11窗口管理器,x11窗口管理器就不要用pgtk的版本吧。
不晓得为啥emacs主分支要默认pgtk,还有很多用户不是wayland环境。
那我还是自己编译emacs,去掉pgtk好了
嗯,目前只能自己编译了
主分支没有默认 pgtk 吧
默认了,我这边arch确认了,装了就是pgtk版本,emacs29 git版本