Skip to content

issues with dev.new avoiding RStudio plot device on unix?

2 messages · Stefan Evert, Duncan Murdoch

#
But not if running from RStudio always causes the X11 check to fail.  If the function is used outside RStudio, there's little point in specifying noRStudioGD=TRUE in the first place.

If you consider the code used to determine whether quartz() or X11() is available

	dsp <- Sys.getenv("DISPLAY")
	if (.Platform$OS.type == "windows")
		windows
	else if (.Platform$GUI == "AQUA" || ((!nzchar(dsp) || grepl("^/tmp/launch-", dsp)) && .Call(C_makeQuartzDefault)))
		quartz
	else if (nzchar(dsp) && .Platform$GUI %in% c("X11", "Tk"))
		X11
	else defdev 

you can see that it checks for a DISPLAY variable and assumes that X11 can be used if it is set.  Wouldn't it be just as safe to add RStudio to the list of accepted .Platform$GUIs?

In my case (Mac OS X 10.10.5), I'd like to get a quartz device.  The problem here is that I have XQuartz installed, so DISPLAY is always set and looks like this

	/private/tmp/com.apple.launchd.2wKas4wzPe/org.macosforge.xquartz:0 

while dev.new() checks for ^/tmp/launch-; I suppose the DISPLAY variable has changed between different versions of Mac OS X or XQuartz.  Perhaps the additional patterns could just be added to the grepl() call?

Best,
Stefan
#
On 03/10/2015 10:28 AM, Stefan Evert wrote:
In my opinion dev.new() and grDevices:::.onLoad are already too
complicated, and that's the cause of the problem.  I'm not going to mess
with them.

For your case, it seems pretty easy for you to set
options(device="quartz") during startup, or R_DEFAULT_DEVICE=quartz
before startup.

Duncan Murdoch