Запуск некоторых команд Emacs init только в режиме графического интерфейса пользователя

Есть ли способ запуска определенных команд (из init.el) только в режиме GUI, а не в режиме терминала. Я хочу установить определенную цветовую схему при запуске GUI-версии, но эта схема довольно сильно замаскирует цвета окна терминала. Я ищу некоторую переменную/функцию, которая будет выглядеть примерно так:

(if gui-mode (color-scheme-blah))

или

(unless terminal-mode (color-scheme-blah))

Ответ 1

Вы хотите что-то вроде

(if window-system (color-scheme-blah))

window-system может быть 'x или 'mswindows или, возможно, даже другие значения, но всегда nil, когда вы находитесь на терминале.

Ответ 2

Чтобы в целом проверить графический дисплей, вы хотите использовать следующее:

(display-graphic-p &optional DISPLAY)

Возвращает non-nil, если DISPLAY - графический дисплей. Использование, например, переменной window-system также работает, но требует от вас ссылки на определенную среду (например, X или Microsoft Windows).