Emacs で背景色の透過設定を変更する

Emacs の背景色を黒にして少し透過するように(背面のウィンドウが見えるように)して使っています。自宅や会社の環境ではディスプレイが複数あるので透過させる必要性はそれほどは感じませんが、ノート PC では表示領域に限りがあるためブラウザを確認しながら Emacs でファイルを編集するということが難しい場合があります。

それぞれを左右に並べると Emacs はともかくとして、ブラウザの方は横方向のスクロールを多用せざるを得なくなったりして、使い心地がイマイチです。

そういうときには Emacs の背景を透過させて、前面にある Emacs のウィンドウから背面のブラウザが透けて見えるようにすることで凌ぐというのもひとつの手ではないでしょうか。

これまでは init.el に下記の設定を書いていました。

;; Color
(if window-system (progn
    (set-background-color "Black")
    (set-foreground-color "LightGray")
    (set-cursor-color "Gray")
    (set-frame-parameter nil 'alpha 70) ;透明度
    ))

ただ、これで完璧かというとそうでもなく、もう少し透過させたいときや、逆にブラウザで表示しているページが派手だったりすると Emacs でのファイル編集時に目障りになったりして、透過しないようにしたいという場合もあります。

そのたびに init.el を編集するのは手間ですし、かといってブラウザの方でタブを切り替えたりするのもだいぶ面倒です。Emacs で随時透過設定を変更する方法がないか調べたところ、まさにそういう elisp を公開していらっしゃる方がいました。

;; 透明度を変更するコマンド M-x set-alpha
;; http://qiita.com/marcy@github/items/ba0d018a03381a964f24
(defun set-alpha (alpha-num)
  "set frame parameter 'alpha"
  (interactive "nAlpha: ")
  (set-frame-parameter nil 'alpha (cons alpha-num '(90))))

こうすると M-x set-alpha と入力するとミニバッファで数値の入力を求められ、その都度、好きなように透過度を変更できます。これでまたひとつ Emacs が使いやすくなりました。公開していただいた marcy さん、ありがとうございます!

たった 4 行の elisp で実現できるのですね。elisp については rubikitch さんの本を買ってはいるのですがこれまであまり読んでいませんでした。時間を作って少しずつでもいいからちゃんと勉強しようかな。