🖱️

Windows用マウスカーソル(.ani)をXCursorに変換するメモ

2025/03/02に公開

TL;DR

https://github.com/quantum5/win2xcur
で変換して正しくリネーム + index.themeを作成して~/.local/share/iconsあたりに置いておけばOK

win2xcurのインストール

pip install win2xcurでもインストールできるようです。
いま現在どうかは確認していませんが、参考にした記事には--scale追加前で更新が止まっているとの記載があったので私はソースからインストールしました(最終的に--scaleは使いませんでしたが...)
この場合はpip install git+https://github.com/quantum5/win2xcurでインストールできます。

変換

win2xcur ./*.ani -o ./[出力先]を実行して数秒で変換されたカーソルが./[出力先]に生成されます。

Windows用カーソルは--scaleに2.0~3.0を渡して拡大しないと小さいという情報もありますが、少なくともわたしの環境では--scale 2.0だと約100MBのカーソルを生成した上OOMでハングアップしてしまったので、最初はscaleなしで試すといいかもしれません?

リネーム + エイリアス貼り付け

XCursorはファイル名でカーソルを識別するため、すべて正しい名前にリネームしていく必要があります。
今回は既存の(Breezeデフォルトの)カーソルを参考に作業しました。(できるならドキュメントなどを参考に指定したほうがいいとは思います。)

デフォルトのアイコンセットは/usr/share/icons/*に配置されており、カーソルを含む場合は各ディレクトリ直下のcursorsディレクトリに格納されています。

リネーム

一旦ファイル実体にあわせてリネームしました。

(ちなみにこれはいくつか間違えてalias側の名前をつけています)

エイリアス貼り付け

リネーム後、欠落しているカーソルを存在する物のシンボリックリンクで埋めていきます。
ls -l | grep -s [ファイル名]で貼り付け先を探すと楽かもしれません。

私は追加で./alias.sh [リンク元] [リンク先1] [リンク先2] ...ように一括でリンクを貼る簡単なシェルスクリプトを作成して作業しました。
環境変数CURSOR_WORK_DIRに作業しているディレクトリのパスを指定して使用すればテーマファイル内にスクリプトを配置することなく作業できます。

#!/bin/bash

WORK_DIR="${CURSOR_WORK_DIR:-}"

SOURCE_FILE="$WORK_DIR$1"
shift

for alias in "$@"; do
    ln -s "$SOURCE_FILE" "$WORK_DIR$alias"
done

ひたすら必要そうなものにシンボリックリンクを張っていきます。
あまり使われていないものも多くありそうなので、おそらく無理にすべてに貼る必要はありません。

その他メタデータ作成

index.themeにアイコンセットのメタデータを作成していきます。
これは見てのとおりで、好きな名前とコメントをつけておけばOKです。

[Icon Theme]  
Name=MyCursor
Comment=My custom cursor theme

これに加え、以下の行を追加することで不足しているものの継承元を明示できるようです。

Inherits=Breeze

ファイルの配置

~/.local/share/icons配下に新しくディレクトリを作成して、index.theme, cursorsディレクトリを配置すればOKです。

設定の適用

ここまで正しく作成できていれば、システムのカーソル設定画面に追加したものが表示されているはずです。

ところでこのカーソル(Rumia cursorsMiku Cursor)は普通にKDEの公式に落ちていましたけど、大丈夫なんでしょうか...?(たぶん大丈夫ではない)

ミクさんカーソルはご本人様でした、かわいいのでおすすめです(入力カーソルがネギなのかわいい)
https://github.com/supermariofps/hatsune-miku-windows-linux-cursors

その他

ディレクトリ名が既存のものと被ると上書きになる

タイトルの通りですが、他の既存のカーソルのディレクトリ名と被っているとオーバーライドするような動作になるようです。

--scale 2.0を指定するとめちゃくちゃにリソースを消費する

上で書いたとおりですが、少なくとも今回移植したカーソルを私の環境で拡大した場合には毎回起こりました。
(Ryzen9 3900X / DDR4 64GBでハングアップ直前の状態で56GB程度)

エイリアスの貼り方

参考程度ですが、わたしの場合のエイリアスのリストを置いておきます(もう配布されていない, かなり古いカーソルで無理やり埋めているので参考にはならないかもしれません)

実ファイル Alias
default arrow, left_ptr, size-bdiag, size-fdiag, size-hor, size-ver, top_left_arrow
ns-resize bottom_side, row-resize, size_ver, top_side
move cell, closedhand, dnd-move, dnd-none, fleur, grab, grabbing, size_all
not-allowed circle, crossed_circle, dnd-no-drop, forbidden, no-drop
ew-resize col-resize, e-resize, h_double_arrow, left_arrow, left_side, right_arrow, right_side, sb_h_double_arrow, size_hor, split_h, w-resize
crosshair cross, tcross
progress half-busy, left_ptr_watch
pointer hand1, hand2
question_arrow help, left_ptr_help, whats_this
nesw-resize ne-resize, size_bdiag, sw-resize, top_right_corner
nwse-resize se-resize, size_fdiag, top_left_corner
wait watch

参考

Windows向けのカーソルテーマをUbuntu用に変換する

Discussion