[Rd] x11 icon and class

Philip Johnson plfjohnson at emory.edu
Wed Jun 13 23:50:49 CEST 2012

On 06/12/2012 03:50 PM, Davor Cubranic wrote:
> On 2012-06-07, at 12:05 PM, Philip Johnson wrote:
>> The X11 device driver does not provide the X window manager with an icon (_NET_WM_ICON) or, under some circumstances, with a class (WM_CLASS). This hinders usability under the new stable version of Ubuntu, which has a (new) user interface centered around icons.
>> [...]
>>   2) WM_CLASS (for reasons unclear to me, previously WM_CLASS was only set #ifndef USE_Xt)
> A few comments in the bug database give a hint why this is conditional (http://bugs.r-project.org/bugzilla3/show_bug.cgi?id=14588):
> (1) "resources are only handled in the Xt case" (comment #1)
> (2) "Still no explanation as to why Xt is not used, and this should be conditional on that case." (comment #3)

True, however, as far as I could tell, these comments do not apply to 
the current code for the following reasons:

(1) ./configure --with-x requires that Xt be present
(2) devX11.c includes a line "#define USE_Xt 1" -- implying that Xt is 
*always* used if compiling for X11
(3) Xt* functions are only used in a single small block in the code, and 
no windows are created in that code -- and thus no X resources are EVER 
set.  I *think* that the only purpose of this code is to test whether 
the window manager allows the user to specify window position and size. 
  But these fields in XSizeHints are noted in the current man pages as 
"obsolete and left solely for compatibility reasons".
(4) deleting all Xt code makes no discernable difference in the device 
driver behaviour on my (admittedly modern) linux distribution.

> Now that GUI libraries typically don't rely on Xt any more (e.g., Gtk), but WM_CLASS (and possibly other resources) are still used by window managers, it arguably makes sense for the X11 driver to always set this property.

This is my argument in a nutshell.  I understand there is a general 
reluctance to delete old code because it might still be used on an old 
system somewhere, but I think my proposed change would only be adding 
functionality, not removing it.

After I sent the patch, I discovered that the integration with the new 
Ubuntu interface works even better if WM_CLASS matches the name of the 
executable -- i.e. if the class were "R" rather than "R_x11".  I don't 
want to spam this list, but I am happy to send a revised patch if asked.


More information about the R-devel mailing list