After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 651510 - Window tracker doesnt handle MATLAB windows
Window tracker doesnt handle MATLAB windows
Status: RESOLVED NOTGNOME
Product: gnome-shell
Classification: Core
Component: general
3.0.x
Other Linux
: Normal normal
: ---
Assigned To: gnome-shell-maint
gnome-shell-maint
Depends on:
Blocks:
 
 
Reported: 2011-05-31 01:16 UTC by John Stowers
Modified: 2011-12-30 15:58 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
com-mathworks-util-postvminit.desktop (411 bytes, text/plain)
2011-12-29 23:37 UTC, Colin Macdonald
Details

Description John Stowers 2011-05-31 01:16:31 UTC
The shell does not group MATLAB windows as I would expect. This makes managing a MATLAB session with many figures cumbersome.

xprop output follows ====

=============
xprop output on main MATLAB window:
XKLAVIER_STATE(INTEGER) = 0, 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x1, 0x1, 0x0, 0x0
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x2f, 0x0, 0xc0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
XdndAware(ATOM) = BITMAP
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_HORZ, _NET_WM_STATE_MAXIMIZED_VERT
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 0, 26
		program specified location: 0, 26
		program specified size: 1280 by 967
		window gravity: NorthWest
_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 31, 0
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
WM_CLIENT_LEADER(WINDOW): window id # 0x3c0002e
_NET_WM_ICON_NAME(UTF8_STRING) = "MATLAB  7.8.0 (R2009a)"
WM_ICON_NAME(STRING) = "MATLAB  7.8.0 (R2009a)"
_NET_WM_NAME(UTF8_STRING) = "MATLAB  7.8.0 (R2009a)"
WM_NAME(STRING) = "MATLAB  7.8.0 (R2009a)"

=============
xprop output on MATLAB editor window:
XKLAVIER_STATE(INTEGER) = 0, 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x1, 0x1, 0x0, 0x0
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x90, 0x1, 0xc0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
XdndAware(ATOM) = BITMAP
_NET_WM_STATE(ATOM) = 
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 32, 2
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 71, 26
		program specified location: 71, 26
		program specified size: 1056 by 929
		window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
WM_CLIENT_LEADER(WINDOW): window id # 0x3c0002e
_NET_WM_ICON_NAME(UTF8_STRING) = "Editor - /home/john/PhD.git/matlab/hough/yarr3.m"
WM_ICON_NAME(STRING) = "Editor - /home/john/PhD.git/matlab/hough/yarr3.m"
_NET_WM_NAME(UTF8_STRING) = "Editor - /home/john/PhD.git/matlab/hough/yarr3.m"
WM_NAME(STRING) = "Editor - /home/john/PhD.git/matlab/hough/yarr3.m"

=============
xprop output on figure windows:
XKLAVIER_STATE(INTEGER) = 0, 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 32, 2
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x1, 0x1, 0x0, 0x0
_NET_WM_STATE(ATOM) = 
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 358, 14
		program specified location: 358, 14
		program specified size: 560 by 475
		window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
WM_CLIENT_LEADER(WINDOW): window id # 0x3c0002e
_NET_WM_ICON_NAME(UTF8_STRING) = "Figure 3"
WM_ICON_NAME(STRING) = "Figure 3"
_NET_WM_NAME(UTF8_STRING) = "Figure 3"
WM_NAME(STRING) = "Figure 3"
Comment 1 Milan Bouchet-Valat 2011-05-31 09:54:33 UTC
Could you try copying the .desktop file for Mathlab to ~/.local/share/applications/com-mathworks-util-PostVMInit.desktop? It's probably a common bug where the application doesn't set WM_CLASS to a string matching the .desktop file name (OK, in GNOME2 it was not required...). The real solution is to fix Mathlab (please file a bug there if you can); the workaround is creating that desktop file, or naming it that way in packages.

Colin: Maybe there's another improvement the Shell could get here: even if the .desktop file is missing, windows should be grouped correctly according to their WM_CLASS. Currently, it seems that all windows grouping is lost when it's missing. I suspect that's because ShellAppTracker doesn't create an item for this app. It should probably create a dummy item. (We've already seen this problem with other programs lacking a correct WM_CLASS.)
Comment 2 John Stowers 2011-05-31 23:45:10 UTC
(In reply to comment #1)
> Could you try copying the .desktop file for Mathlab to
> ~/.local/share/applications/com-mathworks-util-PostVMInit.desktop? It's
> probably a common bug where the application doesn't set WM_CLASS to a string
> matching the .desktop file name (OK, in GNOME2 it was not required...). The
> real solution is to fix Mathlab (please file a bug there if you can); the
> workaround is creating that desktop file, or naming it that way in packages.

Renaming the desktop file does not make any difference. I will email commercial support for MATLAB but frankly I do not hold much hope.

> 
> Colin: Maybe there's another improvement the Shell could get here: even if the
> .desktop file is missing, windows should be grouped correctly according to
> their WM_CLASS. Currently, it seems that all windows grouping is lost when it's
> missing. I suspect that's because ShellAppTracker doesn't create an item for
> this app. It should probably create a dummy item. (We've already seen this
> problem with other programs lacking a correct WM_CLASS.)
Comment 3 Milan Bouchet-Valat 2011-06-01 09:11:59 UTC
If my trick doesn't work, there's something weird going on, and there's no point in contacting MATLAB for now.

But I find it weird it doesn't work. Have you restarted the Shell after renaming the .desktop file? I don't remember whether it's needed or not.
Comment 4 John Stowers 2011-06-01 10:05:45 UTC
(In reply to comment #3)
> If my trick doesn't work, there's something weird going on, and there's no
> point in contacting MATLAB for now.
> 
> But I find it weird it doesn't work. Have you restarted the Shell after
> renaming the .desktop file? I don't remember whether it's needed or not.

Yeah, a restart of the shell does not make any difference. I suspect that is also changes WM_CLASS after startup is finished. When first started MATLAB shows a splash screen with the following props


XKLAVIER_STATE(INTEGER) = 0, 0
_NET_WM_STATE(ATOM) = 
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 32, 2
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
WM_CLIENT_LEADER(WINDOW): window id # 0x240000c
WM_LOCALE_NAME(STRING) = "en_NZ.utf8"
WM_CLASS(STRING) = "MATLAB", "MATLAB"
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: True
		Initial state is Normal State.
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified location: 442, 125
		program specified size: 394 by 394
		window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "nzjrs-netbook"
WM_ICON_NAME(STRING) = "MATLAB"
WM_NAME(STRING) = "MATLAB"

A special hack for matlab would be much appreciated (or the ability to add such hacks via extension, they used to be in C IIRC) - MATLAB is ubiquitous in education/science/engineering
Comment 5 Milan Bouchet-Valat 2011-06-01 10:34:21 UTC
Ah, good catch! If it changes WM_CLASS dynamically, then a recent commit should improve things. See bug 649315. Were you using the Shell from git? If not, would be worth trying.
Comment 6 Colin Macdonald 2011-12-29 15:19:04 UTC
This is still true on gnome-shell 3.2 (Fedora 16).  Very frustrating with a dozen matlab figures open and my dash ends up with tiny little icons.  It also means the application-based alt-tab is difficult to use.

I've tried messing around with various com-mathworks-util-PostVMInit.desktop files including various settings to StartupWMClass=com-mathworks-util-PostVMInit, StartupWMClass=MATLAB, etc.

Happy to help debug if possible.  I spend a few minutes looking at the gnome-shell source but I can't even find which js file is responsible for window matching.(looking at the patch in 651014 suggests its in the C code).
Comment 7 Milan Bouchet-Valat 2011-12-29 20:52:28 UTC
What does 'xprop' run on the MATLAB window say? Still the same?

It would be good to file a bug against MATLAB, anyway.
Comment 8 John Stowers 2011-12-29 21:31:32 UTC
(In reply to comment #7)
> What does 'xprop' run on the MATLAB window say? Still the same?
> 
> It would be good to file a bug against MATLAB, anyway.

What should the bug say exactly? If you tell me, I will file it.

I think it is worth working around - old MATLAB versions persist in use for a long time (because depending on your university/company/cod/ upgrading can be daunting and prohibitively expensive)
Comment 9 Colin Macdonald 2011-12-29 21:57:31 UTC
Here are four different xprops.  I think it looks similar to the OP.

*** Startup splash screen ***
XKLAVIER_STATE(INTEGER) = 0, 0
_NET_WM_STATE(ATOM) = 
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 25, 2
_NET_WM_DESKTOP(CARDINAL) = 4
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_MESSAGES(ATOM) = _MOTIF_WM_OFFSET
WM_PROTOCOLS(ATOM): protocols  _MOTIF_WM_MESSAGES, WM_DELETE_WINDOW
WM_CLIENT_LEADER(WINDOW): window id # 0x300000c
WM_LOCALE_NAME(STRING) = "en_US.utf8"
WM_CLASS(STRING) = "MATLAB", "MATLAB"
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: True
		Initial state is Normal State.
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified location: 439, 141
		program specified size: 400 by 400
		window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "aconite.localdomain"
WM_ICON_NAME(STRING) = "MATLAB"
WM_NAME(STRING) = "MATLAB"

--------------------------------------------------------

*** Main matlab window ("matlab -desktop", not all users will see this) ***
XKLAVIER_STATE(INTEGER) = 0, 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 4
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x1, 0x1, 0x0, 0x0
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0x3e, 0x0, 0x40, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
XdndAware(ATOM) = BITMAP
_NET_WM_STATE(ATOM) = 
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 25, 2
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 321, 178
		program specified location: 321, 178
		program specified size: 742 by 499
		window gravity: NorthWest
_NET_WM_ICON(CARDINAL) = 	Icon (32 x 32):

---8<---

WM_PROTOCOLS(ATOM): protocols  WM_TAKE_FOCUS, WM_DELETE_WINDOW
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
WM_CLIENT_LEADER(WINDOW): window id # 0x440002f
_NET_WM_ICON_NAME(UTF8_STRING) = "MATLAB  R2011b"
WM_ICON_NAME(STRING) = "MATLAB  R2011b"
_NET_WM_NAME(UTF8_STRING) = "MATLAB  R2011b"
WM_NAME(STRING) = "MATLAB  R2011b"


--------------------------------------------------------

*** a matlab figure window (I would typically have lots of these) ***
XKLAVIER_STATE(INTEGER) = 0, 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 4
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x1, 0x1, 0x0, 0x0
_NET_WM_STATE(ATOM) = 
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 349, 15
		program specified location: 349, 15
		program specified size: 560 by 475
		window gravity: NorthWest
_NET_WM_ICON(CARDINAL) = 	Icon (48 x 48):

--- 8< ----

_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 25, 2
WM_PROTOCOLS(ATOM): protocols  WM_TAKE_FOCUS, WM_DELETE_WINDOW
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
WM_CLIENT_LEADER(WINDOW): window id # 0x440002f
_NET_WM_ICON_NAME(UTF8_STRING) = "Figure 1"
WM_ICON_NAME(STRING) = "Figure 1"
_NET_WM_NAME(UTF8_STRING) = "Figure 1"
WM_NAME(STRING) = "Figure 1"


--------------------------------------------------------

*** a matlab editor (I never use this but many people will) ***
XKLAVIER_STATE(INTEGER) = 0, 0
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_WM_DESKTOP(CARDINAL) = 4
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x1, 0x1, 0x0, 0x0
_MOTIF_DRAG_RECEIVER_INFO(_MOTIF_DRAG_RECEIVER_INFO) = 0x6c, 0x0, 0x5, 0x0, 0xeb, 0x0, 0x40, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0
XdndAware(ATOM) = BITMAP
_NET_FRAME_EXTENTS(CARDINAL) = 1, 1, 25, 2
_NET_WM_STATE(ATOM) = 
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		user specified location: 53, 68
		program specified location: 53, 68
		program specified size: 780 by 490
		window gravity: NorthWest
_NET_WM_ICON(CARDINAL) = 	Icon (48 x 48):

--- 8< ---	                                                

WM_PROTOCOLS(ATOM): protocols  WM_TAKE_FOCUS, WM_DELETE_WINDOW
WM_CLASS(STRING) = "sun-awt-X11-XFramePeer", "com-mathworks-util-PostVMInit"
WM_CLIENT_LEADER(WINDOW): window id # 0x440002f
_NET_WM_ICON_NAME(UTF8_STRING) = "Editor - /home/cbm/cbm_interp1.m"
WM_ICON_NAME(STRING) = "Editor - /home/cbm/cbm_interp1.m"
_NET_WM_NAME(UTF8_STRING) = "Editor - /home/cbm/cbm_interp1.m"
WM_NAME(STRING) = "Editor - /home/cbm/cbm_interp1.m"
Comment 10 Colin Macdonald 2011-12-29 23:16:29 UTC
I have a workaround!  short version: the .desktop file needs to be all lowercase.  (i.e., not what is output from xprop).

I read the source code (shell-window-tracker.c) further and put in some debugging codes.  Basically the matlab windows always hit the "last resort" case of get_app_for_window().

Is the lowercase thing a gnome-shell bug or is it supposed to be that way?  If creating a .desktop file based on WM_CLASS of xprop is a common workaround, then this would be easy to miss.
Comment 11 John Stowers 2011-12-29 23:24:27 UTC
(In reply to comment #10)
> I have a workaround!  short version: the .desktop file needs to be all
> lowercase.  (i.e., not what is output from xprop).

So what is the name?

com-mathworks-util-postvminit.desktop 
matlab.desktop

?
Comment 12 John Stowers 2011-12-29 23:28:02 UTC
Actually, I can confirm that naming the desktop file

com-mathworks-util-postvminit.desktop

seems to work. Thanks
Comment 13 Milan Bouchet-Valat 2011-12-29 23:31:50 UTC
Good catch!

(In reply to comment #10)
> Is the lowercase thing a gnome-shell bug or is it supposed to be that way?  If
> creating a .desktop file based on WM_CLASS of xprop is a common workaround,
> then this would be easy to miss.
I don't think that's really intended. It would be easy to convert both strings to lowercase before comparing them. Actually, since you found the code that compares the strings, you can probably write a small patch. ;-)


(In reply to comment #8)
> What should the bug say exactly? If you tell me, I will file it.
They should use a correct WM_CLASS, in their case the most logical name would be MATLAB, just like they do for the splashscreen. But the only requirement is that the .desktop file uses the same string as the second WM_CLASS string (which is currently com-mathworks-util-PostVMInit).
Comment 14 Colin Macdonald 2011-12-29 23:37:26 UTC
Created attachment 204333 [details]
com-mathworks-util-postvminit.desktop

Instructions for anyone who gets here looking for the workaround:

Save this .desktop file in ${HOME}/.local/share/applications (or /usr/local/share/applications).  It must be all lowercase.

You can get a nice icon from http://www.mathworks.com/matlabcentral/fileexchange/24085
Comment 15 Jasper St. Pierre (not reading bugmail) 2011-12-29 23:37:46 UTC
It's at least mentioned in a drive-by comment in https://live.gnome.org/GnomeShell/ApplicationBased

For some reason apps usually have capitalized WM_CLASS, and the desktop files are lower-case.
Comment 16 John Stowers 2011-12-29 23:40:17 UTC
(In reply to comment #15)
> It's at least mentioned in a drive-by comment in
> https://live.gnome.org/GnomeShell/ApplicationBased

That page says "n.b. case is not important"
Comment 17 John Stowers 2011-12-29 23:54:48 UTC
(In reply to comment #16)
> (In reply to comment #15)
> > It's at least mentioned in a drive-by comment in
> > https://live.gnome.org/GnomeShell/ApplicationBased
> 
> That page says "n.b. case is not important"

Meh. I corrected this. I guess it's more correct now, on account of it working...
Comment 18 Colin Macdonald 2011-12-30 00:18:49 UTC
Bug #667011 for the lowercase/uppercase thing.
Comment 19 Milan Bouchet-Valat 2011-12-30 09:51:42 UTC
OK, thanks for the debugging. I'm closing this report as it's about a problem in MATLAB, but let's keep the new one open for the part that should be fixed in the Shell (lowercase/uppercase issue). If you file a bug against MATLAB, please post the link here for reference.
Comment 20 John Stowers 2011-12-30 11:34:34 UTC
@Colin,

Does R2011 even install a desktop file? I don't remember if R2009 does or if I created it manually.

@Milan,

Can a workaround be added that aliases bla-bla-postvminit.desktop to matlab.desktop (or whatever desktop file matlab installs)?

As I said, the life-cycle of matlab is quite long, in addition to the low likelihood of this proprietary application fixing this minor bug report within some finite time.

IIRC there used to be work arounds for OOo, and that had a much higher chance of getting fixed (and a shorter life-cycle).
Comment 21 Colin Macdonald 2011-12-30 13:36:58 UTC
@John,

AFAIK, matlab doesn't install a matlab.desktop.

If one also creates a matlab.desktop file, then that will match the matlab splash screen.  Which will give it a nice icon on the dash but otherwise doesn't seem to do much (note that its a separate icon on the dash then the eventual matlab window and figures).

----

I just tested with GNU Octave and it has a similar problem, each figure window has a WM_CLASS of "FLTK" (using the fltk backend).  With gnuplot backend, there is not WM_CLASS (!).  I'll file a bug with octave---lets get our own house in order before we worry about the proprietary folks :-)

Ipython 0.12 seems to work (i.e., matplotlib figures share a single dash item).

----

@Milan, are there any plans for a "quirks" db to handle various old applications?  E.g., that could feed into the window tracker "heuristics" function.
Comment 22 Colin Macdonald 2011-12-30 14:05:05 UTC
Here's the octave bug:
http://savannah.gnu.org/bugs/index.php?35199
Comment 23 Milan Bouchet-Valat 2011-12-30 15:58:15 UTC
I'm really not the one deciding whether or not quirks should be added for specific applications, but we've never done this in the past, except for LibreOffice. The latter is a little special since a failure to detect it means Writer can appear as Draw, etc.

Personally, I'm not opposed to it at all, but you should ask walters on IRC.