web-dev-qa-db-fra.com

StartupWMClass ne changera pas WM_Class of Eclipse IDE

Je travaille avec deux versions différentes d'Eclipse. En raison de conflits entre les plugins, j'ai décidé d'installer ces deux versions séparément, ce qui fonctionne parfaitement, sauf un petit problème. Je travaille avec Ubuntu-Gnome (14.04 LTS) et j'ai édité le fichier .desktop d'une version comme celle-ci:

[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

Maintenant, ce qui me dérange est le suivant:

L'application démarre avec le nom personnalisé, WM_Class et l'icône comme prévu, mais lorsque l'application a fini de démarrer, ces attributs changent pour une raison quelconque et sont regroupés avec gnome-Shell avec l'autre installation Eclipse.

Si j'entre xprop WM_CLASS dans le terminal et que je clique sur la fenêtre, il retourne WM_CLASS(STRING) = "Eclipse", "Eclipse".

edit: Je viens tout juste de passer d'un bureau Unity à un shell GNOME et, en utilisant Unity, les fenêtres n'étaient pas regroupées.

ne autre édition: J'ai mis à jour ma version d'ubuntu à 15.04 et mon gnome-Shell à 3.14.4 mais malheureusement, le problème demeure. Je commence à penser que cela ne pourrait être corrigé qu'en modifiant le code source Eclipse ...

4
David Wright

StartupWMClass ne modifie pas la classe de fenêtre de l'application, mais indique uniquement au gestionnaire de bureau quelle classe de fenêtre doit utiliser pour identifier la ou les fenêtres de l'application.

Le problème est qu'Eclipse utilise Eclipse comme classe de fenêtre malgré sa version.

Si vous souhaitez utiliser plusieurs versions d'Eclipse à la fois et que les fenêtres sont correctement regroupées, avec la possibilité d'épingler l'icône de l'application comme favori, vous devez modifier le plugin.xml du package que vous utilisez.

Pour Eclipse Java EE IDE j'ai édité avec succès le plugin.xml dans

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

changer les propriétés

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

(je ne sais pas si cela suffit) à la valeur que vous préférez. La même valeur que vous devriez mettre dans le fichier .desktop en tant que StartupWMClass.

3
Alessio Gaeta

StartupWMClass est uniquement utilisé pour regrouper des fenêtres portant le même nom de classe. Vous devez envisager de modifier la classe avec la commande exec si le programme prend en charge les options gtk.

Je viens d’essayer cela avec des navigateurs fonctionnant en mode application, l’option de classe actuelle ne fonctionnant pas en chrome ou en chrome, j’ai donc utilisé Epiphany. Voici un exemple de mon lanceur de bureau 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
1
Generic

Je suppose que ce n'est pas une réponse, mais vous pouvez tester mes fichiers de bureau. Les deux fichiers commencent Eclipse Mars dans un environnement buntu 15.04 avec un environnement GNOME 3.16.

Avec ces fichiers de bureau, j'ai deux instances en cours d'exécution qui sont non groupées.

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

Mais

xprop WM_CLASS

donne

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

c'est vrai

1
A.B.