Como identificar uma janela clicando em Wayland

15

Gostaria de identificar a qual processo uma janela pertence em Wayland. Existe algo parecido xpropcom o X que permite ao usuário escolher uma janela clicando e exibindo todos os detalhes da janela, incluindo o PID?

Czerny
fonte
Duvido que exista ou existirá algum comando como o xprop. Um dos principais objetivos do Wayland é restringir o acesso a janelas de outros processos.
Mviereck
@mviereck Certamente o superusuário pode ver as informações da janela, mesmo em Wayland?
Nathaniel M. Beaver
@bariumbitmap: somente se o compositor fornecer essas informações fora de sua própria memória, por exemplo, em um arquivo ou por meio de uma API. Não conheço essa especificação (mas ela pode existir). Obviamente, você pode bifurcar um compositor como o weston e implementá-lo, se não precisar de uma solução geral para todos os compositores.
Mviereck
Por que não apenas xprop? Ele mostra muitos detalhes sobre uma janela via XWayland, incluindo _NET_WM_PID(CARDINAL)o PID do processo de origem.
Istepaniuk

Respostas:

1

Boas notícias, existe algo assim embutido no Gnome Shell, e diferente dos xproptrabalhos com o Xorg e Wayland. Em última análise, isso pode cair no reino de outras ferramentas se você estiver usando o KDE, i3 ou qualquer outra coisa.

Para começar, digite as teclas "ALT + F2" no teclado que abrirão um menu como este:

alt ft

Depois disso, emita o comando lg(para "espelho").

Isso abrirá a janela do espelho, da qual podemos extrair informações da janela. Selecione "janela" no canto superior direito do espelho:

seção da janela

A partir daí, você verá uma lista de janelas, na qual você pode clicar no nome da janela que deseja identificar.

Lista

Nesse caso, escolhi o gedit como exemplo:

gedit

Na linha superior dessa saída, você pode observar:

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

O "GType" será um dos MetaWindowX11 ou MetaWindowWayland.

Esta informação é fornecida em https://fedoraproject.org/wiki/How_to_debug_Wayland_problems

Eu tenho

Brian Redbeard
fonte
3
Isso permite descobrir o PID do processo executando a janela listada?
Czerny
0

um rascunho de xdg-foreignextensão de protocolo , que permite obter identificadores de wl_surface's, criados por outros clientes de Wayland. Tendo o identificador, você pode obter dele qualquer coisa que possa obter das superfícies do seu cliente. No entanto, este protocolo ainda possui limitações:

  • Obviamente, não funcionará se não for implementado nos clientes.
  • Ele é direcionado para clientes que se conhecem , portanto, não fornece uma maneira de acioná-lo: seu cliente se comunica com um cliente estrangeiro de alguma forma, não coberto pela extensão. Em seguida, o cliente estrangeiro publica um identificador para o seu cliente por meio dessa extensão.
  • Ele ganha muito controle, se comparado a xprop. Na verdade, você pode até desenhar em superfícies estranhas!

Portanto, é improvável que isso se torne uma maneira geral de obter parâmetros de superfície de qualquer cliente por qualquer cliente. Mas não perca a esperança: há muitos exemplos na história da tecnologia quando uma tecnologia, inicialmente projetada para algum fim, se tornou amplamente usada para outros fins, como isqueiros de carro ou APIs de acessibilidade no Android. Além disso, no futuro, pode aparecer uma extensão de protocolo mais adequada para sua tarefa, pois há definitivamente uma necessidade (por exemplo, para rastreadores de tempo).

bodqhrohro
fonte