Windows用マウスカーソル(.ani)をXCursorに変換するメモ
TL;DR
~/.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 cursors
とMiku Cursor)は普通にKDEの公式に落ちていましたけど、大丈夫なんでしょうか...?(たぶん大丈夫ではない)
ミクさんカーソルはご本人様でした、かわいいのでおすすめです(入力カーソルがネギなのかわいい)
その他
ディレクトリ名が既存のものと被ると上書きになる
タイトルの通りですが、他の既存のカーソルのディレクトリ名と被っているとオーバーライドするような動作になるようです。
--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 |
Discussion