Есть ли способ запуска определенных команд (из 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).
Ответ 3
При использовании emacsclient и frame GUI или режим терминала необязательно является глобальной концепцией. См. Очень полезный ответ на мой вопрос в https://superuser.com/info/165335/how-can-i-show-the-emacs-menu-in-gui-emacs-frames-but-not-in-tty-frames-when-usin.