Example #1
0
    def __init__(self, ptr):
        self._ptr = ffi.cast("struct wlr_layer_surface_v1 *", ptr)

        self.destroy_event = Signal(ptr=ffi.addressof(self._ptr.events.destroy))
        self.map_event = Signal(ptr=ffi.addressof(self._ptr.events.map))
        self.unmap_event = Signal(ptr=ffi.addressof(self._ptr.events.unmap))
        self.new_popup_event = Signal(ptr=ffi.addressof(self._ptr.events.new_popup))
Example #2
0
    def __init__(self, output_layout: OutputLayout) -> None:
        """Manage a cursor attached to the given output layout

        Uses the given layout to establish the boundaries and movement
        semantics of this cursor. Cursors without an output layout allow
        infinite movement in any direction and do not support absolute input
        events.

        :param output_layout:
            The output layout to attach the cursor to and bound the cursor by.
        """
        ptr = lib.wlr_cursor_create()
        self._ptr = ffi.gc(ptr, lib.wlr_cursor_destroy)
        lib.wlr_cursor_attach_output_layout(self._ptr, output_layout._ptr)

        self.motion_event = Signal(ptr=ffi.addressof(self._ptr.events.motion),
                                   data_wrapper=PointerEventMotion)
        self.motion_absolute_event = Signal(
            ptr=ffi.addressof(self._ptr.events.motion_absolute),
            data_wrapper=PointerEventMotionAbsolute,
        )
        self.button_event = Signal(ptr=ffi.addressof(self._ptr.events.button),
                                   data_wrapper=PointerEventButton)
        self.axis_event = Signal(ptr=ffi.addressof(self._ptr.events.axis),
                                 data_wrapper=PointerEventAxis)
        self.frame_event = Signal(ptr=ffi.addressof(self._ptr.events.frame))
Example #3
0
    def __init__(self, display: Display) -> None:
        self._ptr = lib.wlr_idle_create(display._ptr)

        self.activity_notify_event = Signal(
            ptr=ffi.addressof(self._ptr.events.activity_notify)
        )
        self.destroy_event = Signal(ptr=ffi.addressof(self._ptr.events.destroy))
Example #4
0
    def __init__(self, ptr) -> None:
        self._ptr = ffi.cast("struct wlr_drag_icon *", ptr)

        self.map_event = Signal(ptr=ffi.addressof(self._ptr.events.map))
        self.unmap_event = Signal(ptr=ffi.addressof(self._ptr.events.unmap))
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #5
0
    def __init__(self, display: Display) -> None:
        """Creates a wlr_input_inhibit_manager"""
        self._ptr = lib.wlr_input_inhibit_manager_create(display._ptr)

        self.activate_event = Signal(ptr=ffi.addressof(self._ptr.events.activate))
        self.deactivate_event = Signal(ptr=ffi.addressof(self._ptr.events.deactivate))
        self.destroy_event = Signal(ptr=ffi.addressof(self._ptr.events.destroy))
Example #6
0
    def __init__(self, display: Display, *, backend_type=BackendType.AUTO) -> None:
        """Create a backend to interact with a Wayland display

        :param display:
            The Wayland server display to create the backend against.  If this
            display is destroyed, the backend will be automatically cleaned-up.
        :param backend_type:
            The type of the backend to create.  The default (auto-detection)
            will use environment variables, including $DISPLAY (for X11 nested
            backends), $WAYLAND_DISPLAY (for Wayland backends), and
            $WLR_BACKENDS (to set the available backends).
        """
        if backend_type == BackendType.AUTO:
            ptr = lib.wlr_backend_autocreate(display._ptr)
        elif backend_type == BackendType.HEADLESS:
            ptr = lib.wlr_headless_backend_create(display._ptr)
        else:
            raise ValueError(f"Unknown backend type: {backend_type}")

        if ptr == ffi.NULL:
            raise RuntimeError("Failed to create wlroots backend")

        self._ptr = ffi.gc(ptr, lib.wlr_backend_destroy)
        self._weak_display = weakref.ref(display)

        self.destroy_event = Signal(ptr=ffi.addressof(self._ptr.events.destroy))
        self.new_input_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_input), data_wrapper=InputDevice
        )
        self.new_output_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_output), data_wrapper=Output
        )
Example #7
0
    def __init__(self, display: Display) -> None:
        """Create an wlr_xdg_output_manager_v1"""
        self._ptr = lib.wlr_layer_shell_v1_create(display._ptr)

        self.new_surface_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_surface), data_wrapper=LayerSurfaceV1
        )
        self.destroy_event = Signal(ptr=ffi.addressof(self._ptr.events.destroy))
Example #8
0
    def __init__(self, ptr) -> None:
        """struct wlr_xdg_toplevel_decoration_v1"""
        self._ptr = ffi.cast("struct wlr_xdg_toplevel_decoration_v1 *", ptr)

        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
        self.request_mode_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_mode))
Example #9
0
    def __init__(self, display: Display) -> None:
        self._ptr = lib.wlr_idle_inhibit_v1_create(display._ptr)

        self.new_inhibitor_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_inhibitor),
            data_wrapper=IdleInhibitorV1,
        )
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
    def __init__(self, display: Display) -> None:
        self._ptr = lib.wlr_output_power_manager_v1_create(display._ptr)

        self.set_mode_event = Signal(
            ptr=ffi.addressof(self._ptr.events.set_mode),
            data_wrapper=OutputPowerV1SetModeEvent,
        )

        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #11
0
    def __init__(self, display: Display) -> None:
        """A wlr_virtual_keyboard_manager_v1 instance."""
        self._ptr = lib.wlr_virtual_keyboard_manager_v1_create(display._ptr)

        self.new_virtual_keyboard_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_virtual_keyboard),
            data_wrapper=VirtualKeyboardV1,
        )
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #12
0
    def __init__(self, display: Display, options: ServerOptions) -> None:
        ptr = lib.wlr_xwayland_server_create(display._ptr, options._ptr)
        if ptr == ffi.NULL:
            raise RuntimeError("Unable to create a wlr_xwayland_server.")

        self._ptr = ffi.gc(ptr, lib.wlr_xwayland_server_destroy)

        self.ready_event = Signal(ptr=ffi.addressof(self._ptr.events.ready))
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #13
0
    def __init__(self, display: Display) -> None:
        """A wlr_virtual_pointer_manager_v1 struct."""
        self._ptr = lib.wlr_virtual_pointer_manager_v1_create(display._ptr)

        self.new_virtual_pointer_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_virtual_pointer),
            data_wrapper=VirtualPointerV1NewPointerEvent,
        )
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #14
0
    def __init__(self, ptr) -> None:
        """An XDG decoration manager: wlr_xdg_decoration_manager_v1."""
        self._ptr = ffi.cast("struct wlr_xdg_decoration_manager_v1 *", ptr)

        self.new_toplevel_decoration_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_toplevel_decoration),
            data_wrapper=XdgToplevelDecorationV1,
        )
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #15
0
    def __init__(self, ptr) -> None:
        """A top level surface object

        :param ptr:
            The wlr_xdg_toplevel cdata pointer
        """
        self._ptr = ptr

        self.request_maximize_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_maximize))
        self.request_fullscreen_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_fullscreen),
            data_wrapper=XdgTopLevelSetFullscreenEvent,
        )
        self.request_minimize_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_minimize))
        self.request_move_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_move),
            data_wrapper=XdgTopLevelMoveEvent,
        )
        self.request_resize_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_resize),
            data_wrapper=XdgTopLevelResizeEvent,
        )
        self.request_show_window_menu_event = Signal(
            ptr=ffi.addressof(self._ptr.events.request_show_window_menu),
            data_wrapper=XdgTopLevelShowWindowMenuEvent,
        )
        self.set_parent_event = Signal(
            ptr=ffi.addressof(self._ptr.events.set_parent))
        self.set_title_event = Signal(
            ptr=ffi.addressof(self._ptr.events.set_title))
        self.set_app_id_event = Signal(
            ptr=ffi.addressof(self._ptr.events.set_app_id))
Example #16
0
    def __init__(self, ptr):
        """The Keyboard wlroots object

        :param ptr:
            The wlr_keyboard cdata pointer for the given keyboard
        """
        self._ptr = ptr

        self.modifiers_event = Signal(
            ptr=ffi.addressof(self._ptr.events.modifiers))
        self.key_event = Signal(ptr=ffi.addressof(self._ptr.events.key))
    def __init__(self, ptr) -> None:
        """A `struct wlr_pointer_constraint_v1` instance."""
        self._ptr = ffi.cast("struct wlr_pointer_constraint_v1 *", ptr)

        self.set_region_event = Signal(
            ptr=ffi.addressof(self._ptr.events.set_region),
        )
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy),
            data_wrapper=PointerConstraintV1,
        )
Example #18
0
    def __init__(self, ptr) -> None:
        """A user interface element requiring management by the compositor

        """
        self._ptr = ffi.cast("struct wlr_layer_surface_v1 *", ptr)

        self.map_event = Signal(ptr=ffi.addressof(self._ptr.events.map))
        self.unmap_event = Signal(ptr=ffi.addressof(self._ptr.events.unmap))
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
        self.new_popup_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_popup))
Example #19
0
    def __init__(self, display: Display) -> None:
        """Create the shell for protocol windows

        :param display:
            The Wayland server display to create the shell on.
        """
        self._ptr = lib.wlr_xdg_shell_create(display._ptr)

        self.new_surface_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_surface), data_wrapper=XdgSurface
        )
        self.destroy_event = Signal(ptr=ffi.addressof(self._ptr.events.destroy))
Example #20
0
    def __init__(self, ptr):
        """A wlroots subsurface

        :param ptr:
            The cdata for the given subsurface
        """
        self._ptr = ffi.cast("struct wlr_subsurface *", ptr)

        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
        self.map_event = Signal(ptr=ffi.addressof(self._ptr.events.map))
        self.unmap_event = Signal(ptr=ffi.addressof(self._ptr.events.unmap))
Example #21
0
    def __init__(self, display: Display) -> None:
        """Create the shell for Graphical Elements

        :param display:
            The Wayland server display to create the shell on.
        """
        self._ptr = lib.wlr_layer_shell_v1_create(display._ptr)

        self.new_surface_event = Signal(ptr=ffi.addressof(
            self._ptr.events.new_surface),
                                        data_wrapper=LayerSurface)
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #22
0
    def __init__(self, ptr):
        """Create a wlroots Surface

        :param ptr:
            The cdata for the given surface
        """
        self._ptr = ptr

        self.commit_event = Signal(ptr=ffi.addressof(self._ptr.events.commit))
        self.new_subsurface_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_subsurface))
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #23
0
    def __init__(self) -> None:
        """Creates an output layout to work with a layout of screens

        Creates a output layout, which can be used to describing outputs in
        physical space relative to one another, and perform various useful
        operations on that state.
        """
        ptr = lib.wlr_output_layout_create()
        self._ptr = ffi.gc(ptr, lib.wlr_output_layout_destroy)

        self.add_event = Signal(ptr=ffi.addressof(ptr.events.add))
        self.change_event = Signal(ptr=ffi.addressof(ptr.events.change))
        self.destroy_event = Signal(ptr=ffi.addressof(ptr.events.destroy))
Example #24
0
    def __init__(self, ptr) -> None:
        self._ptr = ffi.cast("struct wlr_drag *", ptr)

        self.focus_event = Signal(ptr=ffi.addressof(self._ptr.events.focus))
        self.motion_event = Signal(
            ptr=ffi.addressof(self._ptr.events.motion),
            data_wrapper=DragMotionEvent,
        )
        self.drop_event = Signal(
            ptr=ffi.addressof(self._ptr.events.drop),
            data_wrapper=DragDropEvent,
        )
        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy))
Example #25
0
    def __init__(self, display: Display) -> None:
        """Create a wlr_output_manager_v1

        Create a new output manager. The compositor is responsible for calling
        `wlr_output_manager_v1_set_configuration` whenever the current output
        configuration changes.
        """
        self._ptr = lib.wlr_output_manager_v1_create(display._ptr)

        self.apply_event = Signal(
            ptr=ffi.addressof(self._ptr.events.apply),
            data_wrapper=OutputConfigurationV1,
        )
        self.test_event = Signal(ptr=ffi.addressof(self._ptr.events.test),
                                 data_wrapper=OutputConfigurationV1)
Example #26
0
    def __init__(self, display: Display) -> None:
        """A global interface used for getting the relative pointer object for a given
        pointer.

        :param display:
            The display to manage relative pointer events on.
        """
        self._ptr = lib.wlr_relative_pointer_manager_v1_create(display._ptr)

        self.destroy_event = Signal(ptr=ffi.addressof(
            self._ptr.events.destroy), )
        self.new_relative_pointer_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_relative_pointer),
            data_wrapper=RelativePointerV1,
        )
Example #27
0
    def __init__(self, ptr) -> None:
        """A wlr_virtual_keyboard_v1 instance."""
        self._ptr = ffi.cast("struct wlr_virtual_keyboard_v1 *", ptr)

        self.destroy_event = Signal(ptr=ffi.addressof(
            self._ptr.events.destroy),
                                    data_wrapper=VirtualKeyboardV1)
Example #28
0
    def __init__(self, display: "Display") -> None:
        """Create a wlr_screencopy_manager_v1"""
        self._ptr = lib.wlr_screencopy_manager_v1_create(display._ptr)

        self.destroy_event = Signal(
            ptr=ffi.addressof(self._ptr.events.destroy)
        )
Example #29
0
    def __init__(self, display: Display, compositor: Compositor,
                 lazy: bool) -> None:
        ptr = lib.wlr_xwayland_create(display._ptr, compositor._ptr, lazy)

        if ptr == ffi.NULL:
            raise RuntimeError("Unable to create a wlr_xwayland.")

        self._ptr = ffi.gc(ptr, lib.wlr_xwayland_destroy)

        self.ready_event = Signal(ptr=ffi.addressof(self._ptr.events.ready))
        self.new_surface_event = Signal(
            ptr=ffi.addressof(self._ptr.events.new_surface),
            data_wrapper=Surface,
        )
        self.remove_startup_info_event = Signal(
            ptr=ffi.addressof(self._ptr.events.remove_startup_info))
Example #30
0
    def __init__(self, ptr) -> None:
        """A wlr_virtual_pointer_v1 struct."""
        self._ptr = ffi.cast("struct wlr_virtual_pointer_v1 *", ptr)

        self.destroy_event = Signal(ptr=ffi.addressof(
            self._ptr.events.destroy),
                                    data_wrapper=VirtualPointerV1)