このページは、まだ未完成です。。。

nicotalk&キャラ素材配布所 http://www.nicotalk.com/charasozai_kt.html (2024年5月16日)

この記事を作った動機

 Linux 環境 + GNOME におけるカーソルテーマのインストールや作り方がわかりにくかったので自分用にまとめを作りたい。作り方の部分に関しては、主に、Create your own mouse cursor theme | Developer のやり方を元にしている。

 まだ、現段階(2025/9/28)では、何も手を付けてなくて、調べたことをまとめ、とりあえずカーソルテーマを作るための一筋の段取りを見立てるという段階なので、実際にこのやり方が機能するかは確かめられていない。この記事はその過程において、思考整理的な意味がある。

使うツール

  • GNOME tweaks
  • xcursorgen
yay -S xorg-xcursorgen gnome-tweaks
# pacman -S xorg-xcursorgen gnome-tweaks

カーソルの設定の仕方

GNOME tweaks を使う

 以下は、カーソルテーマ設定画面の例である。

カーソル設定画面

カーソルのインストール

カーソルデータのフォルダ構造

cursorThemeName/
├── cursors
│   ├── default
│   └── ... # 他にも色々ある
└── index.theme

local

 index.theme を含むフォルダごと以下のディレクトリに配置する。

~/.local/share/icons/

global

 index.theme を含むフォルダごと以下のディレクトリに配置する。

/usr/share/icons/

カーソルの作り方

カーソル専用のフォルダを作る

cursorThemeName/
├── cursors     # フォルダ
└── index.theme # プレインテキスト

index.theme を書く

 とりあえずこのファイルがあればとにかくテーマとして GNOME tweaks などからは認識される。

[Icon Theme]
Name=CursorName     # 最小構成は "Name" があれば十分
Comment=test cursor # これとかはオプション
Inherits=[足りない画像を補うためのカーソルテーマを選べるっぽい?] # これもオプション

ここからは、cursors フォルダ内で作業していることを前提とする。

 最終的には、cursors フォルダ内には、以下の種類のファイルが同時に存在している状態になる。

  • .png な png 画像
  • .cursor な xcursor 設定プレインテキスト
  • 拡張子がない xcursor 画像

元となるカーソル画像を作る

解像度 (高めに作っておけばいいように思う)

 以下は、Create your own mouse cursor theme | Developer の引用

  • 16x16
  • 22x22
  • 32x32
  • 48x48
  • 64x64
  • 128x128
  • 256x256

形式

 透過レイヤーを保持した png 画像

作るカーソルの名前

 一応最終的にはカーソル画像の名前は、X11 カーソルにするときに厳密にする必要があるようである。なのでこの時点である程度合わせておいて方がいいかもしれない。正直数が多すぎて何作っていいかわからなくなったので、適当にネットで既存のカーソルテーマを探して、それを参考に必要そうなカーソル画像リストを作ることにした。

 全ては作る必要はなく、足りない部分はデフォルトのカーソル画像で補われるため、メジャーなアイコンに絞ってもいいかもしれない。今回作成したリストでは、普通にミスや間違いがあると思うので注意する必要がある。

以下は、LyraQ Cursors - Gnome-look.org の例に作ったリストである。

├── progress            # (カーソルあり) カーソル付きで、進捗していることを表すアイコン ぐるぐる回転する奴
├── no-drop             # (カーソルあり) ドロップできない領域をホバーしているとき
├── wait                # (カーソルなし) カーソルなしで、進捗していることを表すアイコン ぐるぐる回転する奴

# カーソル関連 -------------------------------
# カーソル関連 -------------------------------
├── default             # (カーソルあり) 左上向きで、通常出てくるデフォルトカーソル
├── center_ptr          # (カーソルあり) 上向きで、真ん中に描画されているカーソル 私は用途がよくわからなかった
├── right_ptr           # (カーソルあり) 右上向きに何かを指すアイコン
# カーソル関連 -------------------------------
# カーソル関連 -------------------------------

# ユーティリティ関連 -------------------------------
# ユーティリティ関連 -------------------------------
├── alias               # (カーソルあり) リンクを踏むときとかのアイコンっぽい?
├── help                # (カーソルあり) ヘルプカーソル
├── copy                # (カーソルあり) コピーアイコン
├── context-menu        # (カーソルあり) メニューアイコン
├── color-picker        # (カーソルなし) 色を取得するとき
├── pencil              # (カーソルなし) ペンアイコン
├── draft               # (カーソルなし) 下書きを意味するアイコン
├── not-allowed         # (カーソルなし) 禁止アイコン単体

├── text                # (カーソルなし) 横方向にテキストが入力できる場所で出てくるアイコン (検索バーとか)
├── vertical-text       # (カーソルなし) 縦方向にテキストが入力できる場所で出てくるアイコン (ワードプロセッサで縦に文章を書いているときとか?)
├── zoom-in             # (カーソルなし) 虫眼鏡 拡大アイコン
├── zoom-out            # (カーソルなし) 虫眼鏡 縮小アイコン
# ユーティリティ関連 -------------------------------
# ユーティリティ関連 -------------------------------

# 手のアイコン -------------------------------
# 手のアイコン -------------------------------
├── dnd-move            # (カーソルなし) ドラックアンドドロップで掴んでいるときのアイコン
├── dnd-no-drop         # (カーソルなし) ドラックアンドドロップでドロップできない領域をホバーしているとき
├── openhand            # (カーソルなし) 手を開く(掴めるものを掴んでいないときのアイコン)
├── pointer             # (カーソルなし) 指を指すアイコン
# 手のアイコン -------------------------------
# 手のアイコン -------------------------------

# 矢印関連 -------------------------------
# 矢印関連 -------------------------------
├── bottom_left_corner  # (カーソルなし) ウィンドウサイズをリサイズするときに出てくるような矢印 左下を指す 左と下に矢印だけでなく線がある
├── bottom_right_corner # (カーソルなし) ウィンドウサイズをリサイズするときに出てくるような矢印 右下を指す 右と下に矢印だけでなく線がある
├── bottom_side         # (カーソルなし) ウィンドウサイズをリサイズするときに出てくるような矢印 下を指す  アンダーラインのような線がある
├── top_side            # (カーソルなし) ウィンドウサイズをリサイズするときに出てくるような矢印 上を差し  アンダーラインを逆に描いたみたいになっている

├── left_side           # (カーソルなし) 左向き矢印単体 矢印以外に左に縦線がある
├── right_side          # (カーソルなし) 右向き矢印単体 矢印以外に左に縦線がある

├── left-arrow          # (カーソルなし) 左向き矢印単体 矢印以外の線はない
├── right-arrow         # (カーソルなし) 右向き矢印単体 矢印以外の線はない
├── top_left_corner     # (カーソルなし) 左上向き矢印単体 矢印以外の線はない
├── top_right_corner    # (カーソルなし) 右上向き矢印単体 矢印以外の線はない
├── up-arrow            # (カーソルなし) 上矢印単体 矢印以外の線はない
├── down-arrow          # (カーソルなし) 下矢印単体 矢印以外の線はない
# 矢印関連 -------------------------------
# 矢印関連 -------------------------------

# 矢印関連1 -------------------------------
# 矢印関連1 -------------------------------
├── size_bdiag          # (カーソルなし) backward? 右上、左下 を指し、斜めに並び、リサイズとかで出てきそうなアイコン
├── size_fdiag          # (カーソルなし) forward?  左上、右下 を指し、斜めに並び、リサイズとかで出てきそうなアイコン
├── size_hor            # (カーソルなし) 水平に 左と右を指すカーソルみたいなのが並んでいるアイコン
├── size_ver            # (カーソルなし) 垂直に 上と下を指すカーソルみたいなのが並んでいるアイコン

├── all-scroll          # (カーソルなし) 全方位のスクロール矢印
├── fleur               # (カーソルなし) 全方位のスクロール矢印と同じっぽい @
# 矢印関連1 -------------------------------
# 矢印関連1 -------------------------------


# Excel 的アイコン -------------------------------
# Excel 的アイコン -------------------------------
├── col-resize          # (カーソルなし) Excel で列の操作をするときの、左右に矢印が出て、真ん中にバーが縦に生えているアイコン
├── row-resize          # (カーソルなし) Excel で列の操作をするときの、上下に矢印が出て、真ん中にバーが横に生えているアイコン
├── cell                # (カーソルなし) Excel でセルを選択するときのような十字アイコン 
├── crosshair           # (カーソルなし) Excel でセルを選択するときのような十字アイコンのスリムバージョン
# Excel 的アイコン -------------------------------
# Excel 的アイコン -------------------------------

├── wayland-cursor      # (カーソルなし) Wayland のトレードマークのアイコンを模したカスタムアイコン
├── x-cursor            # (カーソルなし) X11 のトレードマークのアイコンを模したカスタムアイコン
├── pirate              # (カーソルなし) 海賊アイコン

カーソル名参考 シンボルリンクを含めて全列挙
├── 00000000000000020006000e7e9ffc3f -> progress
├── 00008160000006810000408080010102 -> size_ver
├── 03b6e0fcb3499374a867c041f52298f0 -> circle
├── 08e8e1c95fe2fc01f976f1e063a24ccd -> progress
├── 1081e37283d90000800003c07f3ef6bf -> copy
├── 3085a0e285430894940527032f8b26df -> alias
├── 3ecb610c1bf2410f44200f48c40d3599 -> progress
├── 4498f0e0c1937ffe01fd06f973665830 -> dnd-move
├── 5c6cd98b3f3ebcb1f9c7f1c204630408 -> help
├── 6407b0e94181790501fd1e167b474872 -> copy
├── 640fb0e74195791501fd1ed57b41487f -> alias
├── 9081237383d90e509aa00f00170e968f -> dnd-move
├── 9d800788f1b08800ae810202380a0822 -> pointer
├── a2a266d0498c3104214a47bd64ab0fc8 -> alias
├── alias
├── all-scroll
├── arrow -> default
├── b66166c04f8c3109214a4fbd64a50fc8 -> copy
├── bottom_left_corner
├── bottom_right_corner
├── bottom_side
├── cell
├── center_ptr
├── circle -> not-allowed
├── closedhand -> dnd-move
├── col-resize
├── color-picker
├── context-menu
├── copy
├── cross -> crosshair
├── crossed_circle -> not-allowed
├── crosshair
├── d9ce0ab605698f320427677b458ad60b -> help
├── default
├── dnd-copy -> copy
├── dnd-move
├── dnd-no-drop
├── dnd-none -> dnd-move
├── down-arrow
├── draft
├── e-resize -> size_hor
├── e29285e634086352946a0e7090d73106 -> pointer
├── fcf21c00b30f7e3f83fe0dfd12e71cff -> dnd-move
├── fleur
├── forbidden -> no-drop
├── grab -> openhand
├── grabbing -> dnd-move
├── h_double_arrow -> size_hor
├── half-busy -> progress
├── hand1 -> pointer
├── hand2 -> pointer
├── help
├── ibeam -> text
├── left-arrow
├── left_ptr -> default
├── left_ptr_help -> help
├── left_ptr_watch -> progress
├── left_side
├── link -> alias
├── ll_angle -> bottom_left_corner
├── lr_angle -> bottom_right_corner
├── move -> dnd-move
├── n-resize -> size_ver
├── ne-resize -> top_right_corner
├── nesw-resize -> size_bdiag
├── no-drop
├── not-allowed
├── nw-resize -> top_left_corner
├── nwse-resize -> size_fdiag
├── openhand
├── pencil
├── pirate
├── plus -> cell
├── pointer
├── pointing_hand -> pointer
├── progress
├── question_arrow -> help
├── right-arrow
├── right_ptr
├── right_side
├── row-resize
├── s-resize -> size_ver
├── sb_h_double_arrow -> size_hor
├── sb_v_double_arrow -> size_ver
├── se-resize -> bottom_right_corner
├── size_all -> fleur
├── size_bdiag
├── size_fdiag
├── size_hor
├── size_ver
├── split_h -> col-resize
├── split_v -> row-resize
├── sw-resize -> bottom_left_corner
├── text
├── top_left_corner
├── top_right_corner
├── top_side
├── ul_angle -> top_left_corner
├── up-arrow
├── ur_angle -> top_right_corner
├── v_double_arrow -> size_ver
├── vertical-text
├── w-resize -> size_hor
├── wait
├── watch -> wait
├── wayland-cursor
├── whats_this -> help
├── x-cursor
├── xterm -> text
├── zoom-in
└── zoom-out

カーソルの設定をする

 Create your own mouse cursor theme | Developer によれば、任意の画像の名前と同じ名前.cursor という感じで、.cursorの拡張子をもったプレインテキストを以下のような形式に従って作ればいいようである。

  • 静止画
[解像度縦横] [x方向のクリックオフセット] [y方向のクリックオフセット] [対象の画像の名前]
[解像度縦横] [x方向のクリックオフセット] [y方向のクリックオフセット] [対象の画像の名前]
... # 確か複数の解像度のために、複数行同じファイルに同時に記述できると、どこかのサイトに書いていた覚えがあるが忘れた。要検証。

# 以下は "Create your own mouse cursor theme | Developer" に書いてある例
32 10 5 default.png 
  • アニメーション
[解像度縦横] [x方向のクリックオフセット] [y方向のクリックオフセット] [対象の画像の名前]_1.png [アニメーション時間(ms?)]
[解像度縦横] [x方向のクリックオフセット] [y方向のクリックオフセット] [対象の画像の名前]_2.png [アニメーション時間(ms?)]
...

# 以下は、"Create your own mouse cursor theme | Developer" に書いてある例
32 16 16 wait_1.png 50 
32 16 16 wait_2.png 50

※ すべてのカーソル画像を作る必要はなく、使いまわしたいところに関してはあとからシンボルリンクでいいっぽい。ここでは作った画像分だけの、.cursor ファイルがあれば十分なようである。

xcursorgen でカーソル画像を生成する

 多分スクリプト書いて自動化したほうがいいかも。

xcursorgen [任意の画像名].cursor [任意の画像名]

シンボルリンクを作成する

 作成しなかった分の xcursor を補う操作をする。正直やらなくても動くと思うが、その場合は足りないカーソル画像はデフォルトのもので補われる。

ln -s [生成したxcursor画像名] [補いたい対象の名前]

# 以下は、"Create your own mouse cursor theme | Developer" に書いてある例
ln -s default left_ptr

 以下は、LyraQ Cursors - Gnome-look.org の例に作ったシンボルリンクリストである。

├── 00000000000000020006000e7e9ffc3f    -> progress
├── 00008160000006810000408080010102    -> size_ver
├── 03b6e0fcb3499374a867c041f52298f0    -> circle
├── 08e8e1c95fe2fc01f976f1e063a24ccd    -> progress
├── 1081e37283d90000800003c07f3ef6bf    -> copy
├── 3085a0e285430894940527032f8b26df    -> alias
├── 3ecb610c1bf2410f44200f48c40d3599    -> progress
├── 4498f0e0c1937ffe01fd06f973665830    -> dnd-move
├── 5c6cd98b3f3ebcb1f9c7f1c204630408    -> help
├── 6407b0e94181790501fd1e167b474872    -> copy
├── 640fb0e74195791501fd1ed57b41487f    -> alias
├── 9081237383d90e509aa00f00170e968f    -> dnd-move
├── 9d800788f1b08800ae810202380a0822    -> pointer
├── a2a266d0498c3104214a47bd64ab0fc8    -> alias
├── b66166c04f8c3109214a4fbd64a50fc8    -> copy
├── d9ce0ab605698f320427677b458ad60b    -> help
├── e29285e634086352946a0e7090d73106    -> pointer
├── fcf21c00b30f7e3f83fe0dfd12e71cff    -> dnd-move

├── arrow                               -> default
├── circle                              -> not-allowed
├── closedhand                          -> dnd-move
├── cross                               -> crosshair
├── crossed_circle                      -> not-allowed
├── dnd-copy                            -> copy
├── dnd-none                            -> dnd-move
├── e-resize                            -> size_hor
├── forbidden                           -> no-drop
├── grab                                -> openhand
├── grabbing                            -> dnd-move
├── h_double_arrow                      -> size_hor
├── half-busy                           -> progress
├── hand1                               -> pointer
├── hand2                               -> pointer
├── ibeam                               -> text
├── left_ptr                            -> default
├── left_ptr_help                       -> help
├── left_ptr_watch                      -> progress
├── link                                -> alias
├── ll_angle                            -> bottom_left_corner
├── lr_angle                            -> bottom_right_corner
├── move                                -> dnd-move
├── n-resize                            -> size_ver
├── ne-resize                           -> top_right_corner
├── nesw-resize                         -> size_bdiag
├── nw-resize                           -> top_left_corner
├── nwse-resize                         -> size_fdiag
├── plus                                -> cell
├── pointing_hand                       -> pointer
├── question_arrow                      -> help
├── s-resize                            -> size_ver
├── sb_h_double_arrow                   -> size_hor
├── sb_v_double_arrow                   -> size_ver
├── se-resize                           -> bottom_right_corner
├── size_all                            -> fleur
├── split_h                             -> col-resize
├── split_v                             -> row-resize
├── sw-resize                           -> bottom_left_corner
├── ul_angle                            -> top_left_corner
├── ur_angle                            -> top_right_corner
├── v_double_arrow                      -> size_ver
├── w-resize                            -> size_hor
├── watch                               -> wait
├── whats_this                          -> help
├── xterm                               -> text

カーソルのインストールと設定

 ここまでくれば、うまく行けばとりあえず動くはずである。gnome-tweaks-を使うカーソルのインストール の項目を参考にすれば、とりあえず実際にカーソルを拝められると思われる。

関係ありそうな記事

参考にしたサイトとか