views:

195

answers:

3

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!

A: 

Is the problem to find out which window is active or what the title is? Getting a window's title is easy:

MainWindow.title()

,where MainWindow is the window's name. No idea about active window though. Never had multiple windows.

Rawing
I need to get the name of the active window, The one in the foreground
dbdii407
+3  A: 

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
killown
this only gives me the title of the window that it's running on. :(
dbdii407
just put a time.sleep and change for other window and you will get the title of the current window. this get the title of current window, and not only the window where it's running
killown
Actually, I did set a time.sleep(3), It still was the same title
dbdii407
dbdii407: answer edited, copy, paste and test.
killown
Yep! That works! Tyvm!
dbdii407
A: 

I think python-wnck might be useful if you want to handle Windows & workspaces & such. I can't find the Python docs immediately, but according to the docs for the libwnck C library that it wraps, it has a wnck_screen_get_active_window() method.

JanC