StartupWMClass não irá alterar WM_Class do Eclipse IDE

2

Estou trabalhando com duas versões diferentes do Eclipse. Devido a conflitos entre os plugins, decidi instalar ambas as versões separadamente, o que funciona perfeitamente, exceto um pequeno problema. Eu estou trabalhando com o Ubuntu-Gnome (14.04 LTS) e editei o arquivo .desktop de uma versão como esta:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Custom Eclipse 
Icon=custom-icon
Path=/opt/custom-eclipse/
Exec=/opt/custom-eclipse/custom-eclipse
StartupNotify=true
StartupWMClass=custom-eclipse

Agora, o que me incomoda é o seguinte:

O aplicativo é inicializado com o nome personalizado, WM_Class e ícone como esperado, mas quando o aplicativo terminar de iniciar esses atributos, por algum motivo, será agrupado com a outra instalação do eclipse pelo gnome-shell.

Se eu inserir xprop WM_CLASS no terminal e clicar na janela, ele retornará WM_CLASS(STRING) = "Eclipse", "Eclipse" .

editar: Eu recentemente mudei de um desktop Unity para um shell GNOME e usando Unity as janelas não foram agrupadas.

outra edição: Eu atualizei minha versão do ubuntu para o 15.04 e meu gnome-shell para o 3.14.4, mas infelizmente o problema continua. Eu estou começando a pensar que isso só poderia ser corrigido editando o código-fonte do Eclipse ...

    
por David Wright 28.07.2015 / 14:38

3 respostas

3

StartupWMClass não altera a classe real da janela do aplicativo, mas apenas informa ao gerente da área de trabalho qual classe de janela deve usar para identificar a (s) janela (s) do aplicativo.

O problema é que o Eclipse usa Eclipse como classe de janela apesar de sua versão.

Se você quiser usar mais de uma versão do Eclipse de uma vez e ter janelas agrupadas corretamente, com a capacidade de fixar o ícone do aplicativo como favorito, você deve editar o plugin.xml do pacote que está usando.

Para o Eclipse Java EE IDE, editei com êxito o plugin.xml em

<eclipse-root>/plugins/org.eclipse.epp.package.jee_<current-version>

alterando as propriedades

plugin/extension/product/@name
plugin/extension/product/property[@name=appName]/@value

(não tenho certeza qual é o suficiente) para qualquer valor que você preferir. O mesmo valor que você deve colocar no arquivo .desktop como StartupWMClass .

    
por Alessio Gaeta 04.03.2016 / 09:45
1

Suponho que não seja uma resposta, mas você pode testar meus arquivos da área de trabalho. Ambos os arquivos iniciam o Eclipse Mars em um Ubuntu 15.04 com um ambiente GNOME 3.16 .

Com os arquivos da área de trabalho, tenho duas instâncias em execução que não são não agrupadas.

cat ~/.local/share/applications/opt_eclipse_cpp.desktop

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Eclipse C++
Comment=Eclipse Integrated Development Environment
Icon=eclipse
Exec=/opt/eclipse-cpp/eclipse/eclipse
StartupNotify=true
StartupWMClass=Eclipse-CPP

cat ~/.local/share/applications/opt_eclipse.desktop

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Eclipse JEE
Comment=Eclipse Integrated Development Environment
Icon=eclipse
Exec=/opt/eclipse-jee/eclipse/eclipse
StartupNotify=true
StartupWMClass=Eclipse-Java

Mas

xprop WM_CLASS

WM_CLASS(STRING) = "Eclipse", "Eclipse"

é verdade

    
por A.B. 28.07.2015 / 18:09
1

StartupWMClass é usado apenas para agrupar janelas com o mesmo nome de classe. Você precisa observar a mudança da classe com o comando exec, se o programa suportar opções gtk.

Acabei de tentar isso com navegadores em execução no modo de aplicativo, a opção de classe atualmente não está funcionando no chrome ou no chromium, então usei o Epiphany. Aqui está um exemplo do meu iniciador de área de trabalho Trello.

[Desktop Entry]
Version=1.0
Type=Application
Exec=epiphany https://trello.com/ -a --profile=/epiphany/trello --class=trello
Icon=/MyIcons/trello.png
StartupNotify=true
Terminal=false
Name=Trello
StartupWMClass=trello
    
por Generic 07.08.2016 / 21:43