3 votes

Obtenir le nom du processus qui correspond à la fenêtre active.

Comment peut-on le faire en utilisant Python dans Ubuntu ?

3voto

Joe the Person Points 5090

psutil semble être ce que vous voulez.

Ce qui n'est pas clair dans votre question est de savoir si vous voulez le nom de l'exécutable ou le titre de la fenêtre. Cependant, si vous cherchez le nom du processus exécutable, vous pouvez le faire avec psutil et quelques autres fonctions.

Tout d'abord, installez psutil con pip (Python 2) ou pip3 (Python 3). Si la commande n'est pas trouvée, installez la commande python-pip o python3-pip en fonction de la version de Python avec laquelle vous travaillez :

# Python 2
sudo pip install psutil

# Python 3
sudo pip3 install psutil

Ensuite, nous pouvons utiliser psutil dans un script Python donné, et passer un PID. Voici un exemple de ce qu'il peut faire, en exécutant python3 dans la ligne de commande, en travaillant avec le Shell interactif de Python 3, et en obtenant les informations de ce processus en utilisant du code Python directement sur le Shell de 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']
>>>

Comme vous pouvez le constater, ces utilitaires vous permettent d'obtenir du système différentes informations sur le processus, que ce soit sous Windows ou sous Linux, bien que vous deviez d'abord installer le paquet Python.


EDIT

Nous pouvons également enchaîner avec Jacob Vlijm Ici aussi, la réponse de l'entreprise est de récupérer le PID et de le transmettre à psutil (Notez que j'ai raccourci "subprocess" en "sp" dans mon importation, mais il s'agit toujours de la même chose). subprocess ) :

import psutil
import subprocess as sp

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

... et ensuite continuer à utiliser psutil pour extraire des données spécifiques.

1voto

Jacob Vlijm Points 78990

Réponse courte

import subprocess

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

print(pid)

mais vous devrez installer xdotool :

sudo apt install xdotool

Obtenir le nom de la WM_CLASS

On peut même dépasser le 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)

N'oubliez pas que la WM_CLASS est souvent, mais pas nécessairement toujours, le processus. nom .

0voto

ADcomp Points 486
import wnck
screen = wnck.screen_get_default()
window = screen.get_active_window()
pid = window.get_pid()

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X