Изменить тему 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)
Другие вопросы по тегам