问题描述
当我从VSCode的终端启动图形应用程序时,新启动的应用程序在Ubuntu的坞站中显示为新的VSCode窗口,并且使用 Alt + TAB 切换窗口时/应用程序。例如,当我从VSCode启动evince时,在扩展坞中没有看到evince图标,但是GNOME将evince窗口和VSCode窗口在扩展坞中的VSCode应用程序下分组。)
使用哪种机制将由单独的应用程序创建的窗口附加到VSCode窗口?有没有办法禁用它(即,在启动GUI应用程序时让VSCode终端表现得像普通终端一样)?
解决方法
通过snap软件包安装VSCode时会发生这种情况。实际上,snap不仅是包管理器,而且是一种容器技术,因此VSCode进程的snap版本在容器中运行,子进程也被容器化。
解决方案:通过另一个系统安装VSCode。对于Ubuntu,VSCode's download page上有一个.deb
软件包,没有问题。
对我而言,这不会发生,但我猜可能是在设置或覆盖WM_CLASS:https://askubuntu.com/a/1060233。
在X11下,Windows具有XWindowAttributes结构和XClassHint结构属性,应用程序可从中获取有关Windows的信息。具体来说,最后一个负责WM_CLASS属性,即两个逗号分隔的字符串,可以通过xprop命令轻松看到。
...
例如,对于诸如将应用程序的同一图标下的窗口分组的停靠区之类的东西,这也可能是有用的属性。
遗憾的是,我不知道该问题的任何解决方案, 至少没有比以其他方式运行程序更容易或更好的方法...