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 .? を入れておくと便利
背景コピペの透過じゃないちゃんとした透過ができて、なんかとても未来っぽくなったので満足
課題: 前に入れたconky、起動するとrootウィンドウに対しての影が全滅してしまう。どうしよう
.conkyrc
own_window_type normal own_window_transparent yes own_window_hints undecorated,below,sticky
こうすればいいらしいけど、wmxでは効果無し。wmx以外ならいけるんかな