如何让 emacsclient 在终端和 X 窗口中使用不同的主题?

如何让 emacsclient 在终端和 X 窗口中使用不同的主题?

有时我emacsclient -t -a ''在 xterm 中使用,有时我将其用作emacsclient -cGUI 应用程序。让我恼火的是,字体设置和颜色主题在 emacs 服务器启动时初始化,因此测试window-system不会生效。

那么,有什么功能可以利用来让 emacsclient 选择面部设置吗?

谢谢。

答案1

尝试跟随这个帖子,他们正在谈论类似的问题。

以下是该文章的片段(但我自己没有尝试过):

  ;; 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))

如果一切顺利的话,它看起来应该是这样的:这

答案2

正如所提到的 https://www.emacswiki.org/emacs/CustomizingFaces

“如果您想要为不同的显示器使用不同的配色方案,您也可以自定义它。在自定义缓冲区中,单击 [状态] 按钮并选择“显示所有显示规格”。现在您可以为不同的显示器使用不同的规格。”

答案3

对我来说,主要是背景颜色是一个问题。

这是一个最小的变体,用于自定义default脸部的背景颜色黑色的当框架是tty时:

(custom-set-faces
 '(default (
            (((type tty) (min-colors 256))
             (:background "black"))
            (t
             (:background "#181a26")))
    ))

black仅在 256 种颜色或更少的颜色上显示时才匹配tty。默认情况下,使用特殊蓝色阴影作为背景颜色。

相同的技术不仅适用于脸部,也适用于所有其他脸部default

相关内容