适用于 4k 屏幕的更大 X11 光标

Jen*_*ens 9 x11 mouse cursor

当显示器是 4k 屏幕时,默认的 X11 光标非常小。如何使用更大的游标?要求:

  • 必须在普通 X11 下工作(没有 KDE、Gnome 或类似的膨胀)
  • 至少应该有一个更大的根窗口光标,即“箭头”
  • 应该在 FreeBSD 上工作

我查看了 Xcursor(3) 手册页,其中讨论了该~/.icons目录,但我不确定将哪些文件放置在那里以及如何激活它们。我在系统上有一堆目录,例如

/usr/local/share/icons/oxygen/64x64
/usr/local/share/icons/oxygen/64x64/categories
/usr/local/share/icons/oxygen/64x64/apps
/usr/local/share/icons/oxygen/64x64/devices
/usr/local/share/icons/oxygen/64x64/emotes
/usr/local/share/icons/oxygen/64x64/mimetypes
/usr/local/share/icons/oxygen/64x64/emblems
/usr/local/share/icons/oxygen/64x64/actions
/usr/local/share/icons/oxygen/64x64/places
/usr/local/share/icons/oxygen/64x64/status
/usr/local/share/icons/oxygen/48x48
/usr/local/share/icons/oxygen/48x48/emotes
/usr/local/share/icons/oxygen/48x48/devices
/usr/local/share/icons/oxygen/48x48/apps
/usr/local/share/icons/oxygen/48x48/mimetypes
/usr/local/share/icons/oxygen/48x48/status
/usr/local/share/icons/oxygen/48x48/emblems
/usr/local/share/icons/oxygen/48x48/actions
/usr/local/share/icons/oxygen/48x48/places
/usr/local/share/icons/oxygen/48x48/categories
/usr/local/share/icons/oxygen/48x48/animations
Run Code Online (Sandbox Code Playgroud)

每个都包含大量图标作为*.png文件。

Dmi*_*lov 5

尽管 dirkt 提供的方法确实有效,但生成的缩放位图光标看起来很难看。有一种方法可以让 X 使用 Type 1 光标字体,并适当地重新缩放它。

默认的 X 光标字体既作为位图字体 (file cursor.pcf.gz) 又作为 Type 1 字体 (file cursor.pfa) 存在。下面提供的方法使位图字体对系统不可用,并将字体名称转换cursor为适当重新缩放的 Type 1 字体的别名(通过fonts.alias文件)。

  1. 卸载包含该文件的包 /usr/share/fonts/misc/cursor.pcf.gz (可以命名为cursor-misc、fonts-misc或类似名称),或者直接删除该文件并禁用对此包的升级,以便 X 服务器无法使用该位图字体。运行mkfontdir /usr/share/fonts/misc以从字体目录中删除位图字体。

  2. 确保包含该文件的包/usr/share/fonts/Type1/cursor.pfa (可以命名为xfree86-type1、fonts-type1或类似名称)已安装。

  3. 创建文件/usr/share/fonts/Type1/fonts.alias 创建包含以下内容的

    cursor -xfree86-cursor-medium-r-normal--0-801-0-0-p-0-adobe-fontspecific
    
    Run Code Online (Sandbox Code Playgroud)
  4. 运行fc-cache -r和xset fp rehash 以使 Type 1 字体可供系统使用。


Gre*_*ods 3

首先,您不需要删除或阻止更新旧文件cursor.pcf。

接下来,如果您的系统已经cursor.pfa在系统正在使用的任何现有字体目录中正确安装了该字体(即它具有有效fonts.dir文件并且已经在服务器字体路径中),那么您不需要安装任何新文件。

如果您确实需要安装cursor.pfa,可以在任何目录中进行安装,包括主目录的子目录(只要它与运行 Xserver 的系统位于同一系统上,并且可由 Xserver 进程访问)。

因此,一旦可缩放光标字体位于字体路径中的某个位置,您就可以在系统上的cursor任何fonts.alias文件中放置字体名称的别名,包括主目录的新子目录中的文件。

最后,您需要在别名规范中包含屏幕的实际分辨率!这并不重要,但它很有帮助,因为它意味着您选择的光标字体点大小将与您在屏幕上看到的指针的物理大小产生有意义的关系 - 即 12pt 光标字体将生成出现的光标指针屏幕上的高度为 12 点!

我目前正在全屏模式下使用 Xquartz(当然是在 macOS 上),具有 32 英寸显示屏的全显示分辨率(即我通过运行 来启动 Xquartz xrandr -s 6016x3384。该cursor.pfa文件已由 Xquartz 安装,并且已在现有fonts.dir文件中提到安装的目录,已经可以通过 找到了xlsfonts。当然cursor.pcf也是已经安装了。

我碰巧有一个~/.fonts目录,我在其中安装了下载的其他一些字体,所以我只是fonts.alias在那里创建了文件,如下所示。您可以看到,我为像素分辨率为每英寸 218 像素的屏幕选择了 18pt 光标字体:

$ cat .fonts/fonts.alias                                                                                                 
cursor -xfree86-cursor-medium-r-normal--0-180-218-218-p-0-adobe-fontspecific
Run Code Online (Sandbox Code Playgroud)

我的字体路径已经包含此目录,因此我只需重新哈希我的字体路径即可进行测试:

$ xset q | sed -n /Font/,+1p   
Font Path:
  /Users/woods/.fonts/,/opt/X11/share/fonts/TTF/,/opt/X11/share/fonts/OTF/,/opt/X11/share/fonts/Type1/,/Library/Fonts/,/opt/X11/share/fonts/100dpi/:unscaled,/opt/X11/share/fonts/misc/:unscaled
$ fc-cache -r
$ xset fp rehash
Run Code Online (Sandbox Code Playgroud)

现在位图和可缩放“光标”字体都可用,但可缩放字体是第一个:

$ xlsfonts -Cl -fn cursor
DIR  MIN  MAX EXIST DFLT PROP ASC DESC NAME
-->    0  255  some    0   29  26   28 -xfree86-cursor-medium-r-normal--0-180-218-218-p-0-adobe-fontspecific
-->    0  153   all    0    9  16   17 cursor
Run Code Online (Sandbox Code Playgroud)

最后,您需要在(重置字体路径后)中执行以下操作~/.xinitrc来重置根窗口光标(因为 Xserver 将以原始的微小位图光标启动):

xsetroot -cursor_name left_ptr
Run Code Online (Sandbox Code Playgroud)

xsetroot您可以立即运行该命令并将光标移动到根窗口上以查看效果。如果您启动任何新程序,它也将使用新的缩放光标。您需要重新启动窗口管理器和所有正在运行的程序,以使它们采用新的缩放光标,因此最简单的方法是注销并再次登录。

有趣的是,由于 macOS 的怪异魔力,我现在在 macOS 世界中遇到了超大的光标。