Existe uma ferramenta semelhante ao WinSpy ++ para Linux / X / GTK / QT?

8

Quando eu estava usando o Windows, algumas vezes fiz um bom uso do WinSpy ++, que permitiu apontar para uma janela ou um controle (um widget, um elemento de janela) para ver detalhes sobre ele (incluindo os valores dos campos da estrutura / classe descrevendo essa instância em particular), envie mensagens para o gerenciador de janelas etc. Uma das tarefas triviais comuns para as quais tenho usado foi copiar texto de um widget não selecionável (como um rótulo, que não permite selecionar e copiar texto de da mesma forma que um campo de texto). Existe uma ferramenta análoga que eu possa usar com os aplicativos GNU / Linux GUI?

Ivan
fonte

Respostas:

7

Você não pode esperar um mapeamento 1: 1 aqui. Eu não conheço o WinSpy ++, mas é provável que o que ele possa fazer seja espalhado por várias ferramentas diferentes, alguns de seus recursos simplesmente não fazem sentido no X e, inversamente, as ferramentas do X têm recursos adicionais que não fazem sentido no X Janelas.

A distribuição básica do X11 vem com várias ferramentas simples . Os que têm maior probabilidade de serem relevantes aqui são:

  • xclients para listar os programas que têm conexão com um monitor
  • xprop exibir propriedades da janela
  • xwininfo para exibir informações técnicas sobre uma janela (posição, recursos visuais,…)

Há também ferramentas para manipular recursos do X : appres, editres(para aquelas poucas aplicações que implementá-lo), listres, xrdb.

Dois utilitários de terceiros que geralmente são úteis para obter informações e agir nas janelas são wmctrl(executar ações do gerenciador de janelas na linha de comando) e xdotool(enviar eventos para uma janela).

Gilles 'SO- parar de ser mau'
fonte
6

Nem o gerenciador de janelas nem o servidor X conhecem widgets / controles; portanto, não há uma maneira padrão de uma ferramenta consultar o sistema para obter detalhes dos widgets de outro aplicativo. Um aplicativo envia principalmente ao servidor X coisas como pixmaps, operações de desenho de polígonos e operações de desenho de texto.

No entanto, existem ferramentas que podem ser anexadas a um processo e inspecionar as estruturas de dados do kit de ferramentas do widget. Para aplicativos que usam GTK +, existe o Parasite . Um fork do Parasite agora está incluído no GTK + desde a versão 3.14.

Para o Qt, uma pesquisa rápida exibe o Qt Inspector , inspirado no KSpy, uma ferramenta oculta nos repositórios do KDE.

Se você precisar descobrir qual kit de ferramentas de widget um aplicativo usa, poderá listar as bibliotecas das quais depende usando a ferramenta de linha de comandos ldd.

philippe
fonte
3

Basicamente, não realmente.

Para obter informações sobre uma janela, você pode usar o

xwininfo

comando. No entanto, não surpreendentemente, como o X11 é diferente do Windows, ele não imprime as mesmas informações. Não conheço nenhuma maneira de copiar texto de controles não selecionáveis, embora talvez sejam menos comuns do que no Windows.

Quanto ao envio de mensagens do gerenciador de janelas, não tenho certeza disso. Você pode usar uma ferramenta baseada na extensão XRECORD, por exemplo, Xnee . No entanto, eu nunca tentei isso.

James Youngman
fonte
para copiar texto fora do controle / janela não selecionável, acho que deve fazer parte da acessibilidade (do programa / kit de ferramentas). (mas afaik, o padrão sobre este está longe de amadurecer.)
yuyichao