Skip to content

Determine GUI status

4 messages · Steven McKinney, Byron Ellis, stefano iacus +1 more

#
Is there a way to programatically
check whether the R session is
running with R.app (versus, say
running in Emacs ESS mode in an
Emacs buffer)?

I'd like to programatically decide on
appropriate plot devices etc.

I've checked Sys.info() and related functions
but I'm not noticing R.app info in
any returned fields.  Either I missed
something or I haven't found the right
function call yet. 

Any info appreciated.


Best

Steven McKinney

Statistician
Molecular Oncology and Breast Cancer Program
British Columbia Cancer Research Centre

email: smckinney at bccrc.ca

tel: 604-675-8000 x7561

BCCRC
Molecular Oncology
675 West 10th Ave, Floor 4
Vancouver B.C. 
V5Z 1L3
Canada
#
Yes. When you're running R as an Emacs slave process (via ESS for
example), Emacs will set an environment variable EMACS=t that you can
test with Sys.getenv(). To detect a Terminal versus R.app, the
Terminal application will generally set the TERM and TERM_PROGRAM
environment variables, which are generally not set under R.app. This
breaks down if the user starts the R GUI from the command line, but
there (at least under Tiger+) you'll find that an environment variable
"_" has been set that is not present in either the normal Terminal
startup or the normal R.app startup.
On 5/4/07, Steven McKinney <smckinney at bccrc.ca> wrote:

  
    
#
check for .Platform$GUI=="AQUA"

stefano
On 05/mag/07, at 04:02, Steven McKinney wrote:

            
1 day later
#
On May 4, 2007, at 10:02 PM, Steven McKinney wrote:

            
try
if (nchar(Sys.getenv("R_GUI_APP_VERSION")))

R.app will always set R_GUI_APP_VERSION to the version of the GUI.
R.app is just an application embedding R, but Sys.info comes from R  
itself, so it cannot reflect the status of the R.app.
There is currently no documented function for this, but I'll add  
something ... (BTW an indirect check is also "tools:RGUI" %in% search 
() but that is not guaranteed to not go away)

Cheers,
Simon

PS: .Platform$GUI=="AQUA" is not limited to R.app, it includes other  
Mac GUIs as well, but is also a good estimate