So identifizieren Sie das Fenster, indem Sie auf Wayland klicken

15

Ich möchte herausfinden, zu welchem ​​Prozess ein Fenster in Wayland gehört. Gibt es so etwas wie xpropfür X, bei dem der Benutzer durch Klicken ein Fenster auswählen und alle Fensterdetails, einschließlich der PID, ausgeben kann?

czerny
quelle
Ich bezweifle, dass es einen solchen Befehl wie xprop gibt oder geben wird. Ein Hauptziel von Wayland ist es, den Zugriff auf Fenster anderer Prozesse einzuschränken.
Mviereck
@mviereck Sicherlich konnte der Superuser Fensterinformationen sehen, auch in Wayland?
Nathaniel M. Beaver
@bariumbitmap: Nur wenn der Compositor diese Informationen außerhalb seines eigenen Speichers bereitstellt, z. B. in einer Datei oder über eine API. Eine solche Spezifikation ist mir nicht bekannt (kann aber existieren). Natürlich können Sie auch einen Compositor wie Weston forken und selbst implementieren, wenn Sie nicht für alle Compositors eine allgemeine Lösung benötigen.
Mviereck
Warum nicht einfach xprop? Es zeigt eine Menge Details über ein Fenster via XWayland, einschließlich _NET_WM_PID(CARDINAL)des Ursprungsprozesses PID.
Istepaniuk

Antworten:

1

Gute Nachrichten, es gibt so etwas in Gnome Shell eingebautes und anders als xpropbei Xorg und Wayland. Letztendlich kann dies in den Bereich anderer Tools fallen, wenn Sie KDE, i3 oder etwas anderes verwenden.

Geben Sie zunächst die Tasten "ALT + F2" auf der Tastatur ein, um ein Menü wie das folgende aufzurufen:

alt ft

Danach geben Sie den Befehl aus lg (für "Spiegel").

Dies öffnet dann das Spiegelfenster, aus dem wir Fensterinformationen extrahieren können. Wählen Sie "Fenster" in der oberen rechten Ecke des Spiegels:

Fensterabschnitt

Von dort aus sehen Sie eine Liste von Fenstern, in denen Sie auf den Namen des Fensters klicken können, das Sie identifizieren möchten.

aufführen

In diesem Fall habe ich gedit als Beispiel gewählt:

gedit

In der obersten Zeile dieser Ausgabe sehen Sie möglicherweise:

Inspecting object: object instance proxy GType: MetaWindowX11 ...`

Der "GType" ist einer von MetaWindowX11 oder MetaWindowWayland.

Diese Information kommt wie pro https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

Ich habe

Brian Redbeard
quelle
3
Ermöglicht dies also, die PID des Prozesses herauszufinden, der das aufgelistete Fenster ausführt?
Czerny
0

Es gibt einen Entwurf für eine xdg-foreignProtokollerweiterung , mit der Handles wl_surfacevon anderen Wayland-Clients abgerufen werden können. Mit dem Griff erhalten Sie alles, was Sie von Oberflächen Ihres Kunden erhalten können. Dieses Protokoll weist jedoch noch Einschränkungen auf:

  • Offensichtlich funktioniert es nicht, wenn es nicht in Clients implementiert ist.
  • Es richtet sich an Kunden, die sich kennen , und bietet daher keine Möglichkeit, es auszulösen: Ihr Kunde kommuniziert auf irgendeine Weise mit einem ausländischen Kunden, die von der Erweiterung nicht abgedeckt wird. Dann veröffentlicht der ausländische Client über diese Erweiterung ein Handle für Ihren Client.
  • Es gewinnt im Vergleich zu zu viel Kontrolle xprop. Eigentlich kann man sogar auf fremde Oberflächen zeichnen!

Es ist daher unwahrscheinlich, dass dies ein allgemeiner Weg wird, um Oberflächenparameter von jedem Client von jedem Client zu erhalten. Aber keine Hoffnung verlieren: Es gibt viele Beispiele in der Technikgeschichte, in denen eine Technologie, die ursprünglich für einen bestimmten Zweck entwickelt wurde, auch für andere Zwecke eingesetzt wurde, wie z. B. Feuerzeuge für Autos oder Accessibility-APIs in Android. Darüber hinaus wird in Zukunft möglicherweise eine Protokollerweiterung angezeigt, die für Ihre Aufgabe besser geeignet ist, da dies definitiv erforderlich ist (z. B. für Zeiterfassungen).

bodqhrohro
quelle