Как заставить emacsclient использовать разные темы в терминале и окне X?
Иногда я использую emacsclient -t -a ''
в Xterm, а иногда я использую emacsclient -c
как приложение с графическим интерфейсом. Что меня раздражает, так это то, что настройки шрифта и цветовая тема инициализируются при запуске сервера emacs, поэтому window-system
тест не вступает в силу.
Так есть ли какие-либо функции, которые я могу использовать, чтобы позволить emacsclient выбирать настройки лица?
Благодарю.
3 ответа
Попробуйте следовать этому посту, они говорят о похожей проблеме.
Вот отрывки из поста (хотя я сам не пробовал):
;; last t is for NO-ENABLE
(load-theme 'tango t t)
(load-theme 'tango-dark t t)
(defun mb/pick-color-theme (frame)
(select-frame frame)
(if (window-system frame)
(progn
(disable-theme 'tango-dark) ; in case it was active
(enable-theme 'tango))
(progn
(disable-theme 'tango) ; in case it was active
(enable-theme 'tango-dark))))
(add-hook 'after-make-frame-functions 'mb/pick-color-theme)
;; For when started with emacs or emacs -nw rather than emacs --daemon
(if window-system
(enable-theme 'tango)
(enable-theme 'tango-dark))
если все идет хорошо, это должно выглядеть так:
Как уже упоминалось на https://www.emacswiki.org/emacs/CustomizingFaces
"Если вам нужны разные цветовые схемы для разных дисплеев, вы также можете настроить это. В буфере настройки нажмите кнопку [State] и выберите" Показать все характеристики дисплея ". Теперь вы можете использовать разные спецификации для разных дисплеев".
Для меня в основном цвет фона был проблемой.
Вот минимальный вариант для настройки default
цвет фона лица к черному, когда рамка является tty:
(custom-set-faces
'(default (
(((type tty) (min-colors 256))
(:background "black"))
(t
(:background "#181a26")))
))
black
соответствует только при отображении на tty
с 256 цветами или меньше. По умолчанию в качестве фона используется особый оттенок синего.
Та же самая техника может использоваться для всех других лиц, а не только для default
лицо.