Anzahl der geöffneten Anwendungsfenster in Linux abrufen

8

Ich möchte feststellen, wie viele Instanzen einer bestimmten Anwendung, die vom Fenstermanager verwaltet werden, geöffnet werden. Im Moment habe ich das:

%Vor%

Angenommen, ich habe Firefox drei Mal geöffnet und übergebe firefox als Argument, die Funktion gibt nur die richtige Zahl zurück, wenn keine "Unterfenster" (z. B. Einstellungsfenster) geöffnet sind. Andernfalls zählt die Funktion diese Fenster ebenfalls.

Ich möchte die Anzahl der Fenster ohne die "Unterfenster" erhalten.

P.S .: Einige Änderungen vorgenommen. Um die Anzahl der Fenster ohne ihre Dialogfenster zu zählen, ist dies meine aktuelle Lösung:

%Vor%

Aber im Fall von Firefox kann das Skript nicht zwischen dem Browserfenster und seinem Einstellungsfenster unterscheiden, da keines von ihnen ein Dialogfenster ist.

Das obige Skript ist ausreichend für mich, weil ich damit herausfinden kann, wie viele Fenster (ohne Dialogfenster) von xfce4-appfinder geöffnet sind. Für xfce4-appfinder funktioniert das Skript, weil sein Einstellungsfenster leicht als Dialogfenster erkannt werden kann. In Firefox kann das Einstellungsfenster sogar eigenständig geöffnet werden, indem firefox -preferences aufgerufen wird. Solche Fenster als eine Art "Unterfenster" zu erkennen ist vielleicht unmöglich.

Hier sind meine Ergebnisse von xprop und xwininfo für den Browser und das Einstellungsfenster von Firefox:

xwininfo (Browser):

%Vor%

xwininfo (Einstellungen):

%Vor%

xprop (Browser):

%Vor%

xprop (Einstellungen)

%Vor%     
andreas1724 21.10.2014, 18:51
quelle

1 Antwort

1

Ich weiß nicht, dass es eine einfache Antwort darauf gibt. Sie werden wahrscheinlich die Fenster genauer untersuchen und alle, die nicht das sind, was Sie wollen, aussortieren.

Die Gruppenleitereigenschaft in einem Fenster könnte nützlich sein. (Einige Unterfenster sollten dies haben und Hauptfenster dürfen nicht).

Sie können auch die vollständigen WM_CLASS- und WM_WINDOW_ROLE-Werte anzeigen, die Ihnen bei der Unterscheidung zwischen Fenstertypen helfen können.

Die Eigenschaften von _NET_WM_WINDOW_TYPE usw. sind wahrscheinlich auch hilfreich, um herauszufinden, welche Art von Fenster Sie betrachten.

Spielen Sie mit xwininfo und xprop in den verschiedenen Fenstern auf Ihrem Bildschirm herum und Sie werden sehen, was Sie finden können.

    
Etan Reisner 21.10.2014 19:00
quelle

Tags und Links