Como posso espionar as mensagens do cliente X?

8

Em uma batalha contínua contra um ícone feio , descobri que os aplicativos podem se comunicar com a bandeja do sistema enviando mensagens para o cliente X. Existe um utilitário para espionar essas mensagens?

Shawn J. Goff
fonte

Respostas:

8

Execute o aplicativo no xtrace . Ele registrará todas as comunicações entre o aplicativo e o servidor X, incluindo o comando para enviar ou receber uma mensagem do cliente X.

xtrace myapp
Gilles 'SO- parar de ser mau'
fonte
É o que estou tentando resolver - que aplicativo está colocando isso lá? Eu tenho o nome da classe da janela de classe:, gnome-power-managermas não há aplicativo chamado isso. Não há nada que corresponda ao " poder " sendo executado como um daemon.
Shawn J. Goff
1
@ ShawnJ.Goff Rastreie o lado do servidor, ou seja, a bandeja do sistema.
Gilles 'SO- stop be evil'
Ah, e você tem certeza de que a comunicação é via janela de eventos e não via dbus?
Gilles 'SO- stop be evil'
1
@ ShawnJ.Goff gnome-power-manageré hoje partegnome-settings-daemon
Ulrich Dangel
3

Comando

    xev -id WINDOW_ID

imprimirá X11 "eventos da janela". No X11, essas coisas são chamadas de "eventos". (Ao contrário de "mensagens" no Microsoft Windows).

Para obter o ID da janela, use xwininfo.

homem xev, homem xwininfo.

Andrei
fonte
2
Uma [mensagem do cliente] [1] parece ser um tipo de evento. O freedesktop [especificação da bandeja do sistema] [2] fala especificamente sobre uma "x mensagem do cliente". De qualquer forma, tenho a janela correta, mas xevnão estou fornecendo nenhuma informação sobre qual programa está enviando qual evento para essa janela, mas seu status está definitivamente sendo atualizado por alguma coisa. [1]: tronche.com/gui/x/xlib/events/client-communication/... [2]: standards.freedesktop.org/systemtray-spec/...
Shawn J. Goff