def __init__(self): self.screen_number = display_get_default().get_default_screen( ).get_number() self.root_window = get_default_root_window() self.pointer_device = XTestPointerDevice() self.last_mouse_user = None GTKServerBase.__init__(self)
def init(self, opts): GTKServerBase.init(self, opts) ShadowServerBase.init(self, opts) self.tray = opts.tray self.tray_icon = opts.tray_icon if self.tray: self.setup_tray()
def init(self, opts): self.randr = opts.resize_display self.fake_xinerama = opts.fake_xinerama self.current_xinerama_config = None with xsync: self.x11_init() GTKServerBase.init(self, opts)
def cleanup(self): tw = self.tray_widget traylog("cleanup() tray_widget=%s", tw) if tw: self.tray_widget = None tw.cleanup() GTKServerBase.cleanup(self)
def __init__(self): #TODO: root should be a wrapper for the win32 system metrics bits? #(or even not bother passing root to ShadowServerBase? import gtk.gdk ShadowServerBase.__init__(self, gtk.gdk.get_default_root_window()) GTKServerBase.__init__(self) self.keycodes = {}
def init(self, opts): self.randr = opts.resize_display self.fake_xinerama = False #only enabled in seamless server self.current_xinerama_config = None with xsync: self.x11_init() GTKServerBase.init(self, opts)
def last_client_exited(self): log("last_client_exited() mapped=%s", self.mapped) for wid in tuple(self.mapped): self.stop_refresh(wid) #revert to default icon: if not self.tray_icon: self.set_tray_icon("server-notconnected") GTKServerBase.last_client_exited(self)
def cleanup(self): self.cleanup_tray() #root window models aren't like regular window models #(which get cleaned up using the unmanage signal) for model in self._id_to_window.values(): model.cleanup() ShadowServerBase.cleanup(self) GTKServerBase.cleanup(self)
def __init__(self): ShadowServerBase.__init__(self, gtk.gdk.get_default_root_window()) GTKServerBase.__init__(self) #for managing the systray self.tray_menu = None self.tray_menu_shown = False self.tray_widget = None self.tray = False self.tray_icon = None
def init(self, opts): self.fake_xinerama = opts.fake_xinerama self.current_xinerama_config = None if self.fake_xinerama: self.libfakeXinerama_so = find_libfakeXinerama() else: self.libfakeXinerama_so = None self.x11_init() GTKServerBase.init(self, opts)
def __init__(self): import gtk.gdk ShadowServerBase.__init__(self, gtk.gdk.get_default_root_window()) GTKServerBase.__init__(self) self.keycodes = {} from xpra.net.bytestreams import set_continue_wait #on win32, we want to wait just a little while, #to prevent servers spinning wildly on non-blocking sockets: set_continue_wait(5)
def add_listen_socket(self, socktype, sock): log("add_listen_socket(%s, %s)", socktype, sock) if socktype=="named-pipe": #named pipe listener uses a thread: sock.new_connection_cb = self._new_connection self.socket_types[sock] = socktype sock.start() else: GTKServerBase.add_listen_socket(self, socktype, sock)
def add_listen_socket(self, socktype, sock): log("add_listen_socket(%s, %s)", socktype, sock) if socktype == "named-pipe": #named pipe listener uses a thread: sock.new_connection_cb = self._new_connection self.socket_types[sock] = socktype sock.start() else: GTKServerBase.add_listen_socket(self, socktype, sock)
def __init__(self): #sanity check: image = CG.CGWindowListCreateImage(CG.CGRectInfinite, CG.kCGWindowListOptionOnScreenOnly, CG.kCGNullWindowID, CG.kCGWindowImageDefault) if image is None: raise Exception("cannot grab test screenshot - maybe you need to run this command whilst logged in via the UI") ShadowServerBase.__init__(self, gtk.gdk.get_default_root_window()) GTKServerBase.__init__(self)
def __init__(self): from xpra.gtk_common.gtk_util import get_default_root_window ShadowServerBase.__init__(self, get_default_root_window()) GTKServerBase.__init__(self) #for managing the systray self.tray_menu = None self.tray_menu_shown = False self.tray_widget = None self.tray = False self.tray_icon = None
def __init__(self): from xpra.gtk_common.gtk_util import get_default_root_window ShadowServerBase.__init__(self, get_default_root_window()) GTKServerBase.__init__(self) self.session_type = "shadow" self.pointer_position_timer = None #for managing the systray self.tray_menu = None self.tray_menu_shown = False self.tray_widget = None self.tray = False self.tray_icon = None
def __init__(self): self.screen_number = display_get_default().get_default_screen( ).get_number() self.root_window = get_default_root_window() self.pointer_device = XTestPointerDevice() self.touchpad_device = None self.pointer_device_map = {} self.keys_pressed = {} self.last_mouse_user = None self.x11_filter = False GTKServerBase.__init__(self) log("XShape=%s", X11Window.displayHasXShape())
def __init__(self): self.screen_number = Gdk.Screen.get_default().get_number() self.root_window = get_default_root_window() self.pointer_device = XTestPointerDevice() self.touchpad_device = None self.pointer_device_map = {} self.keys_pressed = {} self.last_mouse_user = None self.libfakeXinerama_so = None self.x11_filter = False self.randr_sizes_added = [] GTKServerBase.__init__(self) log("XShape=%s", X11Window.displayHasXShape())
def do_get_info(self, proto, server_sources, window_ids): info = GTKServerBase.do_get_info(self, proto, server_sources, window_ids) info["server.type"] = "Python/gtk/x11" try: from xpra.x11.gtk_x11.composite import CompositeHelper info["server.XShm"] = CompositeHelper.XShmEnabled except: pass #randr: try: sizes = RandR.get_screen_sizes() if self.randr and len(sizes)>=0: info["server.randr.options"] = list(reversed(sorted(sizes))) except: pass try: from xpra.scripts.server import find_fakeXinerama fx = find_fakeXinerama() except: fx = None info["server.fakeXinerama"] = self.fake_xinerama and bool(fx) info["server.libfakeXinerama"] = fx or "" #this is added here because the server keyboard config doesn't know about "keys_pressed".. info["keyboard.state.keys_pressed"] = list(self.keys_pressed.keys()) return info
def make_hello(self, source): capabilities = GTKServerBase.make_hello(self, source) capabilities["server_type"] = "Python/gtk/x11" if source.wants_features: capabilities["resize_screen"] = self.randr capabilities["force_ungrab"] = True return capabilities
def get_ui_info(self, proto, wids=None, *args): import threading log("do_get_info thread=%s", threading.current_thread()) info = GTKServerBase.get_ui_info(self, proto, wids, *args) #this is added here because the server keyboard config doesn't know about "keys_pressed".. info.setdefault("keyboard", {}).update({ "state": { "keys_pressed": list(self.keys_pressed.keys()) }, "fast-switching": True, }) sinfo = info.setdefault("server", {}) try: from xpra.x11.gtk2.composite import CompositeHelper sinfo["XShm"] = CompositeHelper.XShmEnabled except: pass #cursor: log("do_get_info: adding cursor=%s", self.last_cursor_data) info.setdefault("cursor", {}).update(self.get_cursor_info()) with xswallow: sinfo.update({ "Xkb": X11Keyboard.hasXkb(), "XTest": X11Keyboard.hasXTest(), }) #randr: try: with xsync: sizes = RandR.get_screen_sizes() if self.randr and len(sizes) >= 0: sinfo["randr"] = {"options": list(reversed(sorted(sizes)))} except: pass return info
def do_get_info(self, proto, server_sources, window_ids): start = time.time() info = GTKServerBase.do_get_info(self, proto, server_sources, window_ids) if self.opengl_props: info["opengl"] = self.opengl_props #this is added here because the server keyboard config doesn't know about "keys_pressed".. info.setdefault("keyboard", {}).update({ "state" : { "keys_pressed" : list(self.keys_pressed.keys()) }, "fast-switching" : True, }) sinfo = info.setdefault("server", {}) sinfo.update({"type" : "Python/gtk/x11", "fakeXinerama" : self.fake_xinerama and bool(self.libfakeXinerama_so), "libfakeXinerama" : self.libfakeXinerama_so or "", "Xkb" : X11Keyboard.hasXkb(), "XTest" : X11Keyboard.hasXTest(), }) try: from xpra.x11.gtk2.composite import CompositeHelper sinfo["XShm"] = CompositeHelper.XShmEnabled except: pass #randr: try: sizes = RandR.get_screen_sizes() if self.randr and len(sizes)>=0: sinfo["randr"] = {"options" : list(reversed(sorted(sizes)))} except: pass log("X11ServerBase.do_get_info took %ims", (time.time()-start)*1000) return info
def do_get_info(self, proto, server_sources, window_ids): info = GTKServerBase.do_get_info(self, proto, server_sources, window_ids) info["server.type"] = "Python/gtk/x11" try: from xpra.x11.gtk_x11.composite import CompositeHelper info["server.XShm"] = CompositeHelper.XShmEnabled except: pass #randr: try: sizes = RandR.get_screen_sizes() if self.randr and len(sizes) >= 0: info["server.randr.options"] = list(reversed(sorted(sizes))) except: pass try: from xpra.scripts.server import find_fakeXinerama fx = find_fakeXinerama() except: fx = None info["server.fakeXinerama"] = self.fake_xinerama and bool(fx) info["server.libfakeXinerama"] = fx or "" #this is added here because the server keyboard config doesn't know about "keys_pressed".. info["keyboard.state.keys_pressed"] = list(self.keys_pressed.keys()) return info
def make_hello(self, source): capabilities = GTKServerBase.make_hello(self, source) capabilities["server_type"] = "Python/gtk/x11" if source.wants_features: capabilities.update({ "resize_screen": self.randr, "resize_exact": self.randr_exact_size, "force_ungrab": True, "keyboard.fast-switching": True, "wheel.precise": self.pointer_device.has_precise_wheel(), "touchpad-device": bool(self.touchpad_device), }) if self.randr: sizes = RandR.get_xrr_screen_sizes() if len(sizes) > 1: capabilities["screen-sizes"] = sizes if self.default_cursor_image and source.wants_default_cursor: capabilities["cursor.default"] = self.default_cursor_image return capabilities
def _new_connection(self, listener, *args): socktype = self.socket_types.get(listener) log("_new_connection(%s) socktype=%s", listener, socktype) if socktype!="named-pipe": return GTKServerBase._new_connection(self, listener) pipe_handle = args[0] conn = NamedPipeConnection(listener.pipe_name, pipe_handle) return self.make_protocol(socktype, conn, frominfo=" on %s" % conn.target)
def get_info(self, proto): info = GTKServerBase.get_info(self, proto) info.setdefault("features", {})["shadow"] = True info.setdefault("server", { "type" : "Python/gtk2/win32-shadow", "tray" : self.tray, "tray-icon" :self.tray_icon or ""}) return info
def get_child_env(self): #adds fakexinerama: env = GTKServerBase.get_child_env(self) if self.fake_xinerama: libfakeXinerama_so = self.find_fakeXinerama() if libfakeXinerama_so: env["LD_PRELOAD"] = libfakeXinerama_so return env
def do_get_info(self, proto, server_sources, window_ids): info = GTKServerBase.do_get_info(self, proto, server_sources, window_ids) info["server.type"] = "Python/gtk/x11" try: from xpra.x11.gtk_x11.composite import CompositeHelper info["server.XShm"] = CompositeHelper.XShmEnabled except: pass return info
def make_hello(self, source): capabilities = GTKServerBase.make_hello(self, source) capabilities["server_type"] = "Python/gtk/x11" if source.wants_features: capabilities.update({ "resize_screen" : self.randr, "force_ungrab" : True, "keyboard.fast-switching" : True, }) return capabilities
def get_info(self, proto): info = GTKServerBase.get_info(self, proto) info.setdefault("features", {})["shadow"] = True info.setdefault("server", {})["type"] = "Python/gtk2/osx-shadow" info.setdefault("damage", {}).update({ "notifications" : self.refresh_registered, "count" : self.refresh_count, "rectangles" : self.refresh_rectangle_count, }) return info
def make_hello(self, source): capabilities = GTKServerBase.make_hello(self, source) capabilities["server_type"] = "Python/gtk/x11" if source.wants_features: capabilities.update({ "resize_screen": self.randr, "force_ungrab": True, "keyboard.fast-switching": True, }) return capabilities
def get_info(self, proto, *_args): info = GTKServerBase.get_info(self, proto) info.update(GTKShadowServerBase.get_info(self, proto)) info.setdefault("features", {})["shadow"] = True info.setdefault("server", { "pixel-depth": self.pixel_depth, "type" : "Python/gtk2/win32-shadow", "tray" : self.tray, "tray-icon" : self.tray_icon or "" }) return info
def do_get_info(self, proto, server_sources): start = monotonic_time() info = GTKServerBase.do_get_info(self, proto, server_sources) if self.opengl_props: info["opengl"] = self.opengl_props sinfo = info.setdefault("server", {}) sinfo.update({ "type" : "Python/gtk/x11", "fakeXinerama" : self.fake_xinerama and bool(self.libfakeXinerama_so), "libfakeXinerama" : self.libfakeXinerama_so or "", }) log("X11ServerBase.do_get_info took %ims", (monotonic_time()-start)*1000) return info
def do_get_info(self, proto, server_sources, window_ids): info = GTKServerBase.do_get_info(self, proto, server_sources, window_ids) info["server.type"] = "Python/gtk/x11" try: from xpra.x11.gtk2.composite import CompositeHelper info["server.XShm"] = CompositeHelper.XShmEnabled except: pass #randr: try: sizes = RandR.get_screen_sizes() if self.randr and len(sizes)>=0: info["server.randr.options"] = list(reversed(sorted(sizes))) except: pass info["server.fakeXinerama"] = self.fake_xinerama and bool(self.libfakeXinerama_so) info["server.libfakeXinerama"] = self.libfakeXinerama_so or "" #this is added here because the server keyboard config doesn't know about "keys_pressed".. info["keyboard.state.keys_pressed"] = list(self.keys_pressed.keys()) info["keyboard.fast-switching"] = True info["server.Xkb"] = X11Keyboard.hasXkb() info["server.XTest"] = X11Keyboard.hasXTest() return info
def init(self, opts): GTKServerBase.init(self, opts) self.keycodes = {}
def get_info(self, proto): info = GTKServerBase.get_info(self, proto) info["features.shadow"] = True info["server.type"] = "Python/gtk2/win32-shadow" return info
def do_cleanup(self, *args): GTKServerBase.do_cleanup(self) cleanup_fakeXinerama()
def __init__(self): import gtk.gdk ShadowServerBase.__init__(self, gtk.gdk.get_default_root_window()) GTKServerBase.__init__(self) self.keycodes = {}
def make_hello(self): capabilities = GTKServerBase.make_hello(self) capabilities["shadow"] = True capabilities["server_type"] = "Python/gtk2/win32-shadow" return capabilities
def client_startup_complete(self, ss): GTKServerBase.client_startup_complete(self, ss) if not self.tray_icon: self.set_tray_icon("server-connected")
def last_client_exited(self): self.stop_refresh() #revert to default icon: if not self.tray_icon: self.set_tray_icon("server-notconnected") GTKServerBase.last_client_exited(self)
def init(self, opts): GTKServerBase.init(self, opts) self.tray = opts.tray self.tray_icon = opts.tray_icon if self.tray: self.setup_tray()
def get_window_info(self, window): info = GTKServerBase.get_window_info(self, window) info["XShm"] = window.uses_XShm() return info
def get_child_env(self): #adds fakeXinerama: env = GTKServerBase.get_child_env(self) if self.fake_xinerama and self.libfakeXinerama_so: env["LD_PRELOAD"] = self.libfakeXinerama_so return env
def init_packet_handlers(self): GTKServerBase.init_packet_handlers(self) self._authenticated_ui_packet_handlers["force-ungrab"] = self._process_force_ungrab
def __init__(self, clobber): self.clobber = clobber self.screen_number = gtk.gdk.display_get_default().get_default_screen().get_number() self.root_window = gtk.gdk.get_default_root_window() GTKServerBase.__init__(self)
def make_hello(self, source): capabilities = GTKServerBase.make_hello(self, source) capabilities["shadow"] = True capabilities["server_type"] = "Python/gtk2/osx-shadow" return capabilities
def init_keyboard(self): GTKServerBase.init_keyboard(self) #clear all modifiers clean_keyboard_state()