Example #1
0
	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()
Example #2
0
#: 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
Example #3
0
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
Example #4
0
        "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
Example #5
0
    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()
Example #6
0
    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()
Example #7
0
    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)
Example #8
0
        "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