X Window Systemのマウスカーソルについて

X Window Systemのマウスカーソルの名前のつけ方や、カーソルテーマについてはよくわからないことが多いので一通り調べてみた。
まず、XcursorのManpageのThemeセクションにXcursorライブラリがマウスカーソルを取得する方法が書かれている。
Xcursorライブラリは「~/.icons/カーソルテーマ名/cursors/」や「/usr/share/icons/カーソルテーマ名/cursors/」以下を調べて、決め打ちされたファイル名でカーソルを取得する。*1ファイル名は、libXcursor-1.1.9/src/library.cに一覧がある。対応するカーソル画像の見本はGDK Cursorsで見られる。

また、上記の基本的なカーソルに加えて、GTK+ 2.8以降で追加されたドラッグアンドドロップ関係のカーソルCSSで追加されたカーソルもある。CSSで必要になるカーソルは当然ブラウザ上で表示されるが、Mozilla Firefoxはこれらの一部を取得するのに、CSSで示された名前ではなく、謎の16進数の羅列(hash)を使う。これについては後述する。

これらのカーソルの内の一部は、freedesktop.orgCursor conventions specificationに、どの様な場面で使われるべきか文章に表されている。(ただしこの文書は非常に古く、D&D関係やCSSのカーソルのすべてはカバーできていない。というか、こちらが進まないので、やむなく無秩序に規格が建て増しされ、現在の混沌状態にあると思われる。)

実際にカーソルテーマを作る際に、どういった名前のカーソルを用意し、リンクをどうはればよいかは、ComixCursorsのソースに含まれるlink-cursors.bashを読むと良い。ただしVersion 0.5.1では、Mozilla関係は一部間違ったり記述が足りない部分がある。
次回に続く。

*1:ここで「カーソルテーマ名」は、統合デスクトップ環境を使っていない場合、GTK+アプリケーションでは「~/.gtkrc-2.0」に「gtk-cursor-theme-name = "hogehoge"」のように指定する。複数のサイズを持ったカーソルテーマでは、「gtk-cursor-theme-size = 16」などで指定できる。gtkrc-2.0の他の設定についてはGtkSettings.property-detailsを参照。