Debian7でEmacsのフレームを半透明にする2014年07月20日 19:48

 Emacsの背景を半透明にして、デスクトップの壁紙が透けて見えれば楽しいかなと思って試してみました。
 Debian7(wheezy)で、GNOMEデスクトップ環境のフォールバックモードで動いているパソコンです。
 ~/.emacs.d/init.elの設定は、(set-frame-parameter nil 'alpha 70)とかすれば出来るらしい。(70は透明度で、値が小さいほど透明に近づく。)
 早速、*scratch*バッファで、(set-frame-parameter nil 'alpha 70)と入力して、)の後ろにカーソルがある状態で、Cntl-jを押してみます。
 「アレッ、半透明にならない!」
 「アプリケーション」→「アクセサリ」→「端末」で起動される端末エミュレータ(gnome-terminal)には、背景を半透明にする機能があるので、こちらも試してみます。端末エミュレータの「編集(E)」→「プロファイルの設定(O)」→「背景タブ」→「透過な画像にする(T)」にチェックを入れました。
 確かに半透明になりました。しかし、何か変です。壁紙が半透明になっているだけで、隣のEmacsが透けて見えないではありませんか。
 この段階での画面は、こんな状態です。
設定前
 執念深く、デスクトップが半透明になる条件をGoogleで探索した結果、2つの条件が必要らしいと判りました。
 ● Xサーバが必要な機能を提供していること
 ● ウインドウマネージャがcomposite機能を提供していること
 Xサーバの情報は、xdpyinfoを実行して確認できるらしい。確認点は、[32bit visual]があること、[32bit pixmap format]が使えること、[Composite,DAMAGE,RENDER]のextensionがすべて有効であること。
 確認の結果、Xサーバについては大丈夫らしいと判断しました。
 ウインドウマネージャについては、「アプリケーション」→「システムツール」→「dconf Editor」で確認と設定が出来ます。
dconfで確認と設定
 org.gnome.metacityを開くと、composite機能にチェックが入っていません。チェックを付けると即効でした。
設定後
 なお、端末エミュレータから、「gsettings set org.gnome.metacity compositing-manager true」を実行しても同じ結果になります。
 gnome-terminalは、ウインドウマネージャのcomposite機能が無効になっている場合、とりあえずGNOMEデスクトップ環境の壁紙を透過しているように見せるようです。
 GNOMEデスクトップ環境のフォールバックモードでは、ウインドウマネージャはmetacityですが、XfceやLXDEでもそれぞれのウインドウマネージャの設定次第で出来るはずです。