如何使用 Xcursor 覆盖自定义鼠标光标?

Mal*_*ous 8 xorg rdesktop xcursor

当我使用rdesktop连接到 Microsoft Windows 服务器时,鼠标光标设置为 Windows 真彩色光标的单色版本。这最终是一个没有轮廓的白色箭头,因此很难在白色表面上看到它。

我不想更改 Windows 机器上的光标,但我对 Xcursor 工作原理的理解如下:

当设置任何光标时,它会通过文件名(使用光标图像的散列)进行查找,以便如果找到匹配项,则使用该 Xcursor 而不是原始的单色光标。

我的想法是,如果我可以提供这个文件并在其中放置一个更清晰的光标图像(如默认箭头),那么它会在大多数情况下通过使用默认箭头来解决我的问题。此外,rdesktop如果远程机器需要,它仍然允许将光标更改为其他内容(如调整大小的箭头)。

  • 我怎样才能找出rdesktop我得到的光标图像要使用的哈希值?
  • 如何将该哈希映射到我正在使用的主题中的普通箭头光标?

Mal*_*ous 8

我已经想出了如何做到这一点。首先,您必须XCURSOR_DISCOVER在运行设置鼠标光标的程序之前设置环境变量,在我的情况下,是rdesktop

$ XCURSOR_DISCOVER=1 rdesktop ...
Run Code Online (Sandbox Code Playgroud)

这将在第一次设置时打印出每个游标的位图和哈希值一次。这是设置默认 Windows 光标时它吐出的内容,这是我要覆盖的图像:

Cursor image name: 24020000002800000528000084810000
...
Cursor image name: 7bf1cc07d310bf080118007e08fc30ff
...
Cursor hash 24020000002800000528000084810000 returns 0x0
Run Code Online (Sandbox Code Playgroud)

当 Xcursor 查找丢失的光标时,搜索路径包括,~/.icons/default/cursors因此我们可以在此处放置丢失光标的图像。

$ mkdir -p ~/.icons/default/cursors
Run Code Online (Sandbox Code Playgroud)

现在在这里,您只需将任何散列指向现有图像。当应用程序尝试设置哈希值时,将改为使用该图像。在这种情况下,我们希望left_ptr使用Vanilla-DMZ主题中的图像(这是默认箭头):

$ ln -s /usr/share/icons/Vanilla-DMZ/cursors/left_ptr ~/.icons/default/cursors/24020000002800000528000084810000
Run Code Online (Sandbox Code Playgroud)

就是这样!更改应该立即可见。