lin-gu

导航

如何将 Windows 光标转换为 Linux xcursor

如何将 Windows 光标转换为 Linux xcursor

警告:本文具有特定性,我未找到 x11 光标主题标准,可能会遇到一些问题

目录

Windows 光标主题结构

现在,我们有一个 Windows 光标主题。
Windows 光标主题的结构如下:

❯ ll
total 2.6M
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Alternate.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Busy.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Diagonal1.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Diagonal2.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Handwriting.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Help.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Horizontal.ani
-rw-r--r-- 1 lingu lingu 3.0K 10月 26 14:01  install.inf
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Link.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Move.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Normal.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Person.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Pin.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Precision.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Text.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Unavailable.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Vertical.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Working.ani

我们可以看到 Windows 光标文件类型是 .ani
install.inf 是一个安装脚本,它在 Linux 上不起作用,只需关注 .ani 文件。
当然,.cur 也是 Windows 光标文件类型。
如何将 .ani 转换为 .xcursor
我们可以使用 win2xcur

安装 win2xcur

pip install win2xcur
win2xcur *.ani output_dir

输出目录如下:

ll
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./crosshair
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./default
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./dnd-move
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./help
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./not-allowed
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./pencil
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./pointer
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./progress
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_bdiag
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_fdiag
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_hor
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_ver
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./text
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./up-arrow
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./wait

更多关于 win2xcur 的信息在 这里

xcursor 主题结构

你可以在 Linux 机器上打开一个 xcursor 主题。
Linux 会将光标主题保存在 ~/.icons(用户)和 /usr/share/icons(系统)等目录中。
跟我来:

cd ~/.icons
# 选择你喜欢的光标主题,然后输入 ll
# 在这里我使用 "Chroma-Black-M"
lingu@lingu-debian ~/.icons (master) 
❯ tree Chroma-Black-M/
Chroma-Black-M/
├── cursors
│   ├── bottom_left_corner -> size_bdiag
│   ├── bottom_right_corner -> size_fdiag
│   ├── circle -> not-allowed
│   ├── closedhand -> dnd-move
│   ├── cross -> crosshair
│   ├── crossed_circle -> not-allowed
│   ├── crosshair
│   ├── default
│   ├── dnd-move
│   ├── dnd-none -> dnd-move
│   ├── e-resize -> size_hor
│   ├── ew-resize -> size_hor
│   ├── fleur -> dnd-move
│   ├── grabbing -> dnd-move
│   ├── half-busy -> pointer
│   ├── h_double_arrow -> size_hor
│   ├── help
│   ├── ibeam -> text
│   ├── left_ptr -> default
│   ├── left_ptr_watch -> progress
│   ├── left_side -> size_hor
│   ├── move -> dnd-move
│   ├── ne-resize -> default
│   ├── nesw-resize -> default
│   ├── not-allowed
│   ├── n-resize -> size-ver
│   ├── ns-resize -> size-ver
│   ├── nw-resize -> default
│   ├── nwse-resize -> default
│   ├── pencil
│   ├── pointer
│   ├── progress
│   ├── right_side -> size_hor
│   ├── sb_h_double_arrow -> size_hor
│   ├── sb_v_double_arrow -> size-ver
│   ├── se-resize -> default
│   ├── size-bdiag -> default
│   ├── size_bdiag
│   ├── size-fdiag -> default
│   ├── size_fdiag
│   ├── size-hor -> default
│   ├── size_hor
│   ├── size-ver -> default
│   ├── size_ver
│   ├── s-resize -> size-ver
│   ├── sw-resize -> default
│   ├── text
│   ├── top_left_arrow -> default
│   ├── top_left_corner -> size_fdiag
│   ├── top_right_corner -> size_bdiag
│   ├── top_side -> size-ver
│   ├── up-arrow
│   ├── v_double_arrow -> size-ver
│   ├── wait
│   ├── watch -> wait
│   ├── w-resize -> size_hor
│   └── xterm -> text
└── index.theme

2 directories, 58 files

Windows 光标主题与 xcursor 主题的不同点

如你所见,xcursor 主题比 Windows 光标主题有更多的文件。
而且 xcursor 主题有许多符号链接。
符号链接指向什么?让我们看看普通文件。

lingu@lingu-debian ~/.icons/Chroma-Black-M/cursors (master) 
❯ find -type f
./size_fdiag
./progress
./wait
./dnd-move
./up-arrow
./help
./pencil
./size_hor
./size_bdiag
./text
./not-allowed
./default
./pointer
./crosshair
./size_ver
lingu@lingu-debian ~/.icons/Chroma-Black-M/cursors (master) 
❯ find -type f | wc
     15      15     157

这些文件很重要。让我回顾一下 Windows 光标主题:

❯ ll
total 2.6M
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Alternate.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Busy.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Diagonal1.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Diagonal2.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Handwriting.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Help.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Horizontal.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Link.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Move.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Normal.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Person.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Pin.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Precision.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Text.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Unavailable.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Vertical.ani
-rw-r--r-- 1 lingu lingu  27K 10月 26 14:01  Working.ani

# 这里有 17 个 .ani 文件

你可能会问:为什么文件数量不相等?
是的,我不知道为什么。但 Person.aniPin.ani 可能是多余的。
回顾我们转换后的文件:

-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./crosshair
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./default
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./dnd-move
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./help
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./not-allowed
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./pencil
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./pointer
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./progress
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_bdiag
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_fdiag
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_hor
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./size_ver
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./text
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./up-arrow
-rw-r--r-- 1 lingu lingu 49K  2月  3 00:58 ./wait

# 这里也有 15 个文件

如何将文件重命名为 xcursor 标准?

语言表达 Windows 光标文件 xcursor 文件
正常 Normal.ani default
当你拖动窗口时 Move.ani dnd-move
当光标在输入框上时 Text.ani text
当光标在帮助上时 Help.ani help
当光标在等待窗口上时 Busy.ani wait
Precision.ani crosshair
Handwriting.ani pencil
当光标在链接上时 Link.ani pointer
Working.ani progress
Unavailable.ani not-allowed
Alternate.ani up-arrow
Horizontal.ani size_hor
Vertical.ani size_ver
Diagonal1.ani size_fdiag
Diagonal2.ani size_bdiag

链接与重命名文件

这是一个帮助你完成此操作的脚本:https://github.com/Hello-lingu/win2xcur
注意:'-' 和 '_' 是不同的
现在我们有了基本的光标,然后创建符号链接。
帮助:ln -s 目标 链接名称 可以创建一个指向 目标 的符号链接 链接名称

语言表达 Windows 光标文件 xcursor 文件 符号链接
正常 Normal.ani default left_ptr
当光标在输入框上时 Text.ani text ibeam xterm
当光标在帮助上时 Help.ani help
当光标在等待窗口上时 Busy.ani wait watch
Precision.ani crosshair cross
Handwriting.ani pencil draft
当光标在链接上时 Link.ani pointer half-busy pointing_hand
Working.ani progress left_ptr_watch
Unavailable.ani not-allowed circle crossed_circle
Alternate.ani up-arrow
Horizontal.ani size_hor e-resize ew-resize h_double_arrow left_side right_side sb_h_double_arrow w-resize
Vertical.ani size_ver split_v n-resize ns-resize row-resize s-resize v_double_arrow
当光标在窗口右下角或左上角时 Diagonal1.ani size_fdiag bottom_right_corner top_left_cornersw-resize nw-resize nwse-resize se-resize
当光标在窗口左下角或右上角时 Diagonal2.ani size_bdiag bottom_left_corner top_right_cornerne-resize ne-resize nese-resize sw-resize
当你拖动窗口时 Move.ani dnd-move closedhand dnd-none fleur grabbing move all-scroll size_all

确保正确性

theme_name/
|-- cursors
|   |-- 你的光标文件
|-- index.theme

现在我们必须编写一个 index.theme
index.theme

[Icon Theme]
Name=你的光标名称
Comment=你的光标描述

测试

现在,让我测试光标主题。

KDE

  • 启动 系统设置
  • 进入 外观
  • 进入 光标
  • 将你的光标主题压缩为 .tar.gz
  • 点击 从文件安装...
  • 选择你的光标主题包(.tar.gz 或 .zip)

可能适用于所有 Linux 发行版?

  • 将你的光标主题复制或移动到 ~/.icons
  • 确保你的主题结构正确
  • 然后你可以在设置中看到光标主题

如果一切正常,你可以愉快地使用你喜欢的光标。

关于 xcursor 的更多信息

我的环境

Debian12 Kde plasma conda python3.9 x11
Cursor themes - ArchWiki
Create your own mouse cursor theme | Developer
charakterziffer/cursor-toolbox: Tools to create an X11 cursor theme out of an SVG file

posted on 2025-03-08 14:36  Lin_Gu  阅读(184)  评论(0)    收藏  举报