Comment identifier la fenêtre en cliquant dans Wayland


15

Je voudrais identifier le processus auquel appartient une fenêtre dans Wayland. Y a-t-il quelque chose comme xproppour X qui permet à l'utilisateur de choisir une fenêtre en cliquant et affiche tous les détails de la fenêtre, y compris le PID?


Je doute qu'il existe ou qu'il y aura jamais une telle commande comme xprop. L'un des principaux objectifs de Wayland est de restreindre l'accès aux fenêtres d'autres processus.
mviereck

@mviereck Le superutilisateur pouvait sûrement voir les informations de la fenêtre, même à Wayland?
Nathaniel M. Beaver

@bariumbitmap: Uniquement si le compositeur fournit ces informations en dehors de sa propre mémoire, par exemple dans un fichier ou via une API. Je ne suis pas au courant d'une telle spécification (mais elle peut cependant exister). Bien sûr, vous pouvez créer un compositeur comme weston et l'implémenter vous-même, si vous n'avez pas besoin d'une solution générale pour tous les compositeurs.
mviereck

Pourquoi pas juste xprop? Il montre énormément de détails sur une fenêtre via XWayland, y compris _NET_WM_PID(CARDINAL), qui est le PID du processus d'origine.
istepaniuk

Réponses:


1

Bonne nouvelle, il y a quelque chose comme ça dans Gnome Shell, et contrairement aux xproptravaux avec Xorg et Wayland. En fin de compte, cela peut tomber dans le domaine des autres outils si vous utilisez KDE, i3 ou autre chose.

Pour commencer, tapez les touches "ALT + F2" sur le clavier qui fera apparaître un menu comme celui-ci:

alt ft

Après cela, lancez la commande lg(pour "miroir").

Cela fera apparaître la fenêtre en verre, à partir de laquelle nous pouvons extraire des informations sur la fenêtre. Sélectionnez "fenêtre" dans le coin supérieur droit du miroir:

section de fenêtre

De là, vous verrez une liste de fenêtres, à partir de laquelle vous pouvez cliquer sur le nom de la fenêtre que vous souhaitez identifier.

liste

Dans ce cas, j'ai choisi gedit pour un exemple:

gedit

Dans la ligne supérieure de cette sortie, vous remarquerez peut-être:

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

Le "GType" sera l'un de MetaWindowX11 ou MetaWindowWayland.

Ces informations sont fournies par https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

J'ai


3
Est-ce que cela permet de connaître le PID du processus exécutant la fenêtre répertoriée?
czerny

0

Il existe un projet d' xdg-foreignextension de protocole , qui permet d'obtenir des poignées de wl_surface, créées par d'autres clients Wayland. Ayant la poignée, vous pouvez en obtenir tout ce que vous pouvez obtenir des surfaces de votre client. Cependant, ce protocole a encore des limites:

  • De toute évidence, cela ne fonctionnera pas s'il n'est pas implémenté dans les clients.
  • Il est destiné aux clients qui se connaissent , il ne fournit donc pas de moyen de le déclencher: votre client communique avec un client étranger d'une manière ou d'une autre, non couverte par l'extension. Le client étranger publie ensuite un descripteur pour votre client via cette extension.
  • Il gagne trop de contrôle, par rapport à xprop. En fait, vous pouvez même dessiner sur des surfaces étrangères!

Il est donc peu probable que cela devienne un moyen général d'obtenir des paramètres de surface d'un client par un autre. Mais ne perdez pas espoir: il existe de nombreux exemples dans l'histoire de la technologie lorsqu'une technologie, initialement conçue dans un but précis, est devenue largement utilisée à d'autres fins, tout comme les allume-cigares de voiture ou les API d'accessibilité dans Android. De plus, à l'avenir, il peut apparaître une extension de protocole mieux adaptée à votre tâche, car elle est définitivement nécessaire (par exemple, pour les trackers temporels).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.