Obtenez une liste des fenêtres ouvertes sous Linux

24

ps ax affiche tous les processus en cours d'exécution. Je veux faire quelque chose de similaire, mais au lieu des noms des processus réels, je veux que les noms de fenêtre soient listés à la place. Quelle commande Linux fera cela?

tony_sid
la source

Réponses:

35

wmctrl -lpeut être ce que vous cherchez. Le programme wmctrl peut également effectuer des actions simples sur les fenêtres, comme les déplacer et définir leurs propriétés.

Gilles 'SO- arrête d'être méchant'
la source
18

xlsclientsaffiche les clients en cours d'exécution et xwininfo -root -childrenaffiche tous les enfants de la fenêtre racine. Cela inclut également des éléments rendus par votre gestionnaire de fenêtres ou votre bureau.

Aaron Digulla
la source
Il s'agit de la sortie wmctrl -l et de quelques autres.
Smile4ever
4

Voici comment afficher uniquement les noms:

wmctrl -l|awk '{$3=""; $2=""; $1=""; print $0}'

car wmctrl -laffiche un peu plus d'informations que les noms requis dans la question:

comme ça:

0x020002c6  0 ruslan-Latitude-E6410 fromscratch
0x04600007  0 ruslan-Latitude-E6410 Psensor - Temperature Monitor
0x01600007  0 ruslan-Latitude-E6410 Top Expanded Edge Panel
0x01600017  0 ruslan-Latitude-E6410 Bottom Expanded Edge Panel
0x0200000a -1 ruslan-Latitude-E6410 Desktop
0x05a0000c  0 ruslan-Latitude-E6410 ruslan@ruslan-Latitude-E6410: /var/lib/apt
0x05600085  0 ruslan-Latitude-E6410 index.html (~/Dropbox/cpucraft.com/fromscratch) - gedit

et en le filtrant par awknous obtenons uniquement les noms des fenêtres ouvertes:

   fromscratch
   Psensor - Temperature Monitor
   Top Expanded Edge Panel
   Bottom Expanded Edge Panel
   Desktop
   ruslan@ruslan-Latitude-E6410: /var/lib/apt
   index.html (~/Dropbox/cpucraft.com/fromscratch) - gedit
   ubuntu - Get a list of open windows in Linux - Super User - Mozilla Firefox
   [email protected] - FileZilla
Ruslan Gerasimov
la source
2

Si vous voulez simplement les titres et aucune autre information (pas même un espace blanc), vous pouvez utiliser ceci:

wmctrl -l | grep -o "$HOSTNAME.*" | sed "s/$HOSTNAME //g"

Résultat:

linux - Comment grep et remplacer - Débordement de pile - Pale Moon
Comment utiliser une variable dans sed? | Forums Linux Unix | Programmation et script Shell - Pale Moon
Supprimer tout après les caractères * ou # ou & dans le fichier texte avec GREP - Stack Overflow - Pale Moon
Video.mp4 - VLC Media Player
Smile4ever
la source