def x11_init(self): X11ServerBase.x11_init(self) 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(self.clobber) self._wm.connect("new-window", self._new_window_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 self.cursor_sizes = None def get_default_cursor(): self.default_cursor_data = X11Keyboard.get_cursor_image() log("get_default_cursor=%s", self.default_cursor_data) trap.swallow_synced(get_default_cursor) self._wm.enableCursors(True)
def __init__(self, send_packet_cb, progress_cb=None, **kwargs): gobject.GObject.__init__(self) self.init_window() init_x11_filter() self.x11_filter = True ClipboardTimeoutHelper.__init__(self, send_packet_cb, progress_cb, **kwargs)
def main(): window = gtk.Window(WINDOW_TOPLEVEL) window.set_size_request(400, 100) window.connect("delete_event", gtk.main_quit) da = gtk.DrawingArea() window.add(da) window.show_all() #self.selectX11FocusChange(self) def focus_in(_window, event): print("focus-in-event") def focus_out(_window, event): print("focus-out-event") def has_toplevel_focus(_window, event): print("has-toplevel-event") window.connect("focus-in-event", focus_in) window.connect("focus-out-event", focus_out) window.connect("notify::has-toplevel-focus", has_toplevel_focus) #x11 focus events: gdk_win = window.get_window() xid = get_xwindow(gdk_win) init_gdk_display_source() os.environ["XPRA_X11_DEBUG_EVENTS"] = "FocusIn,FocusOut" init_x11_filter() with xlog: X11WindowBindings().selectFocusChange(xid) gtk.main() return 0
def __init__(self, props): gobject.GObject.__init__(self) self._props = props self._root = gtk.gdk.get_default_root_window() self._saved_event_mask = self._root.get_events() self._root.set_events(self._saved_event_mask | gtk.gdk.PROPERTY_CHANGE_MASK) init_x11_filter() add_event_receiver(self._root, self)
def make_window(): window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL) window.set_title("Window Focus") window.set_size_request(640, 200) window.connect("delete_event", Gtk.main_quit) vbox = Gtk.VBox() N = 8 labels = [] font = Pango.FontDescription("sans 12") for _ in range(N): l = Gtk.Label() l.modify_font(font) labels.append(l) for l in labels: al = Gtk.Alignment(xalign=0, yalign=0.5, xscale=0.0, yscale=0) al.add(l) vbox.add(al) window.add(vbox) window.show_all() text = deque(maxlen=N) def update(s): text.append("%s: %s" % (datetime.now(), s)) for i, t in enumerate(text): labels[i].set_text(t) #self.selectX11FocusChange(self) def focus_in(_window, event): update("focus-in-event") def focus_out(_window, event): update("focus-out-event") def has_toplevel_focus(window, _event): update("has-toplevel-focus: %s" % window.has_toplevel_focus()) window.connect("focus-in-event", focus_in) window.connect("focus-out-event", focus_out) window.connect("notify::has-toplevel-focus", has_toplevel_focus) if POSIX and not OSX: from xpra.gtk_common.error import xlog from xpra.x11.gtk_x11.gdk_display_source import init_gdk_display_source from xpra.x11.gtk_x11.gdk_bindings import init_x11_filter from xpra.x11.bindings.window_bindings import X11WindowBindings #pylint: disable=no-name-in-module from xpra.os_util import is_Wayland if not is_Wayland(): #x11 focus events: gdk_win = window.get_window() xid = gdk_win.get_xid() init_gdk_display_source() os.environ["XPRA_X11_DEBUG_EVENTS"] = "FocusIn,FocusOut" init_x11_filter() with xlog: X11WindowBindings().selectFocusChange(xid) return window
def x11_init(self): if FAKE_X11_INIT_ERROR: raise Exception("fake x11 init error") self.init_fake_xinerama() with xlog: clean_keyboard_state() with xlog: if not X11Keyboard.hasXFixes() and self.cursors: log.error("Error: cursor forwarding support disabled") if not X11Keyboard.hasXTest(): log.error("Error: keyboard and mouse disabled") elif not X11Keyboard.hasXkb(): log.error("Error: limited keyboard support") with xsync: self.init_x11_atoms() with xlog: if self.randr: self.init_randr() with xlog: self.init_cursor() with xlog: self.x11_filter = init_x11_filter() assert self.x11_filter with xlog: self.save_mode()
def init_x11_filter(self): if self.x11_filter: return try: from xpra.x11.gtk_x11.gdk_bindings import init_x11_filter #@UnresolvedImport, @UnusedImport self.x11_filter = init_x11_filter() log("x11_filter=%s", self.x11_filter) except Exception: log.error("Error: failed to initialize X11 GDK filter:") log.error(" %s", e) self.x11_filter = None
def x11_init(self): X11ServerBase.x11_init(self) assert init_x11_filter() is True display = display_get_default() screens = display.get_n_screens() for n in range(screens): screen = display.get_screen(n) root = screen.get_root_window() add_event_receiver(root, self) add_catchall_receiver("xpra-motion-event", self) add_catchall_receiver("xpra-xkb-event", self) X11Keyboard.selectBellNotification(True)
def x11_init(self): X11ServerBase.x11_init(self) assert init_x11_filter() is True self._has_grab = 0 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(self.clobber, self.wm_name) self._wm.connect("new-window", self._new_window_signaled) self._wm.connect("bell", self._bell_signaled) self._wm.connect("quit", lambda _: self.clean_quit(True)) self._wm.connect("show-desktop", self._show_desktop) #save default xsettings: self.default_xsettings = XSettingsHelper().get_settings() settingslog("default_xsettings=%s", self.default_xsettings) self._settings = {} self._xsettings_manager = None #for handling resize synchronization between client and server (this is not xsync!): self.last_client_configure_event = 0 self.snc_timer = 0 #cursor: self.default_cursor_data = None self.last_cursor_serial = None self.last_cursor_data = None self.send_cursor_pending = False def get_default_cursor(): self.default_cursor_data = X11Keyboard.get_cursor_image() cursorlog("get_default_cursor=%s", self.default_cursor_data) trap.swallow_synced(get_default_cursor) self._wm.enableCursors(True)
def x11_init(self): clean_keyboard_state() if self.fake_xinerama in FALSE_OPTIONS: self.libfakeXinerama_so = None elif os.path.isabs(self.fake_xinerama): self.libfakeXinerama_so = self.fake_xinerama else: self.libfakeXinerama_so = find_libfakeXinerama() if not X11Keyboard.hasXFixes() and self.cursors: log.error("Error: cursor forwarding support disabled") if not X11Keyboard.hasXTest(): log.error("Error: keyboard and mouse disabled") elif not X11Keyboard.hasXkb(): log.error("Error: limited keyboard support") self.init_x11_atoms() if self.randr: self.init_randr() self.init_cursor() self.query_opengl() self.x11_filter = init_x11_filter() assert self.x11_filter
def __init__(self, send_packet_cb, progress_cb=None, **kwargs): GObject.GObject.__init__(self) self.init_window() init_x11_filter() self.x11_filter = True super().__init__(send_packet_cb, progress_cb, **kwargs)
def make_window(): window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL) window.set_title("Window Focus") window.set_size_request(640, 200) window.set_position(Gtk.WindowPosition.CENTER) window.connect("delete_event", Gtk.main_quit) icon = get_icon_pixbuf("windows.png") if icon: window.set_icon(icon) vbox = Gtk.VBox() hbox = Gtk.HBox() def add_btn(label, cb): b = Gtk.Button(label=label) def bcb(*_args): cb() b.connect('clicked', bcb) hbox.add(b) def restack_above(): window.get_window().restack(None, True) add_btn("Restack Above", restack_above) def restack_below(): window.get_window().restack(None, False) add_btn("Restack Below", restack_below) def _raise(): window.get_window().raise_() add_btn("Raise", _raise) def _lower(): window.get_window().lower() add_btn("Lower", _lower) vbox.add(hbox) N = 8 labels = [] font = Pango.FontDescription("sans 12") for _ in range(N): l = Gtk.Label() l.modify_font(font) labels.append(l) for l in labels: al = Gtk.Alignment(xalign=0, yalign=0.5, xscale=0.0, yscale=0) al.add(l) vbox.add(al) window.add(vbox) window.show_all() text = deque(maxlen=N) def update(s): text.append("%s: %s" % (datetime.now(), s)) for i, t in enumerate(text): labels[i].set_text(t) #self.selectX11FocusChange(self) def focus_in(_window, event): update("focus-in-event") def focus_out(_window, event): update("focus-out-event") def has_toplevel_focus(window, _event): update("has-toplevel-focus: %s" % window.has_toplevel_focus()) window.connect("focus-in-event", focus_in) window.connect("focus-out-event", focus_out) window.connect("notify::has-toplevel-focus", has_toplevel_focus) if POSIX and not OSX: from xpra.gtk_common.error import xlog from xpra.x11.gtk_x11.gdk_display_source import init_gdk_display_source from xpra.x11.gtk_x11.gdk_bindings import init_x11_filter from xpra.x11.bindings.window_bindings import X11WindowBindings #pylint: disable=no-name-in-module from xpra.os_util import is_Wayland if not is_Wayland(): #x11 focus events: gdk_win = window.get_window() xid = gdk_win.get_xid() init_gdk_display_source() os.environ["XPRA_X11_DEBUG_EVENTS"] = "FocusIn,FocusOut" init_x11_filter() with xlog: X11WindowBindings().selectFocusChange(xid) return window