光标主题
显示服务器有着一个从各方面帮助GUI界面导航和操作的光标主题。显示服务器自带一个光标主题,但依然可以安装并使用其他光标主题。
安装[编辑 | 编辑源代码]
可以通过软件包安装,也可以下载光标主题并解压到恰当的路径来安装。
通过软件包[编辑 | 编辑源代码]
下列链接提供可用的光标主题软件包:
手动安装[编辑 | 编辑源代码]
在官方仓库或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" 这一行。如果有,检查继承的主题是否也存在(有必要时重命名)。
配置[编辑 | 编辑源代码]
有许多方法设置光标主题。
XDG 规范[编辑 | 编辑源代码]
如果想要为指定用户配置,创建并编辑 ~/.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
~/.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
如果对支持的光标大小有疑问,在没有这个设置的情况下启动 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
来获取你的主题丢失的光标,并且给它们也创建链接。
$ 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