package oxbow

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Window_management.River_seat_v1Source

A window management seat.

This object represents a single user's collection of input devices. It allows the window manager to route keyboard input to windows, get high-level information about pointer input, define pointer bindings, etc.

For keyboard bindings, see the river-xkb-bindings-v1 protocol.

Since version 4: The cursor surface/shape set by the window manager on the wl_pointer of this seat is used when no client has pointer focus, for example during a pointer operation. Since the window manager is allowed to set cursor surface/shape even when it does not have pointer focus, the compositor must ignore the serial argument of wl_pointer.set_cursor and wp_cursor_shape_device_v1.set_shape requests made by the window manager.

The most recent cursor surface/shape set by the window manager is remembered by the compositor and restored whenever no client has pointer focus. If the window manager never sets a cursor surface/shape, the "default" shape is used.

Sourcetype 'v t = ([ `River_seat_v1 ], 'v, [ `Server ]) Wayland.Proxy.t
Sourcemodule Modifiers : sig ... end

A set of keyboard modifiers.

Version 1

Sourceval op_release : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> unit

Operation input has been released.

The input driving the current interactive operation has been released. For a pointer op for example, all pointer buttons have been released.

Depending on the op type, op_delta events may continue to be sent until the op is ended with the op_end request.

This event is sent at most once during an interactive operation.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Sourceval op_delta : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> dx:int32 -> dy:int32 -> unit

Total cumulative motion since op start.

This event indicates the total change in position since the start of the operation of the pointer/touch point/etc.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Sourceval shell_surface_interaction : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> shell_surface:([ `River_shell_surface_v1 ], 'a, [ `Server ]) Wayland.Proxy.t -> unit

A shell surface has been interacted with.

A shell surface has been interacted with beyond the pointer merely passing over it. This event might be sent due to a pointer button press or due to a touch/tablet tool interaction with the shell_surface.

There are no guarantees regarding how this event is sent in relation to the pointer_enter and pointer_leave events as the interaction may use touch or tablet tool input.

Rationale: While the shell surface does receive all wl_pointer, wl_touch, etc. input events for the surface directly, these events do not necessarily trigger a manage sequence and therefore do not allow the window manager to update focus or perform other actions in response to the input in a race-free way.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Sourceval window_interaction : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> window:([ `River_window_v1 ], 'a, [ `Server ]) Wayland.Proxy.t -> unit

A window has been interacted with.

A window has been interacted with beyond the pointer merely passing over it. This event might be sent due to a pointer button press or due to a touch/tablet tool interaction with the window.

There are no guarantees regarding how this event is sent in relation to the pointer_enter and pointer_leave events as the interaction may use touch or tablet tool input.

Rationale: this event gives window managers necessary information to determine when to send keyboard focus, raise a window that already has keyboard focus, etc. Rather than expose all pointer, touch, and tablet events to window managers, a policy over mechanism approach is taken.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Sourceval pointer_leave : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> unit

Pointer left the entered window.

The seat's pointer left the window for which pointer_enter was most recently sent. See pointer_enter for details.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Sourceval pointer_enter : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> window:([ `River_window_v1 ], 'a, [ `Server ]) Wayland.Proxy.t -> unit

Pointer entered a window.

The seat's pointer entered the given window's area.

The area of a window is defined to include the area defined by the window dimensions, borders configured using river_window_v1.set_borders, and the input regions of decoration surfaces. In particular, it does not include input regions of surfaces belonging to the window that extend outside the window dimensions.

The pointer of a seat may only enter a single window at a time. When the pointer moves between windows, the pointer_leave event for the old window must be sent before the pointer_enter event for the new window.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Sourceval wl_seat : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> name:int32 -> unit

Corresponding wl_seat.

The wl_seat object corresponding to the river_seat_v1. The argument is the global name of the wl_seat advertised with wl_registry.global.

It is guaranteed that the corresponding wl_seat is advertised before this event is sent.

This event is sent exactly once. The wl_seat associated with a river_seat_v1 cannot change. It is guaranteed that there is a 1-to-1 mapping between wl_seat and river_seat_v1 objects.

The global_remove event for the corresponding wl_seat may be sent before the river_seat_v1.removed event. This is due to the fact that river_seat_v1 state changes are synced to the river window management manage sequence while changes to globals are not.

Rationale: The window manager may want to trigger window management state changes based on normal input events received by its shell surfaces for example.

Sourceval removed : [< `V1 | `V2 | `V3 | `V4 | `V5 ] t -> unit

The seat is removed.

This event indicates that seat is no longer in use and should be destroyed.

The server will send no further events on this object and ignore any request (other than river_seat_v1.destroy) made after this event is sent. The client should destroy this object with the river_seat_v1.destroy request to free up resources.

This event will be followed by a manage_start event after all other new state has been sent by the server.

Version 2

Sourceval pointer_position : [< `V2 | `V3 | `V4 | `V5 ] t -> x:int32 -> y:int32 -> unit

The current position of the pointer.

The current position of the pointer in the compositor's logical coordinate space.

This state is special in that a change in pointer position alone must not cause the compositor to start a manage sequence.

Assuming the seat has a pointer, this event must be sent in every manage sequence unless there is no change in x/y position since the last time this event was sent.

Version 3, 4, 5

Handlers

Note: Servers will always want to use v1.

Sourceclass virtual +'a v1 : object ... end

Handler for a proxy with version >= 1.

Sourceclass virtual +'a v2 : object ... end

Handler for a proxy with version >= 2.

Sourceclass virtual +'a v3 : object ... end

Handler for a proxy with version >= 3.

Sourceclass virtual +'a v4 : object ... end

Handler for a proxy with version >= 4.

Sourceclass virtual +'a v5 : object ... end

Handler for a proxy with version >= 5.