跳转至内容

光标主题

来自 ArchWiki

显示服务器 附带一个光标主题,有助于 GUI 导航和操作的各个方面。显示服务器包含一个光标主题,但是,也可以安装和选择其他光标主题。

安装

可以通过软件包安装,或者下载并提取到适当的目录。

软件包

光标主题可在

手动设置

如果官方仓库或 AUR 中没有光标主题,可以手动添加。有一些网站可以下载光标主题。下载后,需要将它们放到图标目录(因为光标可以与图标主题捆绑)。

包含光标主题的一些网站

对于用户特定安装,请使用 ~/.local/share/icons/ 目录,或用于向后兼容的 ~/.icons/。使用此命令提取它们,该命令适用于大多数存档

$ tar xvf foobar-cursor-theme.tar.gz -C ~/.local/share/icons

光标主题的目录结构是 theme-name/cursors,例如: ~/.local/share/icons/theme/cursors/;请确保提取的文件遵循此结构。

注意 对于系统范围安装,使用 /usr/share/icons 目录。通常不建议直接提取到此目录,因为此处的文件不受 pacman 跟踪;建议为光标主题创建软件包

已安装的光标主题可以通过以下命令查看

find /usr/share/icons ~/.local/share/icons ~/.icons -type d -name "cursors"

如果软件包包含 index.theme 文件,请检查其中是否有“Inherits”行。如果有,请检查继承的主题是否也存在于系统中(如有必要,请重命名)。

配置

有多种方法可以设置光标主题。如果程序未配置为使用相同光标主题,则光标外观可能因窗口而异。

已安装的光标通常可以按桌面环境GUI 框架设置。名为“default”的光标主题是在未设置配置时的回退。

注意 重启 X 以使所有光标更改生效。某些应用程序也可能在单独重启后识别光标更改。

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
注意 默认情况下,在 Wayland 上,GNOME 应用程序应无法显示位于 ~/.local/share/icons 的光标主题。作为一种解决方法,您可以将该路径添加到 XCURSOR_PATH

MATE

MATE 中,可以使用 mate-control-centergsettings(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

Sway

请参阅 Sway#更改光标主题和大小

X 资源

要本地命名光标主题,请将以下内容添加到 ~/.Xresources 文件

Xcursor.theme: cursor-theme

要正确加载光标主题,窗口管理器需要加载它;如果它不加载,可以通过将以下命令放入 .xinitrc.xprofile(取决于个人设置)来强制在窗口管理器之前加载

~/.xinitrc or ~/.xprofile
...
xrdb ~/.Xresources
...

可选地,如果您的光标主题支持多种大小,请将此行添加到 ~/.Xresources

Xcursor.size: 16
提示 24、32、48 或 64 也可能是合适的大小。

如果不确定支持的光标大小,请在不设置此项的情况下启动 X,让它自动选择光标大小。(有关详细信息,请参阅您的窗口管理器文档)。

默认光标主题

如果应用程序无法获取配置,则使用default光标主题名称。因此,使光标选择在碎片化配置中保持一致的最后手段是编辑默认主题,使其成为所选主题的同义词。

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 是可选的。

本文或本章节的准确性存在争议。

原因:并非所有图形环境都会加载 shell 初始化文件,建议链接到 环境变量#图形环境。还需要解释或链接到“可能的问题”。(在 Talk:Cursor themes 中讨论)

如果光标主题安装在 ~/.local/share/icons/ 中,为了避免可能出现的问题,请将该路径添加到 XCURSOR_PATH。例如

~/.bash_profile
export XCURSOR_PATH=${XCURSOR_PATH}:~/.local/share/icons
注意 确保 XCURSOR_PATH 包含 /usr/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) 上光标大小或主题未更改

在使用 Wayland 上的 Plasma 时更改光标大小或主题,请确保在应用更改后[1] [2] 重启会话。

这是一个 bug。请参阅 KDE#Plasma 光标有时显示不正确中的解决方法。

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.