X composite と xcompmgr + transset

Windows 環境はできるだけ簡素に、Linux 環境は逆に過度な装飾をしまくるポリシーなので当然影つきスケスケウィンドウはやってみたいわけであり

/usr/lib/X11/xorg.conf

Section "Extensions"
    Option "DAMAGE" "Enable"
    Option "Composite" "Enable"
    Option "RENDER" "Enable"
EndSection

(↑/etc/X11にさっさとリンク張れよと思うんだけどめんどくさいので/usr/lib/X11のまま)

必要なツール

xcompmgr 1.1.1
transset-df 5
transset-dfは本家transsetの機能強化版みたいな感じ?本家transsetのパッケージが見付からないからこっちを入れた

試用


$ xcompmgr xcompmgr -cCfF -r5 -o.65 -l0 -t0 -D3 &
$ trannset-df 0.7
(透け透けにしたいウィンドウをクリック)
Set Property to 0.7

xcompmgrのオプションは--helpに書いてある。そんな難しくないけどわかんないのもあった

  • -c: 枠に影
  • -C: dock/panel系のウィンドウには影つけない
  • -f: フェードイン/アウト
  • -F: 透過度を変えたときもフェード
  • -r: 影半径
  • -o: 影透過度
  • -l: 左方向の影のずらし(マイナス指定で下へ)
  • -t: 上方向の影のずらし(マイナス指定で右へ)
  • -I: フェードインのコマ?
  • -O: フェードアウトのコマ?
  • -D: フェードのコマ速度(ミリ秒)

運用

でも毎回それやってるとめんどくさいからターミナルエミュレータにしぼって自動的にやってくれるようにする。KDEとかだともっと簡単なのかな。しかしデスクトップ環境使う気にはならない
.xsessionに追加

xcompmgr -cCfF -r5 -o.65 -l0 -t0 -D3 &

こんなシェルスクリプトを作る。俺はmltermを常用してるので適宜読みかえてね
mlterm-tp

#!/bin/sh
mlterm -L &
sleep 1 && transset-df -i $(xwininfo -root -tree -int|grep mlterm|cut -f 9 -d " "|sort|tail -n1)  0.7

xwininfo -name ウィンドウ名 ってしたときに、ウィンドウ名 が同じのふたつ以上存在するとき、ひとつ分しか表示してくれないのが困った。-root -treeすると全ウィンドウの分がでるからそこから必要なIDを抽出してtranssetにかける
実行権限つけてやるとmlterm起動したあとそのmltermだけが半透明に。

感想

重い重いと言われているけどあまり重い気はしない。重いことよりも、定期的に表示が破滅するのが困る
killall xcompmgr && xcompmgr & をすれば復活してくれるから、それをWMのメニューに組み込んでおいた
他に、WMのメニューにtransset-df .? を入れておくと便利
背景コピペの透過じゃないちゃんとした透過ができて、なんかとても未来っぽくなったので満足
f:id:ishn:20061124023804j:image:w200
課題: 前に入れたconky、起動するとrootウィンドウに対しての影が全滅してしまう。どうしよう
.conkyrc

own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky

こうすればいいらしいけど、wmxでは効果無し。wmx以外ならいけるんかな