Mein Kind findet auf Youtube ein Video über einen animierten Mauszeiger
und wie man den ändert. Den Mauszeiger gibt es hier: Electric Lightning =ิ ω
=ิ.ani. Ist natürlich für Windows. Aber das kann man doch bestimmt irgendwie unter
Linux auch benutzen.
Ok, also es scheinen vier Icons drin zu sein. Aber auspacken der Icons klappt damit nicht. Es ist wohl ein Tool für Musik.
Nächster Versuch mit irgendeinem riff-Extraktor von github klappt auch nicht so richtig. Aber
win2xcur klingt gut: `“win2xcur is a tool that converts cursors from Windows format (*.cur,
*.ani) to Xcursor format. This allows Windows cursor themes to be used on Linux, for example.”
Konvertieren
Ja genau das brauche ich: Ich hab eine ani-Datei und brauche ein Format, das ich unter Linux verwenden kann. Leider gibt es
win2xcur nicht als Paket, weder unter Debian noch unter Arch.
Aber kein Problem: Python-Pakete installiert man mit pip:
$ pip install win2xcur
Defaulting to user installation because normal site-packages is not writeable
Collecting win2xcur
Downloading win2xcur-0.1.1-py3-none-any.whl (13 kB)
Requirement already satisfied: numpy in /usr/lib/python3.10/site-packages (from win2xcur) (1.23.3)
Collecting Wand
Downloading Wand-0.6.10-py2.py3-none-any.whl (142 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.8/142.8 kB 4.4 MB/s eta 0:00:00
Installing collected packages: Wand, win2xcur
Successfully installed Wand-0.6.10 win2xcur-0.1.1
Und jetzt? Wie lade oder installiere ich diese Cursor-Datei?
Hier gibt es eine Erklärung von KDE. Ich brauche eine bestimmte
Verzeichnisstruktur mit einer index.theme-Datei und der Cursor-Datei (oder mehrere) und das alles im Homeverzeichnis nach ~/.icons/.
Also gut, dann los, Verzeichnisse anlegen:
$ mkdir -p ~/.icons/electric/cursors
(Mit “-p” legt mkdir auch die fehlenden Verzeichnisse dazwischen an)
Index Datei ~/.icons/electric/index.theme mit diesem Inhalt anlegen:
[Icon Theme]
Name=Electric
Comment=My very own cursor theme
Inherits=Oxygen_Blue
In /usr/share/icons/ gibt es bereits einige Mauszeiger-themes, z.B. Oxygen_Blue (da ich KDE installiert habe) und dort gibt es
auch eine index.theme und ein cursors-Unterverzeichnis mit Unmengen an Dateien.
Offenbar gibt es Regeln, wie diese Dateien zu heißen haben und für
ein vollständiges Theme braucht man wohl einige Mauszeiger. Deswegen klingt Inherits (vererben) praktisch: Ich ersetze nur einen
Mauszeiger und der Rest kommt von Oxygen_Blue.
Nach etwas experimentieren nenne ich meinen neuen Cursor “default” und “left_ptr” (mittels Symbolischem
Link):
Im Arch Wiki gibt es auch noch ein paar Informationen dazu, Stichwort: Cursor Themes.
In KDE in Systemeinstellungen → Erscheinungsbild → Zeiger taucht Electric auf und kann ausgewählt werden. Schick.
Größe
Normalerweise benutze ich einen etwas größeren Mauszeiger (48 statt 24), aber der Electric ist mit 32x32 eher für 24 geeignet und
bei 48 zu klein. Bisher hab ich einfach mit win2xcur die ani-Datei nach X11-Cursor konvertiert. Aber eigentlich sind das nur vier
Bildchen, die mit einem bestimmten Timing durchrotiert werden.
Vielleicht kann man die Icons in Bilder extrahieren, die vergrößern und dann wieder in einen X11-Cursor einpacken?
Es gibt ein Program xcur2png (In Arch, nicht in Debian), das klingt vielversprechend für den ersten Schritt. Mal installieren.
Und ausprobieren:
Das gibt vier png-Dateien: Electric Lightning =ิ ω =ิ_000.png bis ...003.png und config.
In der config steht dies:
#size xhot yhot Path to PNG image delay
32 8 4 Electric Lightning =ิ ω =ิ_000.png 116
32 8 4 Electric Lightning =ิ ω =ิ_001.png 116
32 8 4 Electric Lightning =ิ ω =ิ_002.png 116
32 8 4 Electric Lightning =ิ ω =ิ_003.png 116
xcursorgen ist das Tool für die Rückrichtung (das gibts als Paket). Das braucht aber eine Steuerdatei, die ihm sagt, wo der
Mauszeiger seinen “heißen” Punkt hat, also wo er hinzeigt bzw. hinklickt. Der Mauszeiger muss ja kein Pfeil sein, sondern darf ja
irgendwie ausschauen, z.B. ein Fadenkreuz oder sowas. Das sind die Spalten xhot und yhot. Die erste Spalte ist die Größe und
es lohnt sich (wie immer) die Man-Page zu lesen:
$ man xcursorgen
Wenn man die gleiche Größe verwendet, dann wird es eine Animation und der letzte Wert ist das Timing. Man kann auch mehrere Größen
verwenden, dann hat man mehrere Cursor (ggf mit Animation). Nur hab ich Zweifel, dass das Tool mit Leerzeichen im Dateinamen
klarkommt. Kurz probiert: ja klar, geht schief.
Besser. Jetzt fehlen noch die doppelt so großen Mauszeiger. Man könnte das natürlich in einem Malprogramm, z.B. gimp aufmachen,
die Größe verdoppeln und unter einem neuen Namen speichern. Und das vier mal. Aber das ist mir zu viel Arbeit. Für sowas gibt es
convert von ImageMagick und ein bisschen shell code:
$ for i in {0..3}; do convert electric32_00${i}.png -resize 64x64 electric64_00${i}.png; done
Eine Schleife zählt von 0 bis 3 und ruft 4x convert auf. Das ${i} wird durch 0 bis 3 jeweils ersetzt.
Die config Datei noch anpassen, also size, xhot und yhot verdoppeln:
$ xcursorgen electric default
$ cp default ~/.icons/electric/cursors
Ganz passt es nicht, da Electric 32 bzw 64 Pixel gross ist, aber Oxygen 24, 48 und 72 verwendet. Aber es tut gut genug.
Viewer
Zur Kontrolle wäre ein Mauszeiger Viewer praktisch. Es gibt xcursor-viewer,
allerdings weder in Arch noch in Debian als Paket verfügbar. Also auschecken und selber bauen:
$ git clone https://github.com/drizt/xcursor-viewer.git
$ cd xcursor-viewer
$ mkdir build
$ cd build
$ cmake ..
$ make
$ cp xcursor-viewer ~/.local/bin
(Bei mir ist ~/.local/bin in $PATH).
Dann kann man xcursor-viewer starten und Cursor-Dateien öffnen und anschauen.