双显示器模式下如何找回无法访问的InkScape窗口?
这种XQuartz托管的跨平台应用在macOS多显示器下的窗口错位问题真的挺闹心的,我自己碰到过好几次,也帮朋友排查过类似情况。结合你描述的症状——连接第二台显示器后,Inkscape窗口在主屏和副屏都找不到,进入/退出Mission Control时能看到它往副屏飞但就是看不见,XQuartz显示窗口归属主屏但手动分配到副屏也无法访问,断开副屏后又恢复正常——给你几个亲测有效的解决思路:
重置XQuartz的窗口位置缓存
XQuartz会缓存窗口的位置信息,多显示器切换次数多了,缓存很容易错乱,导致窗口“藏”在虚拟的屏幕位置里。你可以先关闭所有XQuartz和Inkscape进程,然后打开终端执行以下命令清理缓存:rm ~/.Xauthority rm ~/.config/xfce4/xfconf/xfce-perchannel-xml/displays.xml执行完后重启XQuartz和Inkscape,大概率能找回消失的窗口。我上次帮同事解决的时候,就是用这个方法搞定的。
强制指定XQuartz的显示输出
因为Inkscape本身不管理窗口,全靠XQuartz处理显示,所以可以给XQuartz加启动参数强制指定显示屏幕。先关闭XQuartz,然后在终端运行:open -a XQuartz --args -display :0.0这里的
:0.0对应你的主显示器,如果想默认让Inkscape在副屏启动,可以改成:0.1(不同设备的屏幕编号可能略有差异,你可以通过XQuartz终端里的xrandr命令查看具体编号),之后再启动Inkscape试试。调整XQuartz的显示偏好设置
打开XQuartz的偏好设置(点击顶部菜单栏的XQuartz -> Preferences),切换到「Display」标签页:- 取消勾选「Full screen mode」(如果之前开启了全屏模式的话)
- 勾选「Allow menu bar to be visible in full screen」
- 确认分辨率设置和当前显示器的实际分辨率匹配,必要时切换分辨率后重启XQuartz
重置Inkscape的窗口状态配置
有时候Inkscape自身的窗口状态缓存也会出问题。关闭Inkscape后,找到它的配置文件目录:~/.config/inkscape里面有个
window-state.ini文件,把它重命名或者直接删除,然后重新启动Inkscape,让它自动重置窗口状态。
如果以上方法都不行,建议你更新XQuartz到最新版本——旧版本的XQuartz在多显示器兼容性上确实存在一些已知问题,更新后大概率能解决这类窗口错位的bug。
内容的提问来源于stack exchange,提问作者outis

