Découvrez l'application sous la souris

11

Il m'arrive souvent qu'une application affiche une question et je me demande à quelle application exacte appartient cette fenêtre, car si je regarde dans le lanceur, il n'y a aucune application qui a actuellement le focus (pas de triangle blanc sur le côté droit de l'icône) quand je concentre la fenêtre de message)

Existe-t-il un moyen de découvrir l'appartenance d'une fenêtre ouverte?

rubo77
la source

Réponses:

11

Utilisation de xdotool

Assurez xdotool- vous d'abord que votre système est disponible:

sudo apt-get install xdotool

La commande suivante imprime le nom du processus de la fenêtre actuellement active:

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

Pour vous donner plus de temps pour concentrer la fenêtre / cliquez dessus, vous pouvez ajouter une petite durée de sommeil:

sleep 5 && cat "/proc/$(xdotool getwindowpid "$(xdotool getwindowfocus)")/comm"

Le nom du processus doit être affiché après un court laps de temps.


Utilisation de wininfo

Wininfo est un utilitaire graphique qui affiche diverses informations sur les fenêtres et leurs propriétés, y compris le PID (ID de processus) associé à la fenêtre:

image du PID dans wininfo

wininfo devrait être disponible dans les dépôts officiels:

sudo apt-get install wininfo

Après avoir déterminé le PID de la fenêtre, vous pouvez ensuite rechercher le nom du processus qui lui est associé. Il existe différentes façons de procéder, par exemple en examinant /proc:

$ cat /proc/17002/comm
gnome-terminal

Ce serait le nom du processus associé au PID 17002.

Une manière plus élégante qui permet d'inspecter le contexte de l'arborescence des processus, comme suggéré par @Rmano :

$ pstree -a -s -l -p -u 17002
init,1
  └─lightdm,1900
      └─lightdm,3202 --session-child 12 19
          └─lxsession,3307,glutanimate -s LXDE -e LXDE
              └─openbox,3362 --config-file /home/glutanimate/.config/openbox/lxde-rc.xml
                  └─gnome-terminal,17002
                      ├─bash,1841
                      ├─bash,2332
                      ├─bash,2424
                      │   └─pstree,2484 -a -s -l -p -u 17002
                      ├─gnome-pty-helpe,1840
                      ├─{gnome-terminal},1835
                      ├─{gnome-terminal},1836
                      ├─{gnome-terminal},1842
                      └─{gnome-terminal},2269

Bien sûr, vous pouvez également combiner pstreeavec l' xdotooloption ci-dessus (merci à @ rubo77 de l'avoir signalé!):

sleep 2; pstree -spaul $(xdotool getwindowpid "$(xdotool getwindowfocus)")

Sources:

/unix//q/38867/29245

http://www.linuxquestions.org/questions/debian-26/how-to-find-the-process-associated-with-a-top-level-x-window-907125/

/superuser//q/632979/170160

Glutanimate
la source
1
+1 pour la bonne réponse. Si le PID est celui d'un enfant de l'application principale, vous pouvez suggérer dont l'utilisation pstree -a -s -l -p -u $PIDest plutôt sympa ...
Rmano
@Rmano: Oh, c'est bien! Je l'ai ajouté à la réponse.
Glutanimate
Le echo $()dans vos commandes n'est pas nécessaire.
pause jusqu'à nouvel ordre.
@DennisWilliamson Merci pour le pointeur. Édité.
Glutanimate
1
xdotool getwindowpid "$(xdotool getwindowfocus)"xdotool getwindowfocus getwindowpid
Veedrac
2

Vous pouvez créer un raccourci clavier avec cette commande:

zenity --info --text $(xprop $win_id WM_CLASS | cut -d" " -f4-)
TuKsn
la source
1
C'est une très bonne solution, +1. Cependant, un petit problème: si l'application n'attribue pas un WMCLASS approprié (ce qui est souvent le cas avec les boîtes de dialogue cryptiques), xprop ne sera d'aucune aide.
Glutanimate
Aviez-vous un exemple pour une application (popup) qui ne fonctionnait pas, merci.
TuKsn
1
Je n'ai rien de spécifique à portée de main, mais je me souviens avoir rencontré des problèmes avec plusieurs applications Java et d'autres programmes obscurs qui n'avaient pas WMCLASS défini (ou défini sur quelque chose de générique comme java-window). J'ai rencontré ce genre de problèmes il y a quelque temps lorsque j'essayais d'implémenter des règles spécifiques à l'application dans ma configuration de gestionnaire de fenêtres.
Glutanimate
1
Vous avez raison , il y a un problème similaire avec des applications créées avec QML / qt -> bugreports.qt-project.org/browse/QTBUG-29396
TuKsn
Comment créez-vous un raccourci clavier pour cela? J'ai essayé, comme indiqué ci-dessous, mais zenity n'apparaît pas
rubo77
2

Vous pouvez utiliser xproppour obtenir l'ID de processus de la fenêtre cliquée:

xprop $win_id _NET_WM_PID

puis analysez-le avec pstree:

pstree -spaul $(xprop $win_id _NET_WM_PID | cut -d" " -f3-)

Vous pouvez le rediriger vers une fenêtre d'informations textuelles avec

pstree -spaul $(xprop $win_id _NET_WM_PID | cut -d" " -f3-)|zenity --text-info --title "pstree of clicked Window"

J'ai essayé de créer un raccourci clavier pour cette dernière commande (si vous en avez besoin régulièrement), mais pour une raison quelconque, cela ne fonctionne pas.

rubo77
la source
0

Avec xdtool et yad installés, vous pouvez avoir une belle application graphique.

#!/bin/bash
while true; do cat "/proc/$(xdotool getwindowpid "$(xdotool 
getwindowfocus)")/comm"; sleep 1; echo -e '\f'; done | yad --no- 
buttons --no-focus --geometry 250x10 --fixed --text-info -- 
title="Active window" --listen
Peter Bauer
la source