| 129 | 1 #!/usr/bin/env python | 
|  | 2 | 
|  | 3 """ | 
|  | 4 get the active window title | 
|  | 5 """ | 
|  | 6 | 
|  | 7 import re | 
|  | 8 import subprocess | 
|  | 9 | 
|  | 10 def active_window_id(): | 
|  | 11     process = subprocess.Popen(['xprop', '-root'], stdout=subprocess.PIPE) | 
|  | 12     stdout, stderr = process.communicate() | 
|  | 13     for line in stdout.splitlines(): | 
|  | 14         if '_NET_ACTIVE_WINDOW(WINDOW):' in line: | 
|  | 15             return line.rsplit(None, 1)[-1] | 
|  | 16 | 
|  | 17 def window_title(window_id): | 
|  | 18     process = subprocess.Popen(['xprop', '-id', window_id], stdout=subprocess.PIPE) | 
|  | 19     stdout, stderr = process.communicate() | 
|  | 20     for line in stdout.splitlines(): | 
|  | 21         match = re.match("WM_NAME\((?P<type>.+)\) = (?P<name>.+)", line) | 
|  | 22         if match: | 
|  | 23             type = match.group("type") | 
|  | 24             if type == "STRING" or type == "COMPOUND_TEXT": | 
|  | 25                 return match.group("name").strip('"') | 
|  | 26 | 
|  | 27 def active_window_title(): | 
|  | 28     return window_title(active_window_id()) | 
|  | 29 | 
|  | 30 def main(): | 
|  | 31     title = active_window_title() | 
|  | 32     print title | 
|  | 33 | 
|  | 34 if __name__ == '__main__': | 
|  | 35     main() |