根据连接的监视器更改Emacs 24主题

根据连接的监视器更改Emacs 24主题,emacs,dbus,Emacs,Dbus,我在运行UbuntuLinux的笔记本电脑上使用Emacs24,它通常连接到一个非常好的外部显示器,在那里我喜欢一个颜色主题(使用deftheme)。但是当我在路上的时候,我喜欢另一个主题 如何使Emacs侦听监视器连接事件,并相应地设置主题?我怀疑是否有一种简单的方法可以对显示器配置的更改做出反应。在Linux上,您可能很幸运地找到了一个DBus服务,它可以发出这种变化的信号,您可以通过这种方式做出反应,但在OSX和Windows上,我怀疑是否有这么简单的方法 您最好使用一个简单的键绑定,在两

我在运行UbuntuLinux的笔记本电脑上使用Emacs24,它通常连接到一个非常好的外部显示器,在那里我喜欢一个颜色主题(使用deftheme)。但是当我在路上的时候,我喜欢另一个主题


如何使Emacs侦听监视器连接事件,并相应地设置主题?

我怀疑是否有一种简单的方法可以对显示器配置的更改做出反应。在Linux上,您可能很幸运地找到了一个DBus服务,它可以发出这种变化的信号,您可以通过这种方式做出反应,但在OSX和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)