web-dev-qa-db-ja.com

emacsclientがターミナルとXウィンドウで異なるテーマを使用するようにするにはどうすればよいですか?

Xtermでemacsclient -t -a ''を使用することもあれば、GUIアプリケーションとしてemacsclient -cを使用することもあります。私を悩ませているのは、emacsサーバーの起動時にフォント設定とカラーテーマが初期化されるため、window-systemテストが有効にならないことです。

それで、emacsclientに顔の設定を選択させるために利用できる機能はありますか?

ありがとう。

7
Hongxu Chen

フォローしてみてください この投稿 、彼らは同様の問題について話している。

これが投稿の抜粋です(私は自分で試しませんでした):

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

すべてがうまくいけば、次のようになります。 this

5
Shlomi

https://www.emacswiki.org/emacs/CustomizingFaces で述べたように

「ディスプレイごとに異なる配色が必要な場合は、これもカスタマイズできます。カスタマイズバッファーで、[状態]ボタンをクリックし、[すべてのディスプレイ仕様を表示]を選択します。これで、ディスプレイごとに異なる仕様を使用できます。」

1
ernobe

私にとっては、主に背景色が問題でした。

フレームがttyの場合、defaultの顔の背景色をにカスタマイズするための最小限のバリエーションを次に示します。

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

blackは、256色以下のttyに表示された場合にのみ一致します。デフォルトでは、特別な青の色合いが背景色として使用されます。

default面だけでなく、他のすべての面にも同じ手法を使用できます。

0
TheJJ