def __init__(self, options): self._wm = Wm("Parti", options.replace) self._wm.connect("new-window", self._new_window_signaled) self._wm.connect("quit", self._wm_quit) self._trays = TraySet() self._trays.connect("changed", self._desktop_list_changed) # Create our display stage self._world_organizer = WorldOrganizer(self._trays) self._wm.get_property("toplevel").add(self._world_organizer) self._world_organizer.show_all() ltray = options.tray.lower() # __import__ returns topmost module and getattr will not get sub-modules not imported # thus (using these two functions) the module path must be specified twice dynmodule = getattr( getattr(__import__('parti.trays.' + ltray), 'trays'), ltray) dynclass = getattr(dynmodule, options.tray + "Tray") self._trays.new(u("default"), dynclass) self._root_hotkeys = HotkeyManager(gtk.gdk.get_default_root_window()) self._root_hotkeys.add_hotkeys({"<shift><alt>r": "repl"}) self._root_hotkeys.connect("hotkey::repl", lambda *args: self.spawn_repl_window()) for window in self._wm.get_property("windows"): self._add_new_window(window) # Start providing D-Bus api self._dbus = PartiDBusService(self)
def x11_init(self, clobber): X11ServerBase.x11_init(self, clobber) init_x11_filter() self._has_focus = 0 # Do this before creating the Wm object, to avoid clobbering its # selecting SubstructureRedirect. root = gtk.gdk.get_default_root_window() root.set_events(root.get_events() | gtk.gdk.SUBSTRUCTURE_MASK) root.property_change(gtk.gdk.atom_intern("XPRA_SERVER", False), gtk.gdk.atom_intern("STRING", False), 8, gtk.gdk.PROP_MODE_REPLACE, xpra.__version__) add_event_receiver(root, self) ### Create the WM object self._wm = Wm("Xpra", clobber) self._wm.connect("new-window", self._new_window_signaled) self._wm.connect("window-resized", self._window_resized_signaled) self._wm.connect("bell", self._bell_signaled) self._wm.connect("quit", lambda _: self.quit(True)) self.default_cursor_data = None self.last_cursor_serial = None self.send_cursor_pending = False self.cursor_data = None def get_default_cursor(): self.default_cursor_data = get_cursor_image() log("get_default_cursor=%s", self.default_cursor_data) trap.swallow_synced(get_default_cursor) self._wm.enableCursors(True)