xdotool
to dokáže.
xdotool getactivewindow
Vaše řešení jsem mírně upravil, takže by mělo běžet efektivněji (předává parametry xprop, takže se vrací pouze data, která potřebuje). Také si nejsem jistý, zda je nutné vyrovnávací paměť výstupu xprop, takže jsem to vyndal. Pokud z nějakého důvodu nemůže najít aktivní okno, měl by také opravit návrat „Aktivní okno nenalezeno“.
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"
Název aktivního okna můžete získat pomocí xdotool
:
$ xdotool getactivewindow getwindowname