Wie überschreibe ich einen benutzerdefinierten Mauszeiger mit Xcursor?

8

Wenn ich rdesktopeine Verbindung zu einem Microsoft Windows-Server herstelle, wird der Mauszeiger auf eine monochrome Version des Windows-Echtfarbencursors gesetzt. Dies ist ein weißer Pfeil ohne Umriss, daher ist es sehr schwierig, ihn über einer weißen Oberfläche zu sehen.

Ich möchte den Cursor auf dem Windows-Computer nicht ändern, aber ich verstehe die Funktionsweise von Xcursor wie folgt:

Wenn ein Cursor gesetzt ist, wird er anhand des Dateinamens (unter Verwendung eines Hashs des Cursorbilds) nachgeschlagen, sodass bei einer Übereinstimmung der Xcursor anstelle des ursprünglichen monochromen verwendet wird.

Meine Idee ist, dass wenn ich diese Datei bereitstellen und ein klareres Cursorbild darin einfügen kann (wie der Standardpfeil), mein Problem meistens durch Verwendung des Standardpfeils gelöst wird. Außerdem kann rdesktopder Cursor weiterhin auf etwas anderes (z. B. einen Pfeil zur Größenänderung) geändert werden, wenn dies auf dem Remote-Computer erforderlich ist.

  • Wie kann ich herausfinden, welchen Hash rdesktopich für das Cursorbild verwenden soll, das ich erhalte?
  • Wie kann ich diesen Hash dem normalen Pfeilcursor in dem von mir verwendeten Thema zuordnen?
Malvineous
quelle

Antworten:

8

Ich habe herausgefunden, wie das geht. Zuerst müssen Sie die XCURSOR_DISCOVERUmgebungsvariable festlegen , bevor Sie das Programm ausführen, das den Mauszeiger setzt. In meinem Fall rdesktop:

$ XCURSOR_DISCOVER=1 rdesktop ...

Dadurch werden Bitmaps und Hashes jedes Cursors nur einmal ausgedruckt, wenn sie zum ersten Mal gesetzt werden. Folgendes wurde ausgespuckt, als der Standard-Windows-Cursor gesetzt wurde. Dies ist das Bild, das ich überschreiben möchte:

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

Wenn Xcursor nach fehlenden Cursorn sucht, enthält der Suchpfad Folgendes, ~/.icons/default/cursorssodass wir hier Bilder für fehlende Cursor platzieren können.

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

Jetzt hier zeigen Sie einfach einen Hash auf ein vorhandenes Bild. Wenn eine Anwendung versucht, den Hash festzulegen, wird stattdessen dieses Image verwendet. In diesem Fall soll das left_ptrBild aus dem Vanilla-DMZThema verwendet werden (dies ist der Standardpfeil) :

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

Das ist es! Die Änderung sollte sofort sichtbar sein.

Malvineous
quelle
Tolle! Wie sind Sie auf die Lösung gekommen?
Zygimantus
1
Ich hatte eine vage Erinnerung daran, wie man benutzerdefinierte Cursor von xcursorAnfang an festlegte, und so konnte ich nach einiger Suche herausfinden, wie Sie mit dem Ersetzen von nicht standardmäßigen Cursorn durch die neuen Xcursor-Bilder umgehen sollen, die Sie bevorzugen.
Malvineous