Na maioria dos casos, abrindo uma janela de terminal, execute o comando
xprop WM_CLASS
.. e, subseqüentemente, clique na janela para fornecer informações suficientes sobre o processo que possui a janela.
Se não , execute o comando (supondo que você tenha wmctrl
instalado):
wmctrl -lp
Faça um palpite na janela da lista, copie a string na terceira coluna (pid) e execute:
ps -p 1337 -o comm=
onde 1337
é o pid que você acabou de copiar. A saída será o processo que possui a janela.
Se você não pode usar o terminal
.. Você poderia manter um arquivo de log, acompanhando:
- aparecendo novas janelas ("NEW")
- fechamento de janelas ("OUT")
- as novas janelas pid pertencem e o aplicativo, como aparece na saída de
ps -e
- a hora de aparecer / fechar
#!/usr/bin/env python3
import subprocess
import time
#---set the path to the log file below
logfile = "window_log"
#---
# clear the file from previous runs
open(logfile, "wt").write("")
def get_wlist():
try:
return subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
def get_wids(currlist):
return [l.split()[0] for l in currlist.splitlines()]
def stamp(s):
t = time.ctime()
return (len(t)*"-")+"\n"+s+" "+t+("\n"+len(t)*"-")
def update_log(data):
with open(logfile, "a+") as log:
for l in data:
log.write(str(l)+"\n")
log.write("\n")
while True:
# wait until the desktop is ready to run wmctrl
wdata1 = get_wlist()
if wdata1:
break
time.sleep(1)
# and then...
wlist1 = get_wids(wdata1)
while True:
time.sleep(1)
wdata2 = get_wlist()
if wdata2:
wlist2 = get_wids(wdata2)
new = [w for w in wlist2 if not w in wlist1]
for item in new:
tstamp = stamp("NEW")
line = wdata2.splitlines()[wlist2.index(item)]
pid = line.split()[2]
match = [p for p in subprocess.check_output(
["ps", "-e"]
).decode("utf-8").splitlines()\
if pid in p][0]
update_log([tstamp, line, match])
out = [w for w in wlist1 if not w in wlist2]
for item in out:
tstamp = stamp("OUT")
line = wdata1.splitlines()[wlist1.index(item)]
pid = line.split()[2]
update_log([tstamp, line])
wlist1 = wlist2; wdata1 = wdata2
-
Certifique-se de que
wmctrl
esteja instaladosudo apt-get install wmctrl
-
Copie o script em um arquivo vazio, salve-o como
logwindows.py
- Defina o caminho para o arquivo de log na cabeça do script
-
Execute o script pelo comando:
python3 /path/to/logwindows.py
- Se necessário, adicione-o aos aplicativos de inicialização se a janela aparecer apenas logo após a inicialização
O script produz um arquivo de log como:
------------------------
NEW Tue Oct 4 17:14:12 2016
------------------------
0x04400007 0 8427 jacob-System-Product-Name Ubuntu
8427 ? 00:00:01 apport-gtk
------------------------
NEW Tue Oct 4 17:14:28 2016
------------------------
0x04e00084 0 8530 jacob-System-Product-Name Niet-opgeslagen document 1 - gedit
8530 ? 00:00:00 gedit
------------------------
NEW Tue Oct 4 17:14:31 2016
------------------------
0x0108deb3 0 2013 jacob-System-Product-Name Persoonlijke map
2013 ? 00:04:20 nautilus
------------------------
NEW Tue Oct 4 17:14:39 2016
------------------------
0x05200085 0 0 N/A QLE Quicklist Editor
1 ? 00:00:02 systemd
------------------------
OUT Tue Oct 4 17:14:55 2016
------------------------
0x05200085 0 0 N/A QLE Quicklist Editor
Como você não pode controlar a hora em que a janela aparece, mas você pode controlar o tempo de fechamento, isso deve fornecer informações suficientes na janela em qualquer situação. / p>