Изменить тему Emacs 24 в зависимости от подключенных мониторов
Я использую Emacs 24 на своем работающем ноутбуке Ubuntu Linux, который обычно подключается к очень хорошему внешнему монитору, где мне нравится одна цветовая тема (с использованием deftheme). Но когда я в дороге, мне нравится еще одна тема.
Как я могу заставить Emacs прослушивать события подключения и соответственно устанавливать тему?
1 ответ
Я сомневаюсь, что есть простой способ реагировать на изменения конфигурации дисплея. В Linux вам может посчастливиться найти службу DBus, которая сигнализирует о таких изменениях, на которые вы можете реагировать с помощью библиотеки Emacs D-Bus, но в OS X и Windows я сомневаюсь, что существует такой простой способ.
Возможно, вам будет лучше с простой связью клавиш, которая переключается между вашими двумя любимыми темами:
(defvar my-current-theme nil
"The last used theme.")
(defun my-toggle-themes ()
"Toggle between my favorite themes."
(let ((new-theme (if (eq my-current-theme 'solarized-light)
'zenburn 'solarized-light)))
(load-theme new-theme :no-confirm)
(setq my-current-theme new-theme)))
(global-set-key (kbd "C-c t") #'my-toggle-themes)