Este é um exemplo específico de um problema genérico em que ainda não consegui encontrar uma solução.
Eu tenho um programa (Android Virtual Device Manager) que lança "sub-programas" (ou seja, emuladores ou dispositivos virtuais) de dentro de si mesmo (também pode ser iniciado a partir de outro lugar onde). Eu quero que qualquer instância de OURO desses programas seja agrupada sob o mesmo ícone do Unity.
Eu criei um arquivo .desktop
para tentar realizar isso, mas não sei exatamente como fazer isso. O arquivo da área de trabalho é o seguinte:
#!/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
Pelo que entendi, StartupWMClass
é o que preciso definir para conseguir isso corretamente. Eu obtive os dois nomes de classe ('Android Virtual Device Manager' e 'emulator64-arm') usando xprop WM_CLASS
nas janelas da repsetiva. Ambos funcionam individualmente (o ícone do lançador é corretamente anexado ao programa, não importa o modo como ele é iniciado), mas não consigo fazer com que ele funcione para ambos.
Estou assumindo que de alguma forma preciso definir dois valores para StartupWMClass
, mas não consegui fazer isso corretamente (ou sei se é uma operação válida). Eu tentei, separados por dois pontos como variáveis de ambiente, separados por vírgulas, citações, etc, e não consigo encontrar nenhuma dica no documentação oficial .
Alguma sugestão?
EDITAR:
Outro exemplo, mais pedante, mas provavelmente mais identificável, é com Matlab
. Estou executando 2013a e a tela inicial que mostra inicialmente e o programa tem valores WM_CLASS
completamente diferentes. Isso significa que, quando eu clico no meu lançador com StartupWMClass=com-mathworks-util-PostVMInit
, a tela inicial aparece com um ícone diferente (padrão Desconhecido) Unity
, enquanto o restante aparece agrupado sob o meu lançador.
Usando xprop WMCLASS
e clicando primeiro na tela inicial, em seguida, repetindo com uma sessão Matlab
ativa, recebo a seguinte saída de terminal:
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"
Se eu pudesse especificar algo ao longo das linhas:
StartupWMClass=com-mathworks-util-PostVMInit&&MATLAB
Isso funcionaria perfeitamente (como ambos funcionam separadamente), mas não tenho idéia da sintaxe, se ela existir. Eu apenas não sei que nada que tentei funcionou até agora.
Qualquer ajuda ou uma resposta definitiva de qualquer forma seria ótima, pois acredito que este é um elemento fundamental de um desktop que funcione bem.