Comment puis-je espionner les messages du client X?

8

Dans une bataille sans fin contre une icône laide , j'ai trouvé que les applications peuvent communiquer avec la barre d'état système en envoyant des messages client X. Existe-t-il un utilitaire pour espionner ces messages?

Shawn J. Goff
la source

Réponses:

8

Exécutez l'application sous xtrace . Il enregistrera toutes les communications entre l'application et le serveur X, y compris la commande pour envoyer ou recevoir un message client X.

xtrace myapp
Gilles 'SO- arrête d'être méchant'
la source
C'est en quelque sorte ce que j'essaie de résoudre - quelle application met cela là? J'ai le nom de classe de la fenêtre de classe gnome-power-manager:, mais il n'y a pas d'application qui s'appelle ainsi. Il n'y a rien qui corresponde à " power " fonctionnant en tant que démon.
Shawn J. Goff
1
@ ShawnJ.Goff Tracez le côté serveur, c'est-à-dire la barre d'état système.
Gilles 'SO- arrête d'être méchant'
Oh, et êtes-vous sûr que la communication se fait via des événements de fenêtre et non via dbus?
Gilles 'SO- arrête d'être méchant'
1
@ ShawnJ.Goff gnome-power-managerfait aujourd'hui partie degnome-settings-daemon
Ulrich Dangel
3

Commander

    xev -id WINDOW_ID

imprimera X11 "événements de fenêtre". Dans X11, ces choses sont appelées "événements". (Par opposition aux "messages" dans Microsoft Windows).

Pour obtenir l'identifiant de la fenêtre, utilisez xwininfo.

man xev, man xwininfo.

Andrei
la source
2
Un [message client] [1] semble être un type d'événement. Le freedesktop [spécification de la barre d'état système] [2] parle spécifiquement d'un "message client x". Dans tous les cas, j'ai la bonne fenêtre, mais xevje ne donne aucune information sur le programme qui envoie quel événement à cette fenêtre, mais son état est définitivement mis à jour par quelque chose. [1]: tronche.com/gui/x/xlib/events/client-communication/… [2]: standards.freedesktop.org/systemtray-spec/…
Shawn J. Goff