光标主题
显示服务器会附带一个光标主题,以辅助 GUI 导航和操作的各个方面。显示服务器包含一个光标主题,但是,可以安装和选择其他光标主题。
安装
安装可以通过软件包完成,也可以下载并解压到适当的目录。
软件包
光标主题在以下位置可用
- 官方软件仓库 — 搜索带有前缀 "xcursor-" 或后缀 "-cursors" 的软件包。一些图标主题也包含光标。
- AUR — "cursor" 搜索。
手动
如果官方软件仓库或 AUR 中没有可用的光标主题,则可以手动添加。许多网站提供光标主题下载。下载后,需要将它们放在 icons 目录中(因为光标可以与图标主题捆绑在一起)。
一些提供光标主题的网站
对于用户特定安装,请使用 ~/.local/share/icons/
目录,或用于向后兼容的 ~/.icons/
。使用以下命令解压它们,该命令适用于大多数压缩文件
$ tar xvf foobar-cursor-theme.tar.gz -C ~/.local/share/icons
光标主题目录结构为 theme-name/cursors
,例如:~/.local/share/icons/theme/cursors/
;确保解压后的文件遵循此结构。
可以使用以下命令查看已安装的光标主题
find /usr/share/icons ~/.local/share/icons ~/.icons -type d -name "cursors"
如果软件包包含 index.theme
文件,请检查其中是否有 "Inherits" 行。如果有,请检查继承的主题是否也存在于系统上(如果需要,请重命名)。
配置
有多种方法可以设置光标主题。如果程序未配置为使用相同的光标主题,则光标外观可能会在一个窗口与另一个窗口之间发生变化。
通常可以为桌面环境和GUI 框架设置已安装的光标。当未设置配置时,名为"default"的光标主题是后备选项。
GTK 和 Qt 配置文件
GTK
~/.gtkrc-2.0
gtk-cursor-theme-name="cursor_theme_name"
~/.config/gtk-3.0/settings.ini
[Settings] gtk-cursor-theme-name=cursor_theme_name
Qt
Qt 没有光标配置。如果未配置,Qt 程序可能会从桌面环境、X 资源或最后的“default”光标主题中获取光标主题。要使 Qt 程序在 ~/.local/share/icons/
路径中找到光标,它必须在 XCURSOR_PATH 环境变量中。
桌面环境
桌面环境使用 XSETTINGS 协议,通常通过诸如 Xsettingsd 之类的设置守护程序来实现。
GNOME
要在 GNOME 中更改主题,请使用 gnome-tweaks 或直接使用以下命令设置配置
$ gsettings set org.gnome.desktop.interface cursor-theme cursor_theme_name
使用以下命令更改光标大小(取决于主题,大小为 24、32、48、64)
$ gsettings set org.gnome.desktop.interface cursor-size cursor_theme_size
~/.local/share/icons
中的光标主题。作为一种解决方法,您可以将该路径添加到 XCURSOR_PATH。MATE
在 MATE 中,可以使用 mate-control-center 或 gsettings(1)。要更改主题
$ gsettings set org.mate.peripherals-mouse cursor-theme cursor_theme_name
要更改大小
$ gsettings set org.mate.peripherals-mouse cursor_theme_size
Plasma (Wayland)
必须安装 xdg-desktop-portal-gtk,GTK 应用程序才能在 Wayland 上正确应用光标主题。
XFCE
要更改 xcursor 主题,请使用
$ xfconf-query --channel xsettings --property /Gtk/CursorThemeName --set cursor_theme_name
要更改大小
$ xfconf-query --channel xsettings --property /Gtk/CursorThemeSize --set cursor_theme_size
X 资源
要在本地命名光标主题,请添加到 ~/.Xresources
文件
Xcursor.theme: cursor-theme
为了正确加载光标主题,需要由窗口管理器来完成;如果未完成,则可以通过将以下命令放入 .xinitrc 或 .xprofile 中(取决于个人设置)来强制在窗口管理器之前加载它
~/.xinitrc or ~/.xprofile
... xrdb ~/.Xresources ...
可选地,如果您的光标主题支持多种大小,请将此行添加到 ~/.Xresources
Xcursor.size: 16
如果不确定支持的光标大小,请在不进行此设置的情况下启动 X 服务器,并让它自动选择光标大小。(有关详细信息,请参阅您的窗口管理器文档)。
默认光标主题
如果应用程序无法获取配置,则会使用光标主题名称 “default”。因此,为了使光标选择在分散的配置中保持一致,最后的手段是将默认主题编辑为所选主题的同义词。
默认光标主题位于通常的主题位置
~/.local/share/icons/default/
~/.icons/default/
/usr/share/icons/default/
(系统范围)
别名
可以通过将包含所需光标的目录符号链接/复制到默认主题路径,将默认主题别名化为任何其他光标主题
$ ln --symbolic /usr/share/icons/cursor_theme_name ~/.local/share/icons/default
继承
或者,主题可以简单地继承另一个所需的主题
~/.local/share/icons/default/index.theme
[Icon Theme] Inherits=cursor_theme_name
LXAppearance
LXAppearance 创建一个 ~/.icons/default/index.theme
文件:如果您手动编辑了该文件,LXAppearance 将覆盖它。
环境变量
您可以使用环境变量为单个应用程序设置主题以临时试用,例如
$ XCURSOR_THEME=cursor_theme_name xclock
如果您的光标主题支持多种大小,则 XCURSOR_SIZE
是可选的。
如果光标主题安装在 ~/.local/share/icons/
中,为了避免可能的问题,请将该路径添加到 XCURSOR_PATH。例如
~/.bash_profile
export XCURSOR_PATH=${XCURSOR_PATH}:~/.local/share/icons
显示管理器
通常可以在显示管理器中设置光标主题,但请记住,光标主题可能不会延续到用户会话。
GDM
请参阅 GDM#更改光标主题。
Tor 浏览器
Tor 浏览器有自己的“虚拟”主目录,不会读取用户主目录中的文件。因此,您需要将配置以及必要的图标主题复制到 Tor 浏览器安装目录
在 Tor 浏览器“虚拟”主目录中创建一个 GTK 配置文件
~/.local/share/torbrowser/tbb/x86_64/tor-browser/Browser/.config/gtk-3.0/settings.ini
[Settings] gtk-cursor-theme-name=cursor_theme_name
如果所需的光标主题未在系统范围内安装,则必须将其复制到 Tor 浏览器“虚拟”主目录;例如
$ cp -r ~/.local/share/icons/cursor_theme_name ~/.local/share/torbrowser/tbb/x86_64/tor-browser/Browser/.local/share/icons/
您也可以直接复制整个光标主题文件夹
$ cp -r ~/.local/share/icons ~/.local/share/torbrowser/tbb/x86_64/tor-browser/Browser/.local/share
故障排除
创建缺失光标的链接
当主题缺少某些光标时,应用程序可能会继续使用默认光标。可以通过添加指向缺失光标的链接来纠正此问题。例如
$ cd ~/.icons/theme/cursors/ $ ln -s right_ptr arrow $ ln -s cross crosshair $ ln -s right_ptr draft_large $ ln -s right_ptr draft_small $ ln -s cross plus $ ln -s left_ptr top_left_arrow $ ln -s cross tcross $ ln -s hand hand1 $ ln -s hand hand2 $ ln -s left_side left_tee $ ln -s left_ptr ul_angle $ ln -s left_ptr ur_angle $ ln -s left_ptr_watch 08e8e1c95fe2fc01f976f1e063a24ccd
如果以上方法无法解决问题,请在 /usr/share/icons/whiteglass/cursors
中查找您的主题可能缺少的其他光标,并为这些光标创建链接。
$ cd ~/.icons/theme/cursors/ $ rm watch left_ptr_watch $ ln -s left_ptr watch $ ln -s left_ptr left_ptr_watch
提供缺失的光标
某些程序设置了自己的自定义光标 ~/.Xresources
,您可能想要覆盖它们。rdesktop 是一个常见的例子,它连接到 Microsoft Windows 计算机并使用从远程计算机获得的光标,由于协议限制导致转换质量差,这些光标通常难以看清。
可以通过用同一(或另一个)光标主题中的光标替换这些光标来解决此问题。为了做到这一点,必须获得图像的哈希值。这可以通过在启动设置这些光标的应用程序之前设置 XCURSOR_DISCOVER
环境变量来完成
$ XCURSOR_DISCOVER=1 rdesktop ...
第一次(且仅第一次)设置光标时,将显示一些详细信息,如下所示
Cursor image name: 24020000002800000528000084810000 ... Cursor image name: 7bf1cc07d310bf080118007e08fc30ff ... Cursor hash 24020000002800000528000084810000 returns 0x0
当 Xcursor 查找缺失的光标时,搜索路径包括 ~/.icons/default/cursors
,因此这是可以放置图像以供 Xcursor 查找的位置。首先,如果此目录尚不存在,请创建它
$ mkdir -p ~/.icons/default/cursors
然后将哈希链接到目标图像。这里我们使用 Vanilla-DMZ
光标主题中的 left_ptr
图像
$ ln -s /usr/share/icons/Vanilla-DMZ/cursors/left_ptr ~/.icons/default/cursors/24020000002800000528000084810000
重新启动应用程序后,更改将立即可见。启动应用程序不需要特殊方法。
更改 X 形默认光标
默认的 X 形 Xcursor 出现在不将默认光标设置为 left_ptr 的窗口管理器中,或在使用 XCB(如 awesome)而不是 Xlib 的窗口管理器中。
要解决此问题,只需将以下内容添加到您的 ~/.xinitrc
、xsession 或窗口管理器启动配置中(如果可能,例如 bspwm 的 bspwmrc)。
$ xsetroot -cursor_name left_ptr
光标样式列表在 X 协议的 附录 B 中。
.Xdefaults
如果您有冲突的光标,则可能是因为在 ~/.Xdefaults
文件中设置了不同的光标。
启动时光标大小未更改
如果您尝试通过 ~/.xinitrc
中的 ~/.Xresources
更改光标大小,但它不起作用,请确保 xrandr 在加载 ~/.Xresources
之前运行。
确保您的 ~/.xinitrc
看起来类似于以下内容
~/.xinitrc
xrandr ... xrdb -merge ~/.Xresources exec wm
在 Plasma (Wayland) 上光标大小或主题未更改
当在使用 Plasma 和 Wayland 时更改光标大小或主题时,请确保在应用更改后重启会话 [1] [2]。
这是一个错误。请参阅 KDE#Plasma 光标有时显示不正确 中的解决方法。
参见
- 图标主题规范
- Xcursor(3) — 支持的目录、格式、兼容性等。
- xcursor-viewer-gitAUR — 查看光标图像(预览 Xcursor 文件)
- xcursorgen — 创建光标文件