xdotool
può farlo.
xdotool getactivewindow
Ho modificato leggermente la tua soluzione in modo che dovrebbe funzionare in modo più efficiente (passa i parametri a xprop in modo che vengano restituiti solo i dati di cui ha bisogno). Inoltre, non sono sicuro che sia necessario bufferizzare l'output di xprop, quindi l'ho rimosso. Dovrebbe anche correggere il ritorno "Finestra attiva non trovata" se per qualche motivo non riesce a trovare la finestra attiva.
def get_active_window_title(self):
root = Popen(['xprop', '-root', '_NET_ACTIVE_WINDOW'], stdout=PIPE)
for line in root.stdout:
m = re.search('^_NET_ACTIVE_WINDOW.* ([\w]+)$', line)
if m != None:
id_ = m.group(1)
id_w = Popen(['xprop', '-id', id_, 'WM_NAME'], stdout=PIPE)
break
if id_w != None:
for line in id_w.stdout:
match = re.match("WM_NAME\(\w+\) = (?P<name>.+)$", line)
if match != None:
return match.group("name")
return "Active window not found"
Puoi ottenere il titolo della finestra attiva con xdotool
:
$ xdotool getactivewindow getwindowname