是tty
我们微信聊吧,我来帮你修复一下问题
现在用 Emacs 的 window-system 变量是否是 pgtk 以及环境变量 XDG_SESSION_TYPE 是否是 wayland 一起来判断 Wayland native 的情况。
我这边不行,问题更严重了。
之前Qt的窗口是嵌入在Emacs中的,现在彻底分离了。
比如运行M-x
,Emacs便会隐藏Qt窗口,再执行M-x
,buffer变得空无一物。
这个补丁修复的功能是能让Qt窗口隐藏了
Emacs 变量值 system-type window-system 分别是什么?
环境变量 XDG_SESSION_TYPE 的值是什么?
Emacs 函数 (display-graphic-p) 返回的值是什么?
-
system-type
: gnu/linux -
window-system
: pgtk -
XDG_SESSION_TYPE
: tty -
display-graphic-p
: t
那对呀,你的 (eaf-emacs-not-use-reparent-technology) 应该返回 nil 啊,你更新EAF以后重启Emacs了吗?
(eaf-emacs-not-use-reparent-technology) 的返回值是nil
更新后重启了emacs
你这种现象我没有遇到啊,加了 XDG_SESSION_TYPE 判断后,(eaf-emacs-not-use-reparent-technology) 就应该返回 nil, 返回 nil 就会把Qt窗口嵌入到Emacs中啊。
X 中 root window 子窗口以下的 hierarchy 是 X 服务器处理的,窗口管理器只需要在 RootWindow 设置 SubstructureRedirectMask,不会对 child window 造成影响,也不因该影响 EAF。
否则 Emacs 内置的 scrollbar 和 toolbar 都没法使用,因为这些也是被 reparent 的窗口。
好像回答错了。。。不知道浏览器为啥突然翻到了 2019 年的帖子
建议用 `pgtk-backend-display-class’ 这个函数判断,Wayland 下是 “GdkWaylandDisplay”
我的 Emacs 29 启动就卡死,暂时没法测试这个函数。
这个是 Emacs29的问题,我尝试换回了 Emacs 27,没有异常现象
不晓得 emacs29 改了啥,感觉不光是EAF这边的问题
EAF是没有大问题的,主要是Emacs 29 不知道被触发了什么,把qt和emacs分离了
我看错了,抱歉。这种情况之前经常在wsl 上面看到。
这一波问题应该都是archlinux的emacs-git包打开了pgtk造成的。
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=emacs-git#n49
从 @Jerry 的反馈看,Jerry 用的是 Arch + KDE + X11 的组合,在Emacs29也会被影响,如果现象是 Qt窗口和 Emacs 窗口分离,感觉 Emacs29 即使在 X11 下, XReparent 都没法工作的。
你在 Emacs 29中,(frame-parameter frame 'window-id)
可以获取到 Emacs 的 XID 吗?