Basically John is asking for code like this to be included in tcltk. Best, Kasper
On Mon, Jul 14, 2014 at 11:53 PM, Marc Schwartz <marc_schwa...@me.com> wrote: > On Jul 14, 2014, at 4:13 PM, John Fox <j...@mcmaster.ca> wrote: > > > Dear Simon and list members, > > > > As many of you are aware, when X11 isn't installed on Mac OS X, loading > the > > tcltk package produces an error, with a message that many users find > > cryptic. There was yet another instance of this problem reported to the > list > > today. > > > > I'm interested in the issue because the Rcmdr package uses tcltk and thus > > fails to load when X11 is absent. Rcmdr users tend to be inexperienced > and > > so, unless they find their way to the Rcmdr installation webpage, where > > detailed installation instructions are provided, they tend to be stymied > by > > the problem. > > > > If I could, I'd intercept the problem by checking capabilities()["X11"] > in > > the Rcmdr .onLoad() or .onAttach() function, but because the Rcmdr > package > > imports the tcltk namespace, the error occurs before these startup > functions > > are executed -- a chicken-and-egg problem. > > > > It occurs to me that tcltk could fail more gracefully on Mac OS X when > X11 > > is absent, perhaps popping up a webpage in a browser with instructions > and a > > link for installing XQuartz. I'd do this myself in the Rcmdr package if I > > could. Or tcltk could check for the presence of X11 and not try to start > it > > if it's absent, reporting a warning rather than throwing an error. > > > > Alternatively, I'd be grateful if someone could suggest how I might > detect > > the problem in the Rcmdr package before loading fails. The only thing > that I > > could think of was writing a separate RcmdrInstall package that bypasses > > tcltk, but that would be awkward and would only help users who discovered > > that RcmdrInstall exists. > > > > Thanks, > > John > > > John, > > Is there someplace in your startup process where you could run code along > the lines of: > > if (grepl("apple", R.version$platform) & length(list.files("/opt/X11/bin", > pattern = "Xquartz")) == 0) { > cat("X11 is required. Please visit http://xquartz.macosforge.org to > download and install Xquartz.") > stop() > } > > > The above code will check to see if the user is running R on OS X and also > if the Xquartz binary is present in the default location. > > Not sure if this is helpful. > > Regards, > > Marc Schwartz > > _______________________________________________ > R-SIG-Mac mailing list > R-SIG-Mac@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-sig-mac > [[alternative HTML version deleted]] _______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-mac