我只是不小心撞到了CtrlAltBackspace。这显然攻击了 X 服务器。屏幕短暂闪烁后,我的窗口管理器要求我再次登录,然后我又回到了空白状态。快速ps -ax
显示我的应用程序仍在运行,但我不知道如何将它们带回到前台。 (fg <foo>
没有。)
意外切换 X.org 后如何重新获得对正在运行的应用程序的访问权限?
配置:免费 BSD 11.2、i3-4.16、xorg-7.7_3。
答案1
切换 X11 服务器并再次登录后,UNIX X11 套接字/tmp/.X11-unix/X0
已被删除并重新创建,并且 X11 会话 cookie~/.Xauthority
已被新的随机 cookie 替换。
即使DISPLAY
环境变量的值相同,应用程序也必须关闭并重新打开套接字并重新读取 cookie。据我所知,没有通用的机制来通知任何 X11 应用程序执行此操作。这只是第一步:之后,应用程序必须使用 X11 服务器完全重新创建所有窗口和其他 GUI 对象,并恢复其状态以匹配程序的内部状态。恐怕这个功能不存在。
您可以做的最好的事情就是kill -HUP
停止应用程序,让它们有机会自动保存任何未保存的工作(如果它们已被编程为这样做),然后正常重新启动它们。
(这实际上与信号的原始含义完全匹配HUP
:它最初意味着用户的固定电话调制解调器连接已挂断,应用程序应以某种方式保存所有未保存的工作,以便在新会话中恢复它,然后出口。)