web-dev-qa-db-fra.com

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

Comment peut-on utiliser Python dans Ubuntu?

3
user71215

psutil semble être ce que vous pourriez vouloir.

Dans votre question, il est difficile de savoir si vous voulez le nom de l’exécutable ou le titre de la fenêtre. Cependant, si vous recherchez le nom du processus exécutable, vous pouvez le faire avec psutil et quelques autres fonctions.

Commencez par installer psutil avec pip (Python 2) ou pip3 (Python 3). Si la commande est introuvable, installez les packages python-pip ou python3-pip en fonction de la version de Python que vous utilisez:

# Python 2
Sudo pip install psutil

# Python 3
Sudo pip3 install psutil

Ensuite, nous pouvons utiliser psutil dans tout 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 utilisant le shell interactif Python 3 et en obtenant les informations de ce processus à l'aide de Python code à droite sur le shell 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, vous pouvez obtenir différentes informations du système sur le processus sous Windows ou Linux à l'aide de ces utilitaires, bien que vous deviez toujours installer le package Python.


MODIFIER

Nous pouvons également enchaîner cela avec la réponse de Jacob Vlijm ici aussi, pour obtenir le PID et le transmettre dans psutil (notez que je raccourcis 'subprocess' en 'sp' dans mon import, mais ça reste le module subprocess):

import psutil
import subprocess as sp

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

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

2
Thomas Ward

Réponse courte

import subprocess

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

print(pid)

mais vous auriez besoin d'installer xdotool:

Sudo apt install xdotool

Obtenez le nom du WM_CLASS

On peut même surpasser 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)

Notez bien que le WM_CLASS est souvent, mais pas toujours, le processus name.

1
Jacob Vlijm
import wnck
screen = wnck.screen_get_default()
window = screen.get_active_window()
pid = window.get_pid()
0
ADcomp