An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20110616/f57724f6/attachment.pl>
X11 device windows are spawned with empty WM_NAME property
4 messages · Drew Frank, Brian Ripley, Peter Dalgaard
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. 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? 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 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
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
On Jun 17, 2011, at 15:32 , Prof Brian Ripley wrote:
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.
Well, "yes, maybe", I'd say. If the WM insists on looking at the title, it makes some pragmatic sense for the user to set it to a generic name that the WM can recognize. However, on revisiting this, the obvious fix/workaround is just to set X11.options(title="R Graphics: Device %d") and the user can do this in his/her startup files. No need to inflict it on every user with any WM.
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