4-Elster-4
Anmeldungsdatum: 23. Oktober 2014
Beiträge: 93
|
In Xfce haben die verschiedenen Programme in der GUI Namen, die bei einer nicht-Englischsprachigen Installation von den Namen dahinterstehenden Programmen abweichen. So steht z.B.
hinter Anzeige das Programm xfce4-display-settings , hinter Barrierefreiheit das Programm xfce4-accessibility-setting , hinter Bildschirmschoner-Einstellungen das Programm xfce4-screensaver-preferences , hinter Erscheinungsbild das Programm xfce4-appearance-settings , hinter Sitzungen und Startverhalten das Programm xfce4-settings-editor , usw.
Ob die Namen in der deutschen Lokalisation wirklich sinnvoll sind, will ich hier nicht diskutieren. Es ist auch gar nicht einfach, das immer richtig zu machen, denn einige der Einstellungsprogramme würden unter mehrere Hauptüberschriften passen. Irgendwo gibt es in Xfce sicher eine Tabelle mit den technischen Namen der Programme (Dateinamen der Binärdateien) und den Titeln der Programme gespeichert ist. Wie kann ich dafür sorgen, daß ich schnell und eindeutig identifizieren kann, wie das Programm heißt (Name der Binärdatei), dem ein Fenster auf dem Bildschirm „gehört“? Wie kann ich erfahren, wie ein bestimmter Menüpunkt in der englischen Sprachversion heißt, ohne gleich die gesamte Lokalisiation meines Rechners oder eines installierten Programms zu ändern? Gibt es gar etwas, was temporär (z.B. solange man eine bestimmte Tastenkombination gedrückt hält) das Fenster mit dem Programmdialog im Vordergrund in englischer Sprachversion anzeigt?
Es müßte dazu doch etwas jederzeit und einfach zu Bedienendes geben, damit die ganze Diskussion im Internet über Einzelheiten nicht laufend an babylonischer Sprachverwirrung leidet!
Sinnvollerweise sollte so ein Hilfsmittel auch zusätzlich die Version des damit ermittelten Programms anzeigen und es sollte auf Wahl prüfen können, ob es die neueste „offizielle“ Version für die installierte Version der jeweiligen Linux-Variante ist, ob es eine neuere „freigegebene“ in einem anderen Paket gibt (und von welchem Datum die ist), und wie das Paket genau heißt.
So ein Hilfsmittel würde den Umgang mit Linux sicher sehr grundlegend erleichtern. Vielleicht gibt es das lange, nur habe ich noch nicht davon gehört! Moderiert von Thomas_Do: Dieses Thema ist verschoben worden. Es geht nicht wirklich um Lokalisierung. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“)!
|
Marant--
Anmeldungsdatum: 4. April 2022
Beiträge: 680
|
Für X xprop ? (Auf's Fenster klicken)
|
4-Elster-4
(Themenstarter)
Anmeldungsdatum: 23. Oktober 2014
Beiträge: 93
|
Marant-- schrieb: Für X xprop ? (Auf's Fenster klicken)
Interessant! Da kommt ziemlich viel im Terminal: Wie kann ich darin die (nicht wirklich brauchbare, aber platzverschwenderische) Wiedergabe des Programmlogos unterbinden? Immerhin, mit
| xprop | grep -E "^WM_NAME\(.*\) =.*"
|
bekommt man im Terminal angezeigt, was in der Titelzeile des Fensters steht. Irgendwo sehe ich noch so was:
| WM_CLASS(STRING) = "chromium-browser", "Chromium-browser"
|
wenn ich das mit dem Chromium-Fenster mache, in dem ich mir das gerade ansehe. Aber
| xprop | grep -E "WM_CLASS(STRING) = .*"
|
liefert mir gar nichts zurück. Sicherheitshalber habe ich darin das ^ am Zeilenanfang mal weggelassen. Trotzdem kommt nichts, obwohl ich die davor gezeigte Zeile erhalten habe. So ganz die Lösung meines Problems ist das natürlich noch nicht, aber immerhin ein guter Baustein, wenn man beginnen will, so was zu machen. Aber da bleibt noch viel Wegstrecke! Gibt es keine GUI-basierte Lösung für dieses Problem? Sicher bin ich nicht der erste, der meine o.a. Klagen äußert!
|
ChickenLipsRfun2eat
Supporter
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12070
|
Hallo! Eine nicht-grafische Lösung wäre die Quellen direkt zu befragen. Du hast in {~/.local,/usr}/share/applications/ .desktop-Dateien, in denen diese Informationen stehen. Da kannst du dir dann quasi eine Liste ziehen mit grep -HE 'Name=|Name\[de|Exec' {~/.local,/usr}/share/applications/*.desktop
Hilft dir nicht beim einzelnen identifizieren, aber vielleicht bei den Übersetzungen und spuckt Name, Name[de] und GenericName[de] aus. Comment gäbe es auch noch.
|
Marant--
Anmeldungsdatum: 4. April 2022
Beiträge: 680
|
xprop | grep WM_CLASS als Bsp geht doch... "Grafische Lösung": ☺ notify-send "$(xprop | grep WM_CLASS)" Auf Taste o.ä. legen. Soll's notify-send nicht sein könnte auch per zenity,yad ausgegeben werden.
|
Bleys
Anmeldungsdatum: 13. August 2006
Beiträge: 6053
|
Looking Glas: Alt+F2 → lg Mit GUI und funktioniert auch, anders als xprop, unter Wayland
- Bilder
|
Marant--
Anmeldungsdatum: 4. April 2022
Beiträge: 680
|
Folgendes ist auch ganz praktisch. Gibt Pfad aus. Starten, auf gewünschtes Fenster innerhalb 5s. sleep 5s; ps -Flwwp $(xdotool getwindowpid $(xdotool getwindowfocus)) von Hier.
|
4-Elster-4
(Themenstarter)
Anmeldungsdatum: 23. Oktober 2014
Beiträge: 93
|
Marant-- schrieb: xprop | grep WM_CLASS als Bsp geht doch...
Ah, mein Fehler! Ich hätte die runden Klammern escapen müssen! So geht es auch: | xprop | grep -E "^WM_CLASS\(STRING\)"
|
|
4-Elster-4
(Themenstarter)
Anmeldungsdatum: 23. Oktober 2014
Beiträge: 93
|
Marant-- schrieb: xprop | grep WM_CLASS als Bsp geht doch... "Grafische Lösung": ☺ notify-send "$(xprop | grep WM_CLASS)" Auf Taste o.ä. legen.
Danke für den Tip. Aus dem Terminal funktioniert das: Es kommt eine kreuzförmige Cursormarke. Nachdem ich damit auf das Fenster von Chromium klicke, kommt z.B. oben rechts für einige Sekunden:
WM_CLASS(STRING)="chromium-browser","Chromium-browser" Das ist schon mal das erste Viertel von dem, was ich vorhabe. Wenn ich $(notify-send "$(xprop | grep WM_CLASS)") auf die Tastenkombination Super-y lege, kommt beim Auslösen mit Super-y diese Fehlermeldung: $(xprop | grep WM_CLASS) (ich habe das Kommando, das zuvor im Terminal funktioniert hatte, genau nach Einstellungen>Tastatur>Tastenkürzel für Anwendungen kopiert und da der Tastenkombination Super-y zugewiesen.) Weshalb geht das an der Stelle nicht?
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 10978
|
4-Elster-4 schrieb: Weshalb geht das an der Stelle nicht?
Vermutlich weil der Befehl nicht im Rahmen einer Shell ausgeführt wird - versuch mal sowas wie
| bash -c 'notify-send "$(xprop | grep WM_CLASS)"'
|
|
Marant--
Anmeldungsdatum: 4. April 2022
Beiträge: 680
|
bash -c 'notify-send "$(xprop | grep WM_CLASS)"' So sollte es gehen. Upps. Hat sich überschnitten.. ..oder zur Abwechslung ☺ sh -c 'notify-send "$(xprop | grep WM_CLASS)"' – Falls Du es noch etwas verschönern willt: bash -c 'notify-send -t 10000 -i dialog-information "Dein eigener Text" "$(xprop | grep WM_CLASS)"' Die 10000 ist die Anzeigedauer im ms. Zum 4. Mal editiert.
|
4-Elster-4
(Themenstarter)
Anmeldungsdatum: 23. Oktober 2014
Beiträge: 93
|
Marant-- schrieb: xprop | grep WM_CLASS als Bsp geht doch... "Grafische Lösung": ☺ notify-send "$(xprop | grep WM_CLASS)" Auf Taste o.ä. legen. Soll's notify-send nicht sein könnte auch per zenity,yad ausgegeben werden.
Ich habe versucht, das noch ein bißchen zu verfeinern, damit nur der Programmname oben rechts erscheint: | a@w:~$ QQ=($(xprop | grep WM_CLASS)); echo "${QQ[2]}" # aus dem Ergebnis ein Array machen, 2. Element davon: mit "" und ,
"mousepad",
a@w:~$ QQ=($(xprop | grep WM_CLASS)); echo "${QQ[2]}" | sed -r -e 's/,//g' | sed -r -e 's/"//g' # ohne das
mousepad
a@w:~$ QQ=($(xprop | grep WM_CLASS)); notify-send "${QQ[2]}" | sed -r -e 's/,//g' | sed -r -e 's/"//g'
a@w:~$
|
Mit notify-send kommt aber "mousepad", also mit doppelten Gänsefüßchen und den Komma danach. Das verstehe ich nicht (bin aber nur ein bash-Anfänger). Geht so was eigentlich ohne die Zwischenergebnis-Variable QQ?
|
4-Elster-4
(Themenstarter)
Anmeldungsdatum: 23. Oktober 2014
Beiträge: 93
|
seahawk1986 schrieb: 4-Elster-4 schrieb: Weshalb geht das an der Stelle nicht?
Vermutlich weil der Befehl nicht im Rahmen einer Shell ausgeführt wird - versuch mal sowas wie
| bash -c 'notify-send "$(xprop | grep WM_CLASS)"'
|
Danke, wenn ich bash -c 'notify-send "$(xprop | grep WM_CLASS)"' hinter die Taste lege, funktioniert es tatsächlich! Ich möchte das nun etwas weiter bearbeiten und nur den Programmnamen oben rechts anzeigen. Ich vesuch mal das Rezept aus diesem Tip:
bash -c davor
dann das gewünschte Kommando zwischen einfachen ' .
Wenn ich nun das Kommando so nehme, wie es ist, gibt das sicher Konflikte mit den Paaren von ' . Wahrscheinlich geraten die Paare der Einschlüsse durcheinander. Deshalb habe ich das Kommando bash -c 'notify-send "$(xprop | grep WM_CLASS)"' so in ein weiteres Skript gekapselt: | #!/bin/bash
# ********************** Programmname.sh **************************
QQ=($(xprop | grep WM_CLASS))
notify-send "${QQ[2]}" | sed -r -e 's/,//g' | sed -r -e 's/"//g'
|
Obwohl die beiden verketteten sed -Befehle die doppelten Gänsefüßchen und das Komma beseitigen sollen, kommen sie trotzdem. Und so auch: a@w:~$ bash -c './Programmname.sh'
a@w:~$
|
Marant--
Anmeldungsdatum: 4. April 2022
Beiträge: 680
|
sed betrachte ich lieber von Weitem mit Respekt. ☺ auf die Schnelle:
QQ=($(xprop | grep WM_CLASS))
so: QQ=$(xprop | grep WM_CLASS)
#auch
QQ=`xprop | grep WM_CLASS` -
notify-send "${QQ[2]}" | sed -r -e 's/,//g' | sed -r -e 's/"//g'
notify-send gibt über "xyz" "xyz" aus. Also Befehle, die sich auf Ausgabe beziehen gehören in "xyz". Wenn möglich würde ich das aber gering halten, Variablen vorher setzen/filtern und nur die Variablen selbst mit notify-send ausgeben. Also, z B. var1=1;var2=2;var3=3;var4=4
notify-send "Text mit $var1" "$var2 $var3 $var4"
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 10978
|
4-Elster-4 schrieb: | #!/bin/bash
# ********************** Programmname.sh **************************
QQ=($(xprop | grep WM_CLASS))
notify-send "${QQ[2]}" | sed -r -e 's/,//g' | sed -r -e 's/"//g'
|
Du brauchst eine zusätzliche Process Substitution, damit notify-send nur das Ergebnis vorgesetzt bekommt - die beiden sed-Befehle kann man dann noch zusammenziehen:
| notify-send $(sed -r -e 's/,//g;s/"//g' <<< "${QQ[2]}")
|
|