window matching improvement?

Asked by robert engels

Is there a way to set an option so that that Docky always uses the Window class to match applications when there is no launcher?

If I launch several different java applications, even using the technique of agent.jar to change the window class it does not work - because these applications do not have an associated launcher in /usr/share/applications - they are started in various other ways.

Seems there should be a checkbox 'match windows using class for unknown applications'.
or is there something else I am doing wrong ???

A side-note is that Docky appears to use a random icon from one of the java windows as the dock icon. When I right-click the dock icon, it does list all of the 'java' windows.

Question information

Language:
English Edit question
Status:
Solved
For:
Docky Edit question
Assignee:
No assignee Edit question
Solved by:
Robert Dyer
Solved:
Last query:
Last reply:
Revision history for this message
Robert Dyer (psybers) said :
#1
Revision history for this message
robert engels (rengels) said :
#2

Sorry Robert, but that is exactly what I reported against. The link you referred to shows changing the .desktop launcher for a particular application. If you re-read my question, you'll see that my applications do not have an associated launcher...

When there is no launcher, Docky should default to matching using the Window class I think.

Revision history for this message
Robert Dyer (psybers) said :
#3

And the reason I posted that link is because that is all the support Docky has. If that page can't help you, nothing can.

Revision history for this message
Robert Dyer (psybers) said :
#4

You can make launchers for your apps you know, you don't have to rely only on ones provided by them.

Revision history for this message
robert engels (rengels) said :
#5

I'm sorry but that is not really the case. Often the 'process' is started without any reference to the 'launcher' system.

For example, many IDE's like Eclipse and IntelliJ have their own external launching frameworks, and the end result is simply a process.

For this to work, Docky needs to group 'processes/windows' using the Window class when a launcher does not exist/not used.

I have also evaluated 'AVN' in comparison to Docky, and this works fine there - but I prefer the simplicity and UI of Docky, so I was hoping this might be fixed.

Seems strange that you need to create 'launchers' for the grouping functionality to work, when Docky has access to alternative information when this is not available.

Revision history for this message
Robert Dyer (psybers) said :
#6

Docky *always* uses the launchers to match windows. IF it can't find any appropriate launchers, then it simply groups them all by the WM_CLASS. In the case of Java, almost every Java app has the same WM_CLASS (this is the default for AWT based apps, I am unsure about SWT based). Thus, all Java apps which have no launcher will wind up grouping together. Just add a launcher, change the WM_CLASS (there are ways to do this, I recommend nagging the app's developer) and you're all set.

Eclipse matches fine for me out of the box, fyi. So your Eclipse install must be broken.

Revision history for this message
robert engels (rengels) said :
#7

I'm sorry, but I don't think you're reading my question/problem correctly.

Docky DOES NOT use the WM_CLASS when there is no launcher. It groups all of the applications under the same 'icon'. I am using the agent.jar with my launched applications, and I've used xprop to determine that the WM_CLASS is indeed changed, yet Docky groups the IntelliJ (which has a WM_CLASS of java_lang_Thread), with my application windows (which have a WM_CLASS of OnRamp).

Eclipse seems to work works fine on my system with Docky - it is any application 'launched by eclipse' using run configurations...

For example, run the following in Eclipse using different agent.jar entries - they will all be grouped under the same icon...

package freewayplugin;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test {
 /**
  * @param args
  */
 public static void main(String[] args) {
  JFrame hello = new JFrame();
  hello.setContentPane(new JLabel("Hello World!"));
  hello.pack();
  hello.setVisible(true);
 }
}

Revision history for this message
Best Robert Dyer (psybers) said :
#8

Please stop re-opening this. You have all the available information.

Revision history for this message
robert engels (rengels) said :
#9

Fine. I will AVN where the product works and the support is not handling by an ignorant a$&.

Revision history for this message
Robert Dyer (psybers) said :
#10

First of all, it is AWN. You might want to learn the name if you plan to download it.

Second, I am not ignorant. I am simply pointing out what Docky is capable of and how to configure those capabilities. If those capabilities are not within scope of your specific problem, then we can not help you because Docky does not (currently) support the feature you require.

Third, I more or less brush this problem off as starting with Docky 3 our window matching will be done by the BAMF library (the same library doing window matching for the Unity launcher) and thus this problem is either a) fixed in BAMF and thus will be fixed in Docky 3 *or* not fixed in BAMF and thus a problem for BAMF (and not us).

Fourth, if you want to call me names then please stop using our product. I won't support users that are overly rude, so you are on your own now.

Revision history for this message
robert engels (rengels) said :
#11

I only responded in kind. Maybe if you would have started with the last response (limitation of Docky not others) instead of trying to explain to me incorrectly that I was doing something wrong, it might have been a shorter conversation.

Boy I hope you don't do this for a living, but I wouldn't be surprised given the state of the industry. Good luck to you.

If you work on your reading comprehension skills you might have an easier time in the future.

Revision history for this message
Robert Dyer (psybers) said :
#12

I don't get paid to do this, but when I come across users like you I really wish I did because it is hardly worth wasting my free time to deal with derogatory users such as yourself.