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

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

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

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

设置任何光标时,都会按文件名(使用光标图像的哈希值)查找它,以便如果找到匹配项,则使用该 Xcursor 而不是原始的单色光标。

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

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

答案1

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

$ XCURSOR_DISCOVER=1 rdesktop ...

然后,这将打印出每个光标的位图和哈希值只有一次当它们第一次设置时。以下是设置默认 Windows 光标时输出的内容,这是我想要覆盖的图像:

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

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

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

现在,您只需将任何哈希值指向现有图像即可。当应用程序尝试设置哈希值时,将使用该图像。在本例中,我们希望left_ptr使用Vanilla-DMZ主题中的图像(这是默认箭头):

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

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

相关内容