![如何使用 Xcursor 覆盖自定义鼠标光标?](https://linux22.com/image/39045/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Xcursor%20%E8%A6%86%E7%9B%96%E8%87%AA%E5%AE%9A%E4%B9%89%E9%BC%A0%E6%A0%87%E5%85%89%E6%A0%87%EF%BC%9F.png)
当我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
就是这样!更改应该立即可见。