Xのマウスカーソルのサイズについて
Xのマウスカーソルファイルの構造は、Man page of XCURSORのCURSOR FILESセクションに書いてあり(あるいはXcursor.hを見ても良い)、画像のheightとwidthはともに0x7fff以下でなければならない。
この制限はほとんどないに等しいが(さらにheight=widthである必要もない)、libXCursorのソースを見るとxcursorint.hの59行目でMAX_BITMAP_CURSOR_SIZEが64に定義されており、xlibcで定義されている各種APIを使うには、64x64以下であることが求められる。
さらにgnome-appearance-properties(「外観の設定」ダイアログ)のソースコードを調べると、gnome-control-center-2.22.2.1/capplets/common/gnome-theme-info.cの中で、
// ここまで省略 static GnomeThemeCursorInfo * read_cursor_theme (GFile *cursor_theme_uri) { GnomeThemeCursorInfo *cursor_theme_info = NULL; GFile *parent_uri, *cursors_uri; const gint filter_sizes[] = { 12, 16, 24, 32, 36, 40, 48, 64 }; const gint num_sizes = G_N_ELEMENTS (filter_sizes); // 中略 for (i = 0; i < num_sizes; ++i) { cursor = XcursorLibraryLoadImage ("left_ptr", name, filter_sizes[i]); if (cursor) { if (cursor->size == filter_sizes[i]) { g_array_append_val (sizes, filter_sizes[i]); if (thumbnail == NULL && i >= 1) thumbnail = gdk_pixbuf_from_xcursor_image (cursor); } XcursorImageDestroy (cursor); } } // 以下略
とfilter_sizes[]が定義されていて、カーソルテーマのleft_ptrの高さと幅がsize*1がこれらの数字(12,16,24,32,36,40,48,64)のどれかに等しくない場合は、ポインタタブにそのカーソルテーマが表示されず、選択できない。(tarボールからインストールした直後はサムネイル画像は無いもののカーソルテーマの名前は表示され、選択する事が出来る。)
この制限については、ComixCursorsの作者であるThomas Zajic氏の立てたBug 402656 – Cursor theme list displayも参照のこと。
これらの事からカーソルテーマを作るときは、できれば縦横同じ長さで12,16,24,32,36,40,48,64pxのいずれかにするべき。xcursorgenの第一フィールドを12,16,24,32,36,40,48,64のいずれかにするべき。とくに理由が無ければ標準的な32を選ぶと良い。
2008/08/15追記
(nominal) sizeに関する誤りを訂正。
*1:カーソルのsizeは「man Xcursor」にある通り「nominal size(名目上のサイズ)」で実際の画像の幅や高さとは関係ない。一つのファイルに複数のサイズのカーソルを格納する際のタグ付けに使われる。詳しくはマニュアル参照