2012-02-01 5 views
7

Jak sprawdzić, czy okno Pygtk znajduje się na bieżącym pulpicie?Sprawdź, czy okno jest na bieżącym pulpicie?

Program jestem mocowania posiada:

if self.pymp.window.get_property('visible'): 
    self.pymp.window.hide() 
else: 
    self.pymp.window.move(self.pymp.position[0], self.pymp.position[1]) 
    self.pymp.window.show() 
    self.pymp.window.present() 

Chcę wymienić:

if self.pymp.window.get_property('visible'): 

Z:

if self.pymp.window.get_property('visible') and window_is_on_current_workspace(self.pymp.window): 

mogę wdrożyć window_is_on_current_workspace(window) z wnck jak:

def window_is_on_current_workspace(window): 
    import wnck 
    v = wnck.screen_get_default() # needed due to known bug 
    xid = window.window.xid 
    win = None 
    while win is None: 
     win = wnck.window_get(xid) 
     if gtk.events_pending(): 
      gtk.main_iteration() 
    wor = win.get_screen().get_active_workspace() 
    return win.is_on_workspace(wor) 

I działa, ale jest nieprzyjemny. Czy jest lepszy sposób to zrobić?

Odpowiedz

2

Możesz użyć wnck. Oto próbka,

+0

Cała pętla może być zastąpiona przez 'window.is_on_workspace (screen.get_active_workspace())'. Nie ma potrzeby powtarzania wszystkich okien. –