Henrik Bengtsson
2015-May-06 20:37 UTC
[Rd] capabilities("X11"): Force refresh from within R? (... and minor documentation issue)
Is there a way to refresh capabilities("X11") without restarting R such that it reflects the enabling/disabling of X11? BACKGROUND: If I launch R with X11 server disabled (e.g. ssh -X / ssh -Y to remote Linux but forgot to enable Xming on local Windows), then I get:> capabilities("X11")X11 FALSE> x11()Error in .External2(C_X11, d$display, d$width, d$height, d$pointsize, : unable to start device X11cairo In addition: Warning message: In x11() : unable to open connection to X11 display '' So far so good. However, if I then enable the X11 server (e.g. start Xming on Windows), I still get:> capabilities("X11")X11 FALSE but> x11()successfully opens an X11 plot window. In other words, the value of capabilities("X11") is not reflecting the availability of X11; from ?capabilities: X11: Are the 'X11' graphics device and the X11-based data editor available? This loads the X11 module if not already loaded, and checks that the default display can be contacted unless a 'X11' device has already been used. Not sure what that last "...unless a 'X11' device has already been used" actually means here; is it a disclaimer for the above behavior? If I restart R, the I get:> capabilities("X11")X11 TRUE I came up with the following approach that launches another R session querying the availability of X11: capabilitiesX11 <- function() { bin <- file.path(R.home("bin"), "Rscript") cmd <- "cat(capabilities('X11'))" value <- system2(bin, args=c("-e", dQuote(cmd)), stdout=TRUE) as.logical(value) }> capabilitiesX11()[1] TRUE but it's certainly feels like a hack. Is there a way to force a refresh of capabilities("X11") without restarting R? BTW, the description of ?capabilities says: "Report on the optional features which have been compiled into this build of R." The "compiled into this build" part seems too specific; the above shows that capabilities() also reflects run-time availabilities. Other "properties" does this as well. Thanks, Henrik
Possibly Parallel Threads
- Shouldn't grDevices::quartz() give an error instead of a warning when not available?
- Error while working with png output on linux server
- Error while working with png output on linux server
- Error while working with png output on linux server
- palette() can hang and fail due to X11