How to Make "Transparent" Application

我が家では OS と言えば Darwin、ていうか MacOS-X、ウィンドウマネージャ といえば Aqua、これ常識。だからウィンドウに影がついてるのも、タイトル バーが半透明なのも当然。ぜんぜん驚かない。タクでは 6 年前からこれ使っ てますから。

ところがですよ奥さん、ちまたでは Linux とかいう下品な OS が流行ってい るらしいじゃありませんか。それでもって Gnome とかいうセンスもウチワも 無いウィンドウマネージャが幅を効かせているらしいザマス。しかも仮想端末 と言えば xterm か、せいぜい rxvt。root window のイメージを切り貼りして、 「透明ウィンドウゥゥゥ」なんてはしゃいでいる始末。それ透明じゃないじゃ ん。インチキじゃん。駄目じゃん。

そんなあなたもこれを読めば今日から「まぁこのていど動けば、そんなにちゃ んとしてなくてもいいか、文房具なんて*1。そうだな、Linux + X11 + Gnome でいいや、同盟」の仲間入り。

*1) ちゃんと動かないうえに激しく遅く、しかも見栄えも恥ずかしいアレ
    のウィンドウマネージャは論外。
transparent? apps

遊んでやるからやり方教えろという読者へ

  1. xorg.conf に以下の 3 行を追加する。
    Section "Extensions"
    	Option	    "Composite" "Enable"
    EndSection
    
  2. xcompmgr と transset-df をどっかから取ってきて install する。

    これだけで一応作業完了。 transset-df を実行して、てきとーなウィンドウ をマウスでクリックすると、そのウィンドウが "透過的" になる。でもこれで は実用性に乏しいので、display 上の全てのウィンドウを "透過的" にする スクリプトを取ってきて使ってみた。

    が、しかし、全部のウィンドウが "透過的" になると、激しく見づらい。実用 性むしろ低下。で、ワールドワイドな Web 上を探してみると、やはり同じこ とを感じた人がいたようで、マウスフォーカスのあるウィンドウだけは "非透 過的" にするような perl スクリプトが落ちていた。

    これでだいたい使えるようになったんだけど、フォーカスの当たっていないウィ ンドウを全部 "透過的" にするのも馬鹿みたいだ。特に root window 上に置 かれているアイコンなんかを "透過的" にするのは明らかに無駄だ。結局あら かじめ指定したアプリケーションの所有するウィンドウのうち、マウスフォー カスの当たっていないものだけを "透過的" にするようにスクリプトを改造し た。

  3. というわけでこのスクリプトもどっか path の通ってるとこに install する。
  4. "透過的"にしたいアプリケーションの名前を適当なファイルに書いてお く。ここではそのファイルの名前を translist とする。例えばこんな感じ。
    kawai@tazenda>cat translist 
    xterm
    kterm
    Firefox
    emacs
    gnome-panel
    
  5. こんな感じで起動。
    xcompmgr &
    focustrans.pl translist &
    
  6. ウィンドウに影つけたり、ボワッと出現させたければこんな感じに option つける。
    xcompmgr -cCfF -r7 -o.65 -l-10 -t-8 -D7 &
    
    透明度や不透明度の設定値はスクリプト内に埋め込んであるので、変えたけれ ば直接書き換える。

perl よく知らないのでヘボいことをやっているかも知れないザマス。特に regular expression はもっとうまく書けるはず。ザマス。でも自分の環境で 満足のゆく速度で動いてるからいいや、でザマス。



How to Top
おれんち
ためしにこんなんつけてみた。どうか? プライバシー侵害? うへへへへ