É possível recuperar o processo / título da janela ativa no Gnome?

24

Eu preciso de uma solução para obter as informações atuais da janela ativa (focada) em uma área de trabalho do Gnome 2. Estou interessado principalmente no processo que está executando essa janela e o título da janela.

É possível?

SOLUÇÃO:

Como obter o título da janela:

xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1

Obtendo o nome do processo:

ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'

ou:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
    
por Rogach 17.05.2012 / 17:18

5 respostas

17

Você pode usar xdotool , uma ferramenta versátil de automação de janelas X.

focused_window_id=$(xdotool getwindowfocus)
active_window_id=$(xdotool getactivewindow)
active_window_pid=$(xdotool getwindowpid "$active_window_id")

(não sei qual é a diferença entre foco e ativo).

(Eu pensei wmctrl poderia fazer isso, mas aparentemente não.)

    
por 18.05.2012 / 03:19
24

É tão simples assim:

xdotool getactivewindow getwindowname

Boa sorte, espero que funcione para você!

    
por 03.04.2014 / 06:23
7

Mais simples (IMO) que a solução do OP (ou seja, sem ps , grep e awk ), para obter o nome do processo:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

Ou se você quiser um fim de linha:

echo $(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm)
    
por 05.07.2013 / 16:46
4

Experimente o comando xwininfo, link , ele definitivamente retorna o título da janela e, na medida do possível processo vai, bem ...

X atribuiu um ID a ele e se tornou o PID pai da janela e também o ocultaria por padrão, portanto, assumindo que o Gnome tem NET_WM_PID suportado, como esse patch de 2001 indica, ele tem link , então podemos revisar este post, link , onde o autor escreve um pequeno programa em C para converter o ID da janela em PID, voila.

    
por 17.05.2012 / 17:21
1

Sei que a pergunta é antiga, mas também xprop ser mencionado aqui. Está prontamente disponível em X. Pode ser usado de forma interativa:

  1. digite xprop e selecione a janela que você deseja usar o cursor do mouse e, em seguida,
  2. WM_NAME lhe dá o título da janela, _NET_WM_PID dá o pid

Ou você pode informar diretamente à xprop de qual janela você precisa passando a opção -id ou -name . Usando awk , você pode obter o id da janela ativa e passá-lo de volta para xprop como esse (tirado de aqui ):

xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \
xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \%pre%\n" _NET_ACTIVE_WINDOW | awk "{print \}")
\n" _NET_ACTIVE_WINDOW | awk "{print \}")

Por fim, usando a Your Favorite Tool ™ (por exemplo, grep ou sed ) você pode extrair os valores necessários. Por exemplo, para pid , a saída do comando acima pode ser canalizada para sed : sed -nE 's/^_NET_WM_PID.*= ([0-9]+)//p'

    
por 04.01.2018 / 12:48