#!/usr/bin/env python #!coding: utf-8 import gtk, wnck, sys class windowcontextmenu(gtk.Menu): def switch_window(self, widget, window_list): self.popdown() while gtk.events_pending(): gtk.main_iteration(False) try: workspace=window_list.get_workspace() workspace.activate(gtk.get_current_event_time()) except: pass window_list.activate(gtk.get_current_event_time()) while gtk.events_pending(): gtk.main_iteration(False) def displaymenue(self): default = wnck.screen_get_default() default.force_update() workspace=default.get_active_workspace() active_window=default.get_active_window().get_name() if default.get_active_window().has_icon_name(): active_window_menu_item=gtk.ImageMenuItem('_'+default.get_active_window().get_name()) menu_icon=gtk.image_new_from_pixbuf(default.get_active_window().get_icon()) active_window_menu_item.set_image(menu_icon) active_window_menu_item.set_property("always-show-image", True) else: active_window_menu_item=gtk.MenuItem('_'+active_window) active_window_menu_item.connect("activate", self.switch_window, default.get_active_window()) self.append(active_window_menu_item) for window_list in default.get_windows(): window_name=window_list.get_name() if window_name!=active_window: if window_list.has_icon_name(): menu_item=gtk.ImageMenuItem('_'+window_name) menu_icon=gtk.image_new_from_pixbuf(window_list.get_icon()) menu_item.set_image(menu_icon) menu_item.set_property("always-show-image", True) else: menu_item=gtk.MenuItem('_'+window_name) menu_item.connect("activate", self.switch_window, window_list) self.append(menu_item) self.show_all() self.select_first(True) self.popup(None, None, None, 0, gtk.get_current_event_time())