def __init__(self, applet): self.applet = applet self.applet.set_tooltip_text("Tilo") mateconf_app_key = '/apps/tilo' self.dokey = '/apps/mate-do/Docky/Utilities/DockPreferences' self.mateconf_client = mateconf.client_get_default() #print self.applet.get_size() #print self.applet.get_position() self.orient = self.mateconf_client.get_string(mateconf_app_key + '/Orientation') if self.orient == 'Top': self.mateconf_client.set_string(mateconf_app_key + '/orientation', 'top') else: self.mateconf_client.set_string(mateconf_app_key + '/orientation', 'bottom') proc = os.popen("""ps axo "%p,%a" | grep "Tilo.py" | grep -v grep|cut -d',' -f1""").read() procs = proc.split('\n') if len(procs) > 2: import wnck try: wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) except AttributeError: print "Error: Failed to set libwnck client type, window " \ "activation may not work" screen = wnck.screen_get_default() while gtk.events_pending(): gtk.main_iteration() wins = screen.get_windows_stacked() for win in wins: name = win.get_name() if name == 'GnoMeny.py': if win and win.is_hidden(): sys.exit(1) elif win and win.is_minimized(): win.unminimize(1) elif win and win.is_active() == False: win.activate(1) #Get the default icon theme import Globals as Globals self.Globals = Globals #self.theme.connect('changed', self.icon_theme_changed) from Menu_Main import Main_Menu self.hwg = Main_Menu(self.HideMenu) #print self.hwg.window.window.is_visible() self.ShowMenu()
#: doesn't expose g_log_set_handler() to allow proper filtering. if __name__ == '__main__': # pragma: nocover import subprocess glib_log_filter = subprocess.Popen( ['grep', '-v', 'Unhandled action type _OB_WM'], stdin=subprocess.PIPE) # Redirect stderr through grep os.dup2(glib_log_filter.stdin.fileno(), sys.stderr.fileno()) import pygtk pygtk.require('2.0') import gtk, gobject, wnck logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) try: from Xlib import X from Xlib.display import Display from Xlib.error import BadAccess XLIB_PRESENT = True #: Indicates presence of python-xlib (runtime check) except ImportError: XLIB_PRESENT = False #: Indicates presence of python-xlib (runtime check) DBUS_PRESENT = False #: Indicates availability of D-Bus (runtime check) try: import dbus.service from dbus import SessionBus from dbus.exceptions import DBusException from dbus.mainloop.glib import DBusGMainLoop
if __name__ == '__main__': # pragma: nocover import subprocess glib_log_filter = subprocess.Popen( ['grep', '-v', 'Unhandled action type _OB_WM'], stdin=subprocess.PIPE) # Redirect stderr through grep os.dup2(glib_log_filter.stdin.fileno(), sys.stderr.fileno()) import pygtk pygtk.require('2.0') import gtk, gobject, wnck logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s') wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) try: from Xlib import X from Xlib.display import Display from Xlib.error import BadAccess XLIB_PRESENT = True #: Indicates presence of python-xlib (runtime check) except ImportError: XLIB_PRESENT = False #: Indicates presence of python-xlib (runtime check) DBUS_PRESENT = False #: Indicates availability of D-Bus (runtime check) try: import dbus.service from dbus import SessionBus from dbus.exceptions import DBusException from dbus.mainloop.glib import DBusGMainLoop
"V": "vertical-maximize", "H": "horizontal-maximize", "C": "move-to-center", } } # type: Dict[str, Dict[str, Union[str, int, float, bool, None]]] KEYLOOKUP = { ',': 'comma', '.': 'period', '+': 'plus', '-': 'minus', } #: Used for resolving certain keysyms # TODO: Move this to a more appropriate place wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) # pylint: disable=no-member # TODO: Audit all of my TODOs and API docs for accuracy and staleness. class QuickTileApp(object): """The basic Glib application itself.""" keybinder = None dbus_name = None dbus_obj = None def __init__(self, winman, # type: WindowManager commands, # type: commands.CommandRegistry keys=None, # type: Dict[str, Callable] modmask=None # type: str ): # type: (...) -> None
def ui_tasklist(self): self.workspaces = {} self.windows = {} self.windows_needing_attention = {} self.settings["padding"] = int(self.settings["padding"]) self.settings["opacity"] = int(self.settings["opacity"]) self.opacity = self.settings["opacity"] / 65535.0 self.active_color = Core.hex2rgb(self.settings["active_color"]) if self.bar.cfg["position"] == "top" or self.bar.cfg["position"] == "bottom": self.container = gtk.HBox(False, 0) self.mainbox = gtk.HBox(False, 0) else: self.container = gtk.VBox(False, 0) self.mainbox = gtk.VBox(False, 0) self.mainbox.set_spacing(4) self.mainbox.pack_start(self.container, True) self.container.set_border_width(0) if int(self.settings["show_all_win"]): self.container.set_spacing(4) else: self.container.set_spacing(0) wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) screen = wnck.screen_get_default() self.screen = screen screen.force_update() windows = screen.get_windows() self.scr_width = screen.get_width() self.scr_height = screen.get_height() ws = screen.get_active_workspace() self.is_virtual = ws.is_virtual() self.num_workspaces = screen.get_workspace_count() self.use_viewports = self.is_virtual and self.num_workspaces == 1 if self.use_viewports: # the compiz path: 1 workspace and it is virtual ws_width = ws.get_width() ws_height = ws.get_height() self.num_viewports = ws_width // self.scr_width for i in range(0, self.num_viewports): self.workspace_add(screen, i) else: for i in range(0, screen.get_workspace_count()): self.workspace_add(screen, i) for window in windows: self.window_opened(screen, window) self.add(self.mainbox) self.init_screen_callback(screen) self.create_menu() if int(self.settings["show_desk_pos"]): # ~ screen.connect("active_workspace_changed", self.workspace_changed) self.active_workspace = gtk.Label() self.active_workspace.modify_font(pango.FontDescription(self.settings["desktop_font"])) self.active_workspace.set_use_markup(True) # ~ self.active_workspace.set_alignment(0.5,0.5) self.mainbox.pack_end(self.active_workspace, False, False) if self.bar.cfg["position"] == "top" or self.bar.cfg["position"] == "bottom": self.active_workspace.set_size_request(-1, self.bar.cfg["icon_size"]) else: self.active_workspace.set_size_request(self.bar.cfg["icon_size"], -1) self.active_workspace.show() if int(self.settings["show_desk_pos"]) or not int(self.settings["show_all_win"]): if self.use_viewports: self.screen_signals.append(screen.connect("viewports-changed", self.workspace_changed)) else: self.screen_signals.append(screen.connect("active_workspace_changed", self.workspace_changed)) self.show_all()
def ui_tasklist(self): self.workspaces = {} self.windows = {} self.windows_needing_attention = {} self.settings['padding'] = int(self.settings['padding']) self.settings['opacity'] = int(self.settings['opacity']) self.opacity = self.settings['opacity'] / 65535.0 self.active_color = Core.hex2rgb(self.settings['active_color']) if self.bar.cfg['position'] == 'top' or self.bar.cfg['position'] == 'bottom': self.container = gtk.HBox(False, 0) self.mainbox = gtk.HBox(False, 0) else: self.container = gtk.VBox(False, 0) self.mainbox = gtk.VBox(False, 0) self.mainbox.set_spacing(4) self.mainbox.pack_start(self.container, True) self.container.set_border_width(0) if int(self.settings['show_all_win']): self.container.set_spacing(4) else: self.container.set_spacing(0) wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) screen = wnck.screen_get_default() self.screen = screen screen.force_update() windows = screen.get_windows() self.scr_width = screen.get_width() self.scr_height = screen.get_height() ws = screen.get_active_workspace() self.is_virtual = ws.is_virtual() self.num_workspaces = screen.get_workspace_count() self.use_viewports = self.is_virtual and self.num_workspaces == 1 if self.use_viewports: # the compiz path: 1 workspace and it is virtual ws_width = ws.get_width() ws_height = ws.get_height() self.num_viewports = ws_width // self.scr_width for i in range(0, self.num_viewports): self.workspace_add(screen, i) else: for i in range(0, screen.get_workspace_count()): self.workspace_add(screen, i) for window in windows: self.window_opened(screen, window) self.add(self.mainbox) self.init_screen_callback(screen) self.create_menu() if int(self.settings['show_desk_pos']): #~ screen.connect("active_workspace_changed", self.workspace_changed) self.active_workspace = gtk.Label() self.active_workspace.modify_font(pango.FontDescription(self.settings['desktop_font'])) self.active_workspace.set_use_markup(True) #~ self.active_workspace.set_alignment(0.5,0.5) self.mainbox.pack_end(self.active_workspace, False, False) if self.bar.cfg['position'] == 'top' or self.bar.cfg['position'] == 'bottom': self.active_workspace.set_size_request(-1, self.bar.cfg['icon_size']) else: self.active_workspace.set_size_request(self.bar.cfg['icon_size'], -1) self.active_workspace.show() if int(self.settings['show_desk_pos']) or not int(self.settings['show_all_win']): if self.use_viewports: self.screen_signals.append(screen.connect('viewports-changed', self.workspace_changed)) else: self.screen_signals.append(screen.connect("active_workspace_changed", self.workspace_changed)) self.show_all()
def __init__(self, applet=None, as_awn_applet=False): print "Dockbarx init" self.applet = applet self.groups = None self.windows = None self.container = None self.theme = None self.gkeys = { 'gkeys_select_next_group': None, 'gkeys_select_previous_group': None, 'gkeys_select_next_window': None, 'gkeys_select_previous_window': None } wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) self.screen = wnck.screen_get_default() self.root_xid = int(gtk.gdk.screen_get_default().get_root_window().xid) self.screen.force_update() self.globals = Globals() self.globals.connect('theme-changed', self.reload) #--- Applet / Window container if self.applet is not None: self.applet.set_applet_flags( gnomeapplet.HAS_HANDLE|gnomeapplet.EXPAND_MINOR) if self.applet.get_orient() == gnomeapplet.ORIENT_DOWN \ or applet.get_orient() == gnomeapplet.ORIENT_UP: self.globals.orient = "h" self.container = gtk.HBox() else: self.globals.orient = "v" self.container = gtk.VBox() self.applet.add(self.container) self.pp_menu_xml = """ <popup name="button3"> <menuitem name="About Item" verb="About" stockid="gtk-about" /> <menuitem name="Preferences" verb="Pref" stockid="gtk-properties" /> <menuitem name="Reload" verb="Reload" stockid="gtk-refresh" /> </popup> """ self.pp_menu_verbs = [("About", self.on_ppm_about), ("Pref", self.on_ppm_pref), ("Reload", self.reload)] self.applet.setup_menu(self.pp_menu_xml, self.pp_menu_verbs,None) self.applet_origin_x = -1000 self.applet_origin_y = -1000 # background bug workaround self.applet.set_background_widget(applet) self.applet.show_all() else: self.container = gtk.HBox() self.globals.orient = "h" # Wait until the container is realized before adding anything to it. if not as_awn_applet: gobject.timeout_add(10, self.reload_on_realized) if self.applet is not None: self.applet.connect("size-allocate",self.on_applet_size_alloc) self.applet.connect("change_background", self.on_change_background) self.applet.connect("change-orient",self.on_change_orient) self.applet.connect("delete-event",self.cleanup) self.on_gkeys_changed(dialog=False) self.globals.connect('gkey-changed', self.on_gkeys_changed)
"KP_9": "top-right", "V": "vertical-maximize", "H": "horizontal-maximize", "C": "move-to-center", } } # type: Dict[str, Dict[str, Union[str, int, float, bool, None]]] KEYLOOKUP = { ',': 'comma', '.': 'period', '+': 'plus', '-': 'minus', } #: Used for resolving certain keysyms # TODO: Move this to a more appropriate place wnck.set_client_type(wnck.CLIENT_TYPE_PAGER) # pylint: disable=no-member # TODO: Audit all of my TODOs and API docs for accuracy and staleness. class QuickTileApp(object): """The basic Glib application itself.""" keybinder = None dbus_name = None dbus_obj = None def __init__( self, winman, # type: WindowManager commands, # type: commands.CommandRegistry