Проверить, находится ли окно на текущем рабочем столе?

Как мне проверить, что Окно pygtk находится на текущем рабочем столе?

В программе, которую я исправляю, есть:

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

Я хочу заменить :

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

С помощью:

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

Я могу реализовать window_is_on_current_workspace (window) с помощью wnck как:

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)

И это работает, но неприятно. Есть ли лучший способ сделать это ?

7
задан Dan D. 15 March 2014 в 06:57
поделиться