Cursor themes (简体中文) - ArchWiki

Jump to content

显示服务器有着一个从各方面帮助GUI界面导航和操作的光标主题。显示服务器自带一个光标主题,但依然可以安装并使用其他光标主题。

## 安装

可以通过软件包安装,也可以下载光标主题并解压到恰当的路径来安装。

### 通过软件包

下列链接提供可用的光标主题软件包:

- 官方仓库 — "xcursor-" search.
- AUR — "cursor" search.

### 手动安装

在官方仓库或AUR中没有的光标主题可以手动安装。许多网站都有可下载的光标主题。下载之后它们需要被放进icons目录(因为光标可以和图标主题绑定在一起)。

一些有光标主题的网站:

- GNOME Look
- Deviant Art
- Open Desktop

如果想要为指定用户安装,使用 `~/.local/share/icons/` 或 `~/.icons/` 目录。用以下命令可以解压大多数归档:

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

光标主题的目录结构为 `theme-name/cursors`,举个例子: `~/.local/share/icons/theme/cursors/`; 请确保解压出文件也是这样的结构。

Note: 如果想要系统范围安装,使用 `/usr/share/icons` 目录。不推荐直接将文件解压到这个目录, 因为手动添加的文件不会被 pacman 追踪;建议给光标主题创建一个 package 。

已经安装的光标主题可以通过这条命令查看:

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

如果软件包包含一个 `index.theme` 文件,检查里面是否有 "Inherits" 这一行。如果有,检查继承的主题是否也存在(有必要时重命名)。

## 配置

有许多方法设置光标主题。

### XDG 规范

这个方法对 X11 和 Wayland 光标主题都有效。

如果想要为指定用户配置,创建并编辑 `~/.icons/default/index.theme`;如果想要 系统范围 配置,编辑 `/usr/share/icons/default/index.theme`。

`[icon theme]` 部分中的 `Inherits` 选项必须被设置为X光标主题的目录名`cursor_theme_name`,举个例子 `xcursor-breeze-snow`:

    ~/.icons/default/index.theme

    [icon theme]
    Inherits=cursor_theme_name

然后你应该编辑 `~/.config/gtk-3.0/settings.ini`, 将 `cursor_theme_name` 替换为你选择的主题:

    ~/.config/gtk-3.0/settings.ini

    [Settings]
    gtk-cursor-theme-name=cursor_theme_name

重启 X 以应用更改。

如果还是没用,试着创建一个将`~/.icons/default/cursors` (假设为指定用户安装)指向`.local/share/icons/cursor_theme_name/cursors`的符号链接然后再次重启 X。

### LXAppearance

LXAppearance通过创建 `~/.icons/default/index.theme`设置默认光标主题:如果你手动编辑它,LXAppearance 会覆写它。记得还要按照 #XDG 规范 手动编辑 `~/.config/gtk-3.0/settings.ini`,因为有些应用,如 Firefox ,使用这个设置文件。

### 桌面环境

桌面环境 使用 X设置协议,通常通过设置守护进程达到效果。虽然这允许即时更改光标,但应用的主题在不同应用中可能不一致, 另见 #XDG 规范 来手动更改光标主题.

#### 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

Note: 在 Wayland 上, Gnome 应用默认无法显示位于`~/.local/share/icons`的光标主题。作为一种解决方法,你可以 add that path to XCURSOR_PATH.

#### MATE

在 MATE 中可以使用 mate-control-center 或 gsettings 来修改主题:

    gsettings set org.mate.peripherals-mouse cursor-theme cursor_theme_name

修改尺寸:

    gsettings set org.mate.peripherals-mouse theme-size

#### XFCE

修改 X光标主题 , 使用:

    xfconf-query --channel xsettings --property /Gtk/CursorThemeName --set cursor_theme_name

修改尺寸:

    xfconf-query --channel xsettings --property /Gtk/CursorThemeSize --set cursor_theme_size

### X resources

要想在本地命名光标主题,将下面这一行添加到 `~/.Xresources` 文件:

    Xcursor.theme: cursor-theme

要想正确地加载光标主题需要通过窗口管理器完成;如果窗口管理器无法完成,可以在输入 `~/.xinitrc` 或 .xprofile (使用哪个取决于个人配置)中添加以下命令强制在窗口管理器之前加载:

    $ xrdb ~/.Xresources

可选地,如果你的光标主题支持多个尺寸,在 `~/.Xresources` 中添加下面这一行:

    Xcursor.size: 16

Tip: 32, 48 或 64 也可能是适用的尺寸

如果对支持的光标大小有疑问,在没有这个设置的情况下启动 X 并让它自动选择光标尺寸(查阅你的窗口管理器文档以获得更多细节)。

### 环境变量

你可以使用一个 环境变量 来为单个应用暂时设置主题,举个例子:

    $ XCURSOR_THEME=SomeThemeName xclock

XCURSOR_SIZE 是可选的,如果你的光标主题支持多个尺寸就可以使用。

如果你的光标主题安装在 `~/.local/share/icons`,为了避免潜在的问题,将该路径添加到 XCURSOR_PATH 。举个例子:

    ~/.bash_profile

    export XCURSOR_PATH=${XCURSOR_PATH}:~/.local/share/icons

### 显示管理器

光标主题通常可以通过显示管理器设置,但注意光标主题可能不会跨用户会话延续。

#### GDM

请见 GDM (简体中文)#更改光标主题.

## 疑难解答

### 创建丢失光标的链接

当缺少一些光标时,应用可能使用默认光标。这可以通过创建丢失光标的链接来纠正。举个例子:

    $ 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` 来获取你的主题丢失的光标,并且给它们也创建链接。

Tip: 你也可以移除不想要的光标。移除 "watch" 光标的例子:

    $ 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 电脑连接并使用远程机器的光标,这个光标因协议限制导致转译质量差,通常很难看清。

这可以通过用相同(或另一个)光标主题替换这些光标来解决。想要达成目的,必须获得图像的hash。这可以通过在启动设置这些光标的程序前设置 `XCURSOR_DISCOVER` 环境变量来完成:

    $ XCURSOR_DISCOVER=1 rdesktop ...

在首次(而且只有首次)光标设置时,一些细节会被展示出来,像这样

    Cursor image name: 24020000002800000528000084810000
    ...
    Cursor image name: 7bf1cc07d310bf080118007e08fc30ff
    ...
    Cursor hash 24020000002800000528000084810000 returns 0x0

当X光标寻找丢失的光标时,搜索的路径包含了`~/.icons/default/cursors` 所以这里可以放置用于X光标搜索的图像。首先,如果还没有这个目录就创建它:

    $ mkdir -p ~/.icons/default/cursors

然后将hash链接到目标图像。这里我们使用来自 `Vanilla-DMZ` 光标主题的 `left_ptr` 图像

    $ ln -s /usr/share/icons/Vanilla-DMZ/cursors/left_ptr ~/.icons/default/cursors/24020000002800000528000084810000

应用重启后就可以看到更改效果。不需要特殊的启动应用的方法。

#### rdesktop

这里有一些 rdesktop 连接运行 Windows 7 的远程机器时常见的 Microsoft Windows 光标。不幸的是,动态光标难以被覆盖因为它们是被逐帧发送的,所以每一帧都需要一个映射!

    $ ln -s /usr/share/icons/$THEME/cursors/xterm          ~/.icons/default/cursors/00000000017e000002fc000000000000
    $ ln -s /usr/share/icons/$THEME/cursors/right_ptr      ~/.icons/default/cursors/00000093000010860000631100006609
    $ ln -s /usr/share/icons/$THEME/cursors/plus           ~/.icons/default/cursors/01e00000201c00004038000080300000
    $ ln -s /usr/share/icons/$THEME/cursors/left_ptr       ~/.icons/default/cursors/24020000002800000528000084810000
    $ ln -s /usr/share/icons/$THEME/cursors/left_ptr_watch ~/.icons/default/cursors/6ce0180090108e0005814700a0021400
    $ ln -s /usr/share/icons/$THEME/cursors/hand           ~/.icons/default/cursors/d2201000a2c622004385440041308800
    $ ln -s /usr/share/icons/$THEME/cursors/watch          ~/.icons/default/cursors/fc618c00da110f0034fd0e004e082400

### 更改默认 X 形光标

默认的 X 形光标出现在没有设置默认光标为 left_ptr 的窗口管理器或用 XCB 代替 Xlib 的窗口管理器(如 awesome)中。

要想修复只需将下列内容添加到你的 `~/.xinitrc` ,X会话 或 窗口管理器启动配置(如果可以的话,例如 bspwm 的 bspwmrrc)。

    $ xsetroot -cursor_name left_ptr

光标风格列表在 X 协议的 appendix B 中。

### .Xdefaults

如果你有冲突的光标,它可能是因为一个不同的光标已经在 `~/.Xdefaults` 文件中被设置。

### 光标大小在启动时不会改变

如果你正试着通过你的 `~/.xinitrc` 中的 `~/.Xresources` 并且它没用的话,确保 xrandr 在加载 `~/.Xresources` 运行。

确保你的 `~/.xinitrc` 看起来类似于下面这样

    ~/.xinitrc

    xrandr
    ...
    xrdb -merge ~/.Xresources
    exec wm

### Plasma (Wayland) 上的光标大小或主题不变

在使用 Wayland 下的 Plasma 修改光标尺寸或主题时,确保在应用更改后重启。[1] [2].

## 另见

- Xcursor(3) — 获取有关 X 中光标的更多信息(支持的 目录, 格式, 兼容性等等)。
- 要想创作光标文件, 请见 Xcursorgen

Categories:

- X server (简体中文)
- Eye candy (简体中文)