Obtendo o nome do processo, que corresponde à janela ativa

3

Como isso pode ser feito usando o Python no Ubuntu?

    
por Seth 17.06.2012 / 19:19

3 respostas

1

psutil parece ser o que você pode querer.

O que não está claro na sua pergunta é se você deseja o nome do executável ou o título da janela. No entanto, se você estiver após o nome do processo executável, poderá fazê-lo com psutil e algumas outras funções.

Primeiro, instale psutil com pip (Python 2) ou pip3 (Python 3). Se o comando não for encontrado, instale os pacotes python-pip ou python3-pip , dependendo da versão do Python com a qual você está trabalhando:

# Python 2
sudo pip install psutil

# Python 3
sudo pip3 install psutil

Em seguida, podemos usar psutil em qualquer script Python e passar um PID. Este é um exemplo do que ele pode fazer, executando python3 na linha de comando, trabalhando com o shell interativo do Python 3 e obtendo as informações desse processo usando o código Python diretamente no shell do Python:

>>> import psutil
>>> import os
>>> os.getpid()
6284
>>> p = psutil.Process(os.getpid())
>>> p.name()
'python3'
>>> p.exe()
'/usr/bin/python3.5'
>>> p.cmdline()
['python3']
>>>

Como você pode ver, é possível obter informações diferentes do sistema sobre o processo no Windows ou no Linux com esses utilitários, embora ainda seja necessário instalar o pacote Python primeiro.

EDITAR

Também podemos encadear isso com a resposta de Jacob Vlijm aqui também, para obter o PID e passá-lo em psutil (Note que eu encurto 'subprocesso' para 'sp' na minha importação, mas ainda é o subprocess module):

import psutil
import subprocess as sp

p = psutil.Process(int(sp.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()))

... e continue usando psutil para extrair dados específicos.

    
por Thomas Ward 27.04.2017 / 20:57
1

Resposta curta

import subprocess

pid = subprocess.check_output(["xdotool", "getactivewindow", "getwindowpid"]).decode("utf-8").strip()

print(pid)

mas você precisa instalar xdotool :

sudo apt install xdotool

Obter o nome da WM_CLASS

Podemos até superar o pid:

#!/usr/bin/env python3
import subprocess

w_id = subprocess.check_output(["xdotool", "getactivewindow"]).decode("utf-8")
name = subprocess.check_output(["xprop", "-id", w_id, "WM_CLASS"]).decode("utf-8").strip()

print(name)

Lembre-se que o WM_CLASS frequentemente, mas não necessariamente sempre, é o processo nome .

    
por Jacob Vlijm 27.04.2017 / 20:57
0
import wnck
screen = wnck.screen_get_default()
window = screen.get_active_window()
pid = window.get_pid()
    
por ADcomp 02.07.2012 / 22:45
___ qstntxt ___

Sempre que eu tento instalar o Ubuntu, recebo um erro fatal que diz:

%pre%

É o mesmo que isso , mas meus gráficos parecem estar funcionando bem.

Além disso, sou um novato e preciso de instruções simples para entender o que estou fazendo. Eu tentei arrancar a partir de um LiveCD e um stick USB. Eu não quero dual boot porque é um computador antigo que eu apaguei XP e planeja usar apenas o Linux nele. Quando usei um pendrive e ajustei o armazenamento persistente, consegui executá-lo, mas apenas enquanto o pen drive estava conectado.

    
___ tag123bootloader ___ Um bootloader é um pequeno programa que é executado no momento da inicialização. O bootloader carrega dados e outros processos de inicialização na RAM, onde eles podem ser executados. ___ tag1231204 ___ Quarta versão LTS (Long Term Support) do Ubuntu, codinome Precise Pangolin. Lançado em 26 de abril de 2012, não é mais suportado (EOL) desde 28 de abril de 2017. Perguntas sobre versões não suportadas provavelmente serão encerradas como fora do tópico. ___ answer152160 ___

Por favor, siga este guia link . Embora você provavelmente ainda receba um erro ao acessar o comando grub-install, pelo menos poderá ver (e postar aqui) a mensagem de erro exata para determinar o que está errado.

    
___ Como instalar o ppstream?