From ripley at stats.ox.ac.uk  Fri Jun 17 15:32:58 2011
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Fri, 17 Jun 2011 14:32:58 +0100 (BST)
Subject: [Rd] X11 device windows are spawned with empty WM_NAME property
In-Reply-To: <F3337C24-FAB7-49CB-AC0D-8270BD3FF7B6@gmail.com>
References: <BANLkTimCr6aF6O8DyY+mfTpLr+8MMuvmkA@mail.gmail.com>
	<F3337C24-FAB7-49CB-AC0D-8270BD3FF7B6@gmail.com>
Message-ID: <alpine.LFD.2.02.1106171424170.19460@gannet.stats.ox.ac.uk>

On Fri, 17 Jun 2011, peter dalgaard wrote:

>
> On Jun 17, 2011, at 01:53 , Drew Frank wrote:
>
>> Hello,
>>
>> I've noticed that X11 device windows (the ones that pop up when I plot
>> something on Linux) aren't assigned any WM_NAME property until after they've
>> been spawned.  This causes problems for users of tiling window managers, who
>> may wish to use the WM_NAME property to decide whether to float or tile the
>> window.

That is what the window class property is for .... X11 windows can 
(and R allows) have different names chosen by the user.

>> If I create a plot and then examine the window properties with xprop, I see
>> something like the following: WM_NAME(STRING) = "R Graphics: Device 2
>> (ACTIVE)".  However, by instructing my window manager (xmonad) to float all
>> windows with a matching name, I can tell that when the window was created
>> its WM_NAME property was empty.
>>
>> Is this behavior intended?  Would be it be reasonable to instead create
>> windows with a generic name like "R Graphics" prior to updating them with
>> the device number and active/inactive status?

Yes, no.

>> I'm not familiar with the R code base, but I found that creating a plot
>> results in a call to the function in_do_X11 in the file
>> src/modules/X11/devX11.c.  In that function (around like 2869) there is code

In which version of R?  The codebase for the development version is 
quite different from that in the 2.13.x series ....

>> to parse out the window title from the SEXP args parameter, and it always
>> seems to parse out an empty string.  If I manually assign title="R Graphics"
>> at that point, I am able to successfully float R plot windows based on their
>> WM_NAME. (line numbers based on SVN revision 56131)
>>
>> Is this actually an issue that needs fixing?  Should I create a bug report
>> for this?
>
> A well-tested patch might be considered, but beware of the demons...
>
> Notice that you can actually set the title via X11(title="Foo's 
> bar"). If you do that, it won't display the device number. So (a) 
> you wouldn't want to destroy that feature, and (b) how does the code 
> that inserts the "Device 2" bit know that it can do so? By checking 
> for an empty title? (Yup).
>
> I notice that the initial title string could contain formatting 
> characters, so possibly, what you really want to do is to default it 
> to "R Graphics: Device %d"). Something of the sort is already 
> happening with the quartz() device.
>
>> Thanks,
>> Drew
>>
>> 	[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
> -- 
> Peter Dalgaard
> Center for Statistics, Copenhagen Business School
> Solbjerg Plads 3, 2000 Frederiksberg, Denmark
> Phone: (+45)38153501
> Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] X11 device windows are spawned with empty WM_NAME property
Prof Brian Ripley