Is there a good way (e.g. examining the value of some variable or the existence of some function) for Elisp code to determine whether the current Emacs instance is running as an X11 application?
To quote the documentation:
window-system is a variable defined in `C source code'. Its value is x It is a terminal-local variable; global value is the same.
Documentation: Name of window system through which the selected frame is displayed. The value is a symbol: nil for a termcap frame (a character-only terminal), 'x' for an Emacs frame that is really an X window, 'w32' for an Emacs frame that is a window on MS-Windows display, 'ns' for an Emacs frame on a GNUstep or Macintosh Cocoa display, 'pc' for a direct-write MS-DOS frame.
So you can test like this:
(if (eq window-system 'x) ;; do this in X11 (blah blah blah) ;; otherwise, do this (blah blah blah) )
You can use the function
(display-graphic-p &optional DISPLAY)
Return non-nil if DISPLAY is a graphic display. Graphical displays are those which are capable of displaying several frames and several different fonts at once. This is true for displays that use a window system such as X, and false for text-only terminals. DISPLAY can be a display name, a frame, or nil (meaning the selected frame's display).
Note that use of the variable
window-system is not recommended, from the elisp manual:
Do not use
initial-window-systemas predicates or boolean flag variables, if you want to write code that works differently on text terminals and graphic displays. That is because
window-systemis not a good indicator of Emacs capabilities on a given display type. Instead, use
display-graphic-por any of the other
display-*-ppredicates described in *note Display Feature Testing::.