| 
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()
 |