Hello.

We're found some strange behaviors in code with some X11 system parameters, such as:

1. Programmer doesn't have public methods for getting/setting WM_CLASS
https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/770ef496e67e318ea5418609b83cf0304761e210/src/java.desktop/unix/classes/sun/awt/X11/XToolkit.java#L170

2. Used one private variable twice to set WM_CLASS
https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/770ef496e67e318ea5418609b83cf0304761e210/src/java.desktop/unix/classes/sun/awt/X11/XRootWindow.java#L66

3. Used the WM_CLASS variable to set the window name, which is incorrect
https://github.com/AdoptOpenJDK/openjdk-jdk11u/blob/770ef496e67e318ea5418609b83cf0304761e210/src/java.desktop/unix/classes/sun/awt/X11/XRootWindow.java#L63

In X11 ideology WM_CLASS and WM_NAME variables are used for different purposes. First one - for technical determination what window is it (for example, some WMs like dwm, bspwm, etc use WM_CLASS to apply different window configuration settings - floating, desktop name, etc). Second one is used to show the name of the window to user (taskbar popup, for example).

Also, parts of WM_CLASS should be different to determine the certain application and the part of application as the owner of current window. (For example WM_CLASS="Test","pop-up" defines window with type pop-up of Test application)

At this time WM_CLASS can be change only through reflection, but it's wrong, I think. Can you, please, create three interfaces for little bit clearly operating X11 window properties (two for WM_CLASS and one for WM_NAME).

---
Ar cieņu,
Digital Owl

Reply via email to