Dear Marc and Kasper, I already know how to test whether the Rcmdr is running under Mac OS X and to test whether X11 is installed. But AFAICS there is no way for me to run this code in the Rcmdr package at startup *before* tcltk fails to load -- I did try to do this, both in .onLoad() and in .onAttach().
I thought that I'd made this problem clear in my initial message but apparently I hadn't. I'd be happy if someone proved me wrong by showing me another way to intercept the problem on startup of the Rcmdr package, but I think that the fix has to go into tcltk, as Kasper suggests. Best, John > -----Original Message----- > From: Marc Schwartz [mailto:marc_schwa...@me.com] > Sent: Monday, July 14, 2014 6:33 PM > To: Kasper Daniel Hansen > Cc: John Fox; urba...@research.att.com; r-sig-mac@r-project.org > Subject: Re: [R-SIG-Mac] Mac OS X tcltk/X11 issues > > Kasper, > > Understood. I was not sure if there was someplace in John's startup > code that might catch it early on before tcltk loads, but that may be > confounded by the sequence of the package import process as John notes > below. > > Reading R-exts and the related help files does not make it clear to me > that there is a window of opportunity to run the check before the > import occurs, but I would defer to Simon et al on the finer points > here. > > Regards, > > Marc > > > On Jul 14, 2014, at 5:07 PM, Kasper Daniel Hansen > <kasperdanielhan...@gmail.com> wrote: > > > 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 <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 > > > _______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-mac