Entry

X.org 6.8.1 を使ってみる

2004年12月27日

先日 ports tree に入った X.org 6.8.1 で,念願のスケスケウィンドウ環境を作ってみました。ウィンドウマネージャは blackbox です。

X.org 6.8.1 の様子

いやー……見事にスケスケです。ウィンドウやメニューに陰も付いてます。この他にも,ウィンドウを作ったり消したりすると,フェードイン・フェードアウトするんですけれど,これは画像からじゃ分かりませんね。今まで少し味気なかったウィンドウ環境も,一気におしゃれになりました。

もっとも,予想していたとおり,この処理は相当重くて参りました。陰付けはまだしも透過処理は,いままで使っていた Matrox の Millenium G400DH では,モッサリどころかカクカクに……。どうも,DRI がうまく機能していないのが問題みたいなんですけれど,どうやっても改善しないので諦めることにしました。

この処理のためだけに,ビデオカードを換えるのもなんなんですけれどね。手元にあった,GeForce FX5900 がついているビデオカード(もらいもの)に換えました。G400 より圧倒的に高性能だけれど,ファンがうるさいのと,nVidia のチップで一時期はまった経験があることから,手を出していなかったのでした。

ビデオカードを GeFore FX5900 にして,ちょこちょこ設定すると違和感なく使えるようになりました。メモがてら設定した内容を書いておくことにします。

まず,nVIDIA は UN*X 向けにもドライバを用意しているので,ドライバを入れることにします。以前は,nVIDIA のホームページから取ってくる必要があったんですけれど,今は ports になっているから楽ちんです。x11/nvidia-driver と,ついでに x11/nvidia-settings を入れておきます。nvidia-settings は OpenGL の挙動やガンマ値等々を微調整できるツールです。

インストールすると,/boot/loader.conf に以下の行が追加されます。カーネルモジュールを追加するオプションですね。

linux_load="YES"
nvidia_load="YES"

再起動すればカーネルモジュールを読み込む仕組みになっています。インストール直後でもカーネルモジュールが読み込まれるはずだけれど,一応,kldstat して読み込まれているか確かめておくといいと思います。

カーネルとドライバが用意できたので,次は X.org の設定です。/etc/X11/xorg.conf に DRI と nVidia 用のエントリを作っておきましょう。以下が,うちで使っている xorg.conf です(mga はコメントアウトしている)。

Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
        RgbPath      "/usr/X11R6/lib/X11/rgb"
        ModulePath   "/usr/X11R6/lib/modules"
        FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
#       FontPath     "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath     "/usr/X11R6/lib/X11/fonts/local:unscaled/"
        FontPath     "/usr/X11R6/lib/X11/fonts/local/"
        FontPath     "/usr/X11R6/lib/X11/fonts/latin2/"
        FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
        FontPath     "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath     "/usr/X11R6/lib/X11/fonts/PEX/"
        FontPath     "/usr/X11R6/lib/X11/fonts/TTF/"
        FontPath     "/usr/X11R6/lib/X11/fonts/TrueType/"
        FontPath     "/usr/X11R6/lib/X11/fonts/truetype/"
        FontPath     "/usr/X11R6/lib/X11/fonts/dynafont/"
EndSection

Section "Module"
        Load "freetype"
#      Load  "xtt"
        Load  "glx"
        Load  "dri"
        Load  "dbe"
        Load  "record"
        Load  "xtrap"
        Load  "type1"
        Load  "extmod"
EndSection

Section "DRI"
        Mode    0666
EndSection

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

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "Auto"
        Option      "Device" "/dev/sysmouse"
        Option      "Resolution" "High"
        Option      "Buttons" "5"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "keyboard"
        Option      "XkbModel" "pc101"
        Option      "XkbLayout" "us"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        HorizSync    30.0 - 70.0
        VertRefresh  50.0 - 120.0
EndSection

#Section "Device"
#       Identifier  "Card0"
#       Driver      "mga"
#       ChipSet     "mgag400"
#       Card        "mga400 Millenium G400"
#       Option      "AGPMode"           "4"
#       Option      "NoHal"             "true"
#       Option      "MGASDRAM"          "true"
#       Option      "NoAccel"           "false"
#       Option      "TexturedVideo"     "true"
#EndSection

Section "Device"
        Identifier  "Card0"
        Driver      "nvidia"
        Card        "Albatron FX5900XT"
        Option      "AGPMode"           "8"
        Option      "RenderAccel" "true"
        Option      "CursorShadow" "true"
        Option      "AllowGLXWithComposite" "true"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Depth     24
                Modes    "1024x768"
        EndSubSection
EndSection

最後に,freedesctop.orgCVS リポジトリ から xcompmgr と transset をもらってきます。xcompmgr は,陰付けや透過を実現するための管理ツールで,transset が個々のウィンドウをスケスケにするためのプログラムです。ports があるか見てみたんですけど,まだできてないみたいですね。

しかたないので,以下のようにして,CVS リポジトリからチェックアウトして,自前でビルドすることにします。

% cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xapps co transset
% cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xapps co xcompmgr

ビルドの仕方は……ちょっと難儀しました。たしか,transset の方は configure と make でいけたと思います。xcompmgr は,autoconf や automake の名前を変えてゴニョゴニョやってみてください。(追記:xcompmgr は 2004 年 12 月 23 日頃の ports に入っているようです(x11-wm/xcompmgr))

できたバイナリを path の通った場所に置いて,

% xcompmgr -cf &

で,陰付けとフェードイン・フェードアウトが実現するはずです。これは,X の起動時に実行されるように .xinitrc や .xsession に書いておくといいんだそうです。もっとオプションがあるので詳細は,xcompmgr -h を参照にするといいと思います。ウィンドウを透過にするには,

% transset .5

みたいにして,透過にしたいウィンドウの上でクリックします。引数が透過の度合いを表していて,1 が無透過,0 が完全な透過を表します。上の例は,「半分だけスケスケ」という意味になります。

使ってみると,まるで MacOS X を使っているみたい。なかなか愉快でした。ただ,KDE や GNOME といったデスクトップ環境を使っている場合や,重い WM を使っている場合だと,マシンもそれなりのスペックを持っていないとかなりしんどいと思います。

エフェクトなんて所詮は道楽なんですけどね。でも,個人的には,結構重要な要素だったりして……。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN