Search code examples
pythonlinuxtitlexorgwiimote

Get current window title with Python and Xorg


After stackoverflow answered my previous question on here about my Wiimote left/right click issue, Not only can I move the mouse cursor, I can now left/right click on things. I now have one more question.

What do I use in python to get the title of the current active window? After googling 'X11 Python Window Title', 'Linux Python Window Title' and things similar, All I've found is win32 and tkinker (again?), which isn't what I need.

If you could help, That would be awesome!


Solution

  • EDIT

    best way:

    import gtk
    import wnck
    import glib
    
    class WindowTitle(object):
        def __init__(self):
            self.title = None
            glib.timeout_add(100, self.get_title)
    
        def get_title(self):
            try:
                title = wnck.screen_get_default().get_active_window().get_name()
                if self.title != title:
                    self.title  = title
                    print title
            except AttributeError:
                pass
            return True
    
    WindowTitle()
    gtk.main()
    

    Alternative way:

    from subprocess import PIPE, Popen
    import time
    
    title = ''
    root_check = ''
    
    while True:
        time.sleep(0.6)
        root = Popen(['xprop', '-root'],  stdout=PIPE)
    
        if root.stdout != root_check:
            root_check = root.stdout
    
            for i in root.stdout:
                if '_NET_ACTIVE_WINDOW(WINDOW):' in i:
                    id_ = i.split()[4]
                    id_w = Popen(['xprop', '-id', id_], stdout=PIPE)
    
            for j in id_w.stdout:
                if 'WM_ICON_NAME(STRING)' in j:
                    if title != j.split()[2]:
                        title = j.split()[2]
                        print "current window title: %s" % title