5

I am working with two different versions of Eclipse. Due to conflicts between the plugins I decided to install both of these versions separately, which works perfectly fine except one little issue. I am working with Ubuntu-Gnome (14.04 LTS) and I edited the .desktop file of one version like this:

[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

Now, what bugs me is the following:

The application starts up with the custom name, WM_Class and icon as expected, yet, when the application has finished starting up these attributes change for some reason and it is grouped with the other eclipse installation by the gnome-shell.

If I enter xprop WM_CLASS in terminal and click on the window it returns WM_CLASS(STRING) = "Eclipse", "Eclipse".

edit: I just recently switched from a Unity desktop to a GNOME shell and using Unity the windows were not grouped together.

another edit: I updated my ubuntu version to 15.04 and my gnome-shell to 3.14.4 but unfortunately the problem remains. I am starting to think that this could only be fixed by editing the Eclipse source code...

6
  • What are bothe the .desktop file names (not the Name= line, but the actual file names)? where are they located? Jul 28, 2015 at 12:59
  • they are both located in /usr/share/applications. one is called eclipse.desktop and one is called custom-eclipse.desktop Jul 28, 2015 at 13:02
  • Same behavior here with my both eclipse installations (Java, C++). xprop WM_CLASS gives WM_CLASS(STRING) = "Eclipse", "Eclipse" in both cases. But my running instances are not grouped.
    – A.B.
    Jul 28, 2015 at 15:56
  • Just as information, but your method worked fine on another "duplicated" application I tested it on. There must be some kind of internal linking, causing your problem. Jul 28, 2015 at 19:14
  • @JacobVlijm I suspect the same, since the startup window of Eclipse has the name, WM_CLASS and icon that I defined in the .desktop file, but after starting up the "running" window has changed properties. It might also have to do with the ubuntu or the desktop version since I recently switched from unity to a gnome desktop and in unity the windows were not grouped together. (on that note I might just add that to the question) Jul 28, 2015 at 19:29

3 Answers 3

6

StartupWMClass does not change the actual application window class, but only tells the desktop manager what window class should use to identify the application window(s).

The problem is that Eclipse uses Eclipse as window class despite its version.

If you want to use more than one Eclipse version at once and have windows grouped correctly, with the ability to pin the application icon as favorite, you should edit the plugin.xml of package you are using.

For Eclipse Java EE IDE I succesfully edited the plugin.xml in

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

changing the properties

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

(not sure wich one is enough) to whatever value you prefer. The same value you should put in .desktop file as StartupWMClass.

3
  • unfortunately I did not find a plugin.xml file that contained these lines anywhere... Mar 7, 2016 at 6:54
  • Which version of Eclipse are you using? This method worked for me until Luna. Please note that I used XPath in my answer, so you will not find exactly the lines I wrote, but XML elements: <plugin><extensions><product name="Eclipse"> and <plugin><extensions><product><property name="appName" value="Eclipse" Mar 7, 2016 at 9:10
  • The latest version is based on eclipse mars. I will look for similar lines in the plugin.xml files after lunch! Mar 7, 2016 at 10:40
1

I assume, it's not an answer but you could test my desktop files. Both files start Eclipse Mars in an Ubuntu 15.04 with a GNOME 3.16 environment.

With tis desktop files, I have two running instances which are not grouped.

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

But

xprop WM_CLASS

gives

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

that's true

7
  • Thank you I will try that tomorrow as soon as I get to work. This reminded me that I had just recently switched to the gnome desktop from unity and in unity the windows were not grouped together. also I will check the gnome version. It might indicate that this could possibly an issue with the desktop version, although I suspected it to be something caused by Eclipse itself. Jul 28, 2015 at 19:36
  • Also, could you maybe check the WM_NAME attribute for me please? Jul 29, 2015 at 5:12
  • Sure, in 12 hours :\
    – A.B.
    Jul 29, 2015 at 5:13
  • I'm afraid I will be on a short holiday trip by then, but it looks like this issue might not be solved before that so I'm sure it would still be helpful when I come back next week:) Jul 29, 2015 at 5:19
  • I just updated my computer: now it runs ubuntu 15.04 and gnome-shell version 3.14.4, but the problem remains. I'm not sure if I want to add the GNOME staging PPA, is it stable? Also I tried your .desktop files, no luck either... Jul 29, 2015 at 8:11
1

StartupWMClass is only used to group windows with the same class name. You need to look at changing the class with the exec command if the program supports gtk options.

I've just been trying this with browsers running in app mode, currently class option is not working in chrome or chromium so I used Epiphany. Here's an example of my Trello desktop launcher.

[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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .