Emacs から tmux と iTerm2 の Solarized を切り替える
ここのところずっとカラーテーマに Solarized を使っているのですが、明るい昼に紺背景の Solarized Dark を使うと少し映り込みが気になりますし、逆に暗い夜に Solarized Light はまぶしすぎます。時間帯によって使い分けたいところなのですが、今の環境では iTerm, tmux, Emacs とそれぞれを切り替えなくてはならなくて、毎日やることを考えるとちょっと面倒です。
ということで Emacs から一発で三つとも変更できるようにしました。
Emacs
Emacs だけなら普通ですね。Emacs 24 の Color Theme 機能を使っている場合ですが、23 以前でもできるはず。((color-theme-solarized-[dark|light])
)
(defun light-theme () (interactive) (load-theme 'solarized-light t)) (defun dark-theme () (interactive) (load-theme 'solarized-dark t))
M-x dark-theme
(light-theme
) RET で切り替わります。
tmux も
色の設定を別にして tmux source-file
で読み込みます。
(defun light-theme () (interactive) (load-theme 'solarized-light t) (shell-command "tmux source-file ~/.tmux/solarized-light.conf")) (defun dark-theme () (interactive) (load-theme 'solarized-dark t) (shell-command "tmux source-file ~/.tmux/solarized-dark.conf"))
iTerm2 も
iTerm2 は AppleScript で設定を変更できるのですが、どうやらカラープリセットのロードには対応していないようです。とはいえ Solarized の Dark と Light を切り替えるだけなので、Basic Colors だけ変えれば OK。ググって見つけた AppleScript を使わせてもらいます: Dark / Light
完成
(defun light-theme () (interactive) (load-theme 'solarized-light t) (shell-command "tmux source-file ~/.tmux/solarized-light.conf") (shell-command "osascript ~/.iterm/solarized-light.scpt")) (defun dark-theme () (interactive) (load-theme 'solarized-dark t) (shell-command "tmux source-file ~/.tmux/solarized-dark.conf") (shell-command "osascript ~/.iterm/solarized-dark.scpt"))
Emacs のテーマは開いている Emacs の分だけ変更を繰り返さなくてはなりませんが、まあそれはしょうがない。