Hi I'm asking this question because this;[1]: Different theme for -nw (terminal) and few others didn't work for me. Allright, first of all I am not a programmer/devoloper, and I don't know lisp (thinking about learning it, but too busy). The problem I encountered is when I use emacs on gui with standart theme, it hurts my eyes, and the theme is just ugly. But when I use it on terminal (emacs -nw with no theme) it is beautiful because of the terminal theme/compton etc. Sometimes I have to use gui for a quick edit on desktop files or some other files, I'd like to ask you, how can I achive, to run emacs with some theme when on gui, and no theme on terminal.[2]: https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Feature-Testing.html I've seen this part of gnu/emacs manual, I understood what the "display-graphic-p" and "if" codes do but not sure how to use it, because I don't want any other theme to load on emacs when I use it on terminal.

1 Answer 1


It sounds like you want the following?

(when (display-graphic-p)
  (enable-theme 'solarized))

You can replace 'solarized with another theme.

p.s. This when expression is equivalent to an if with a "do nothing" else clause:

(if (display-graphic-p)
    (enable-theme 'solarized)

Emacs Lisp also lets you write a "one armed if":

(if (display-graphic-p)
    (enable-theme 'solarized))

But some people (like me) think it's clearer to use when -- to emphasize that the expression is "for effect" not "for result".

  • Thank you for the explenation of codes, I really appreciate it. I couldn't make it work though. I managed to load the theme by inserting custom enabled themes "wombat" or "zenburn" but now, the theme loads on terminal too, can not prevent this. May 27, 2017 at 20:49
  • you should then have something like: (if (not (display-graphic-p)) (load-theme 'desired-theme t)) in order to load the right theme on terminal
    – mclear
    May 27, 2017 at 22:06
  • @mclear Note that (if (not <cond>) <then>) is equivalent to (unless <cond> <then>).
    – Basil
    May 28, 2017 at 14:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.