这是我尚未找到解决方案的通用问题的特定示例。
我有一个程序(Android虚拟设备管理器)可以从自身内部启动“子程序”(即仿真器或虚拟设备)(也可以从其他位置启动)。我希望将这些程序的任何EITHER实例归入同一Unity图标下。
我已经创建了一个.desktop
文件来尝试完成此任务,但不完全知道该怎么做。桌面文件如下:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Android Virtual Device
Icon=/home/ben/.icons/android.svg
Exec=/home/ben/usr/bin/android avd
StartupWMClass=Android Virtual Device Manager
据我了解,这StartupWMClass
是我需要正确设置以实现此目标的条件。我已经xprop WM_CLASS
在复制窗口上使用了两个类名(“ Android虚拟设备管理器”和“ emulator64-arm”)。两者都可以单独工作(无论以什么方式启动,启动器图标都正确地附加到了程序上),但是我无法使它同时适用于两者。
我假设我某种程度上需要为其设置两个值,StartupWMClass
但不能正确执行(或知道它是否是有效的操作)。我已经尝试过,像环境变量一样用冒号分隔,用逗号分隔,用引号引起来,等等,但是我在官方文档中找不到任何提示。
有什么建议么?
编辑:
另一个更有趣,但可能更可识别的示例是Matlab
。我正在运行2013a,初始显示的初始屏幕和程序具有完全不同的WM_CLASS
值。这意味着,当我单击其中的启动器StartupWMClass=com-mathworks-util-PostVMInit
时,启动屏幕将显示一个不同的Unity
图标(默认为“未知”),而其余的图标将显示在启动器下方。
通过使用xprop WMCLASS
并首先单击启动屏幕,然后通过活动Matlab
会话进行重复,我得到以下终端输出:
ben@ben-OptiPlex-9010:~$ xprop WM_CLASS
WM_CLASS(STRING) = "MATLAB", "MATLAB"
ben@ben-OptiPlex-9010:~$ xprop WM_CLASS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
如果我可以按照以下方式指定内容:
StartupWMClass=com-mathworks-util-PostVMInit&&MATLAB
那会完美地工作(因为两者都是分开工作的),但是我什至不知道语法,即使它存在。我只知道到目前为止我还没有尝试过任何方法。
无论哪种方式的任何帮助或最终答案都将是很好的,因为我认为这是运行良好的台式机的相当基本的要素。
Drawers
该链接中的视频,并从显示的内容中将它们简单地进行了分组,当您单击任何子项目时,它仍在Unity
启动器中使用其自己的图标创建,这就是我要停止的工作