J'ai besoin de voir les propriétés X de la fenêtre contextuelle Gnome-Do, en ce qui concerne cette question que j'ai posée plus tôt. Le problème est que dès que la fenêtre Gnome-Do perd le focus, elle se ferme, donc je ne peux pas changer le focus sur le terminal pour exécuter xprop
. La réponse que je continue de voir sur Internet est:
sleep 5; xprop
Ouvrez ensuite la fenêtre Gnome-Do et attendez que xprop
démarre. Cela semble intelligent, mais ne fonctionne tout simplement pas:
$ dormir 5; xprop xprop: erreur: impossible de saisir la souris.
Il en va de même pour xwininfo
:
$ dormir 5; xwininfo xwininfo: Veuillez sélectionner la fenêtre sur laquelle vous souhaitez obtenir des informations en cliquant sur la souris dans cette fenêtre. xwininfo: erreur: Impossible de saisir la souris.
J'ai également essayé d'exécuter xprop
à l'aide de Mod+R
raccourci dans Awesome WM, mais pendant que la fenêtre Gnome-Do est ouverte, le raccourci ne fonctionne pas. Il tape simplement un r dans la zone de recherche.
Je n'ai plus d'idées. Comment puis-je faire cela?
Si vous exécutez le script ci-dessous, il enregistre pendant 10 secondes (ou à tout autre moment que vous définissez) la sortie de la commande xprop
sur la fenêtre la plus en avant (exécutant la xprop -root
commande). Par la suite, il écrit la sortie, une fois le temps écoulé, dans un fichier: outfile.txt
Si vous vous assurez de conserver le Gnome-Do
fenêtre active jusqu'à la fin du script, vous pouvez être sûr que le dernier enregistrement correspond au Gnome-Do
fenêtre.
outfile =
, utilisez un chemin absol). Enregistrez-le sous record_xprop.py
Démarrez le script par la commande:
python3 /path/to/record_xprop.py
Appelle ton Gnome-Do
fenêtre (ou toute autre application dont vous avez besoin de données).
xprop -root
commande, séparée par une ligne pointillée.Si vous avez besoin de plus de temps, changez simplement le "5" dans la ligne:
while t < 5:
dans toute autre valeur dont vous avez besoin
#!/usr/bin/env python3
import subprocess
import time
outfile = "/home/jacob/Bureaublad/outfile.txt"
data = []; t = 0
while t < 5:
data.append(subprocess.check_output(["/bin/bash", "-c", "xprop -root"]).decode("utf-8"))
time.sleep(2)
t = t + 1
with open(outfile, "wt") as out:
for rec in data:
out.write(rec+"\n"+"-"*20+"\n\n")
Si cela ne fonctionne pas pour une raison quelconque (apparemment, la fenêtre n'est pas au premier plan, comme le reconnaît xprop
), nous pourrions faire la même astuce avec le wmctrl -l
commande (remplacez xprop -root
par wmctrl -l
dans le script), pour identifier d'abord la fenêtre par son nom.
Une fois cela fait, nous pouvons ensuite réexécuter xprop
, avec le -name
option, pour obtenir les informations nécessaires: xprop -name <windowname>
Pour les deux commandes, vous pouvez exécuter la commande sleep
ou, si vous avez besoin de plus de temps, réexécuter le script.
Jacob l'a compris dans les commentaires!
En utilisant le sleep 1; wmctrl -l
commande, puis en ouvrant Gnome-Do, j'ai obtenu cette sortie:
0x00e000b9 0 bonus-debian Do
Qui montre le nom de la fenêtre Gnome-Do. Ensuite, je pourrais utiliser le nom pour identifier la fenêtre pour xprop:
sleep 1; xprop -name "Do"
Ce qui m'a donné la sortie que je recherchais:
$ dormir 1; xprop -name "Do" WM_STATE (WM_STATE): état de la fenêtre: retiré icône fenêtre: 0x0 GDK_TIMESTAMP_PROP (GDK_TIMESTAMP_PROP) = 0x61 _NET_WM_SYNC_REQUEST_COUNTER (CARDINAL) = 14680093 _ XEMBED_INFO (_XEMBED_INFO) = 0x1, 0x1 _ NET_WM_USER_TIME_WINDOW (WINDOW): id fenêtre de fenêtre # 0xe00004 WM_CLI: 0x_WIND .] _ NET_WM_PID (CARDINAL) = 6708 WM_LOCALE_NAME (STRING) = "en_US.UTF-8" WM_CLIENT_MACHINE (STRING) = "bonus-debian" WM_NORMAL_HINTS (WM_SIZE_HINTS) taille minimale spécifiée du programme: 19 par 19 gravité de la fenêtre: nord-ouest WM_PROTOCOLS (ATOM): protocoles WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST WM_CLASS (STRING) "Faire", "Faire" WM_ICON_NAME (STRING) = "Faire" _ NET_WM_ICON_NAME (UTF8_STRING) = "Faire" WM_NAME (STRING) = "Faire" _NET_WM_NAME (UTF8_STRING) = "Faire"