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
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)
nil)
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– mclearMay 27, 2017 at 22:06 -
@mclear Note that
(if (not <cond>) <then>)
is equivalent to(unless <cond> <then>)
.– BasilMay 28, 2017 at 14:54