Verwenden eines Shellskripts: Wie erhalte ich den Symbolnamen (oder Pfad) eines geöffneten Fensters im X-basierten Fenstermanager?

697
dgo.a

Ich kann Fenster-IDs und Fenstertitel verwenden wmctrl, aber bisher konnte ich den Pfad zu dem vom Fenster verwendeten Symbol nicht abrufen. Ich habe versucht, die xdg-Hilfsprogramme anzusehen, aber am nächsten war das Installieren / Deinstallieren von Symbolen.

Gibt es eine Möglichkeit, den Namen des von XDG / GTK verwendeten Symbols oder den Pfad zum Verzeichnispfad in einer Shell-Skript / Befehlszeile abzurufen?

1

2 Antworten auf die Frage

1
dgo.a

Anstelle des Namens können Sie also das Bild selbst erhalten:

xprop -id THE_WINDOW_ID -notype 32c _NET_WM_ICON | perl -0777 -pe '@_=/\d+/g; printf "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n", splice@_,0,2; $_=pack "N*", @_; s/(.)(...)/$2$1/gs' > icon.pam 

Sie können diese Ausgabe an pamrgbatopng(von netpbm) weiterleiten, um ein PNG-Bild zu erhalten:

xprop -id THE_WINDOW_ID ... | perl -0777 ... | pamrgbatopng > the_icon.png 

Es ist gehackt, irgendwie langsam, aber es ist etwas.

Credits: Dies ist eine Kombination aus @ Thomas Dickeys Antwort mit [Wie wird das Icon eines laufenden X-Programms ausgegeben ?] ( Https://unix.stackexchange.com/questions/48860/how-to-dump-the- Symbol eines laufenden x-Programms .

0
Thomas Dickey

Sie können es nicht erhalten, wmctrlda es nur die Fenstereigenschaften kennt. Keine der symbolbezogenen Eigenschaften in Extended Window Manager Hinweise weisen darauf hin, wo sich ein Symbol befindet. Das liegt daran, dass es sich um eine In-Memory-Pixmap handeln kann (wie dies bei bestimmten Konfigurationen seit Patch # 282 der Fall ist ).

Vermutlich kennen Sie diese Eigenschaften bereits:

Das ist aber nur ein Ausgangspunkt. Angenommen, es gibt eine Symboldatei, müsste man im Verzeichnisbaum /usr/share/pixmapsnach dem Symbol suchen, in dem Symbole leben, z. B. entsprechend dem aktuellen Thema .

Eine ähnliche Frage wurde in Wie lautet der absolute Pfad eines in einer .desktop-Datei deklarierten Symbols? was darauf hinweist

Das Abrufen des Themennamens ist vom Desktop abhängig. Eine verwandte Frage (und Antwort) wird in der Desktop-Agnostic-Symbol-Suche gefunden

Wenn ich das also richtig interpretiere, liefern Anwendungen normalerweise Pixmap-Daten, die dann von der EWMH-kompatiblen Software zur Anzeige auf dem Bildschirm verwendet werden. (Vielen Dank, dass Sie sich die Zeit genommen haben, eine ausführliche Antwort zu geben.) dgo.a vor 8 Jahren 0
Ein wenig zu vereinfacht: Die meisten Anwendungen, an denen Sie interessiert sind, laden Dateien aus dem `pixmaps`-Verzeichnisbaum. Es gibt jedoch keine Garantie dafür. Thomas Dickey vor 8 Jahren 0