12to11/README
oldosfan 98bbad068c Implement support for zwp_pointer_constraints_v1
* 12to11.c (XLMain): Initialize pointer constraints.
* 12to11.conf: Add Emacs local variables section.
* 12to11.man: Document new protocol.
* Imakefile (SRCS): Add pointer_constraints.c.
(OBJS): Add pointer_constraints.o.
(pointer-constraints-unstable-v1): New scanner target.
* README: Update accordingly.
* compositor.h (enum _ClientDataType): Add
PointerConfinementData.
* dmabuf.c (struct _BufferParams): Rearrange for alignment.
(struct _Buffer): Rearrange for alignment.
* dnd.c (struct _DndState, struct _DragState)
(struct _WindowCacheEntry):
* seat.c (struct _SeatCursor, struct _ScrollValuator)
(struct _SeatClientInfo, struct _Seat): Rearrange for alignment.
(SendMotion): Do not send pointer motion to locked seats.
(CheckPointerBarrier): New function.
(EnteredSurface, DispatchMotion): Check for pointer confinement
changes.
(XLSeatGetPointerDevice): New function.
(XLPointerGetSeat, XLSeatGetMouseData, XLSeatLockPointer)
(XLSeatUnlockPointer): New functions.
* shm.c (HandleResourceDestroy, CreatePool, HandleBind): Remove
redundant `all_shms' field.
* subcompositor.c (struct _View): New function `maybe_resized'.
(ViewAfterSizeUpdate): Call it if necessary.
(ViewAttachBuffer): Update a comment.
(ViewSetMaybeResizedFunction): New function.
* subsurface.c (MoveFractional):
* surface.c (ApplyInputRegion, HandleScaleChanged, MaybeResized)
(XLCreateSurface, XLWindowFromSurface): Update pointer
constraints.
* xdata.c (struct _ReadTargetsData, struct _ConversionTransferInfo)
(struct _TargetMappingTable): Rearrange for alignment.
(XLInitXData): Require fixes 1.5.
* xdg_surface.c (struct _XdgRole): Rearrange fr alignment.
(AckConfigure): Fix serial monotonicity checking.
(NoteConfigure): Update pointer constraints.
* xdg_toplevel.c (struct _XdgToplevel): Rearrange for alignment.
2022-10-15 07:58:40 +00:00

111 lines
4.2 KiB
Text

This is a tool for running Wayland applications on an X server,
preferably with a compositing manager running.
It is not yet complete. What is not yet implemented includes support
for touchscreens, and device switching in dmabuf feedback.
It is not portable to systems other than recent versions of GNU/Linux
running the X.Org server 1.20 or later, and has not been tested on
window (and compositing) managers other than GNOME Shell.
It will not work very well unless the compositing manager supports the
EWMH frame synchronization protocol.
Building and running this tool requires the following X protocol
extensions:
Nonrectangular Window Shape Extension, version 1.1 or later
MIT Shared Memory Extension, version 1.2 or later
X Resize, Rotate and Reflect Extension, version 1.3 or later
X Synchronization Extension, version 1.0 or later
X Rendering Extension, version 1.2 or later
X Input Extension, version 2.3 or later
Direct Rendering Interface 3, version 1.2 or later
X Fixes Extension, version 1.5 or later
X Presentation Extension, version 1.0 or later
In addition, it requires Xlib to be built with the XCB transport, and
the XCB bindings for MIT-SHM and DRI3 to be available.
Sometimes, it might be desirable to build with EGL, and use OpenGL ES
2.0 for i.e. YUV video format support. To do so, uncomment the block
of code for EGL support in 12to11.conf before running `xmkmf'. This
will additionally require the EGL and GLESv2 development files, and
for the following EGL and GLES extensions to be present at runtime:
EGL_EXT_platform_base
EGL_EXT_device_query
EGL_KHR_image_base
EGL_EXT_image_dma_buf_import_modifiers
EGL_EXT_image_dma_buf_import
EGL_EXT_buffer_age
GL_OES_EGL_image
GL_OES_EGL_image_external
GL_EXT_read_format_bgra
GL_EXT_unpack_subimage
After building with EGL support, the renderer must be enabled by
setting the environment variable "RENDERER" to "egl", or by setting
the "renderer" resource (class "Renderer") to "egl".
The following Wayland protocols are implemented to a more-or-less
complete degree:
'wl_output', version: 2
'wl_compositor', version: 5
'wl_shm', version: 1
'xdg_wm_base', version: 5
'wl_subcompositor', version: 1
'wl_seat', version: 7
'wl_data_device_manager', version: 3
'zwp_linux_dmabuf_v1', version: 4
'zwp_primary_selection_device_manager_v1', version: 1
'wp_viewporter', version: 1
'zxdg_decoration_manager_v1', version: 1
'zwp_text_input_manager_v3', version: 1
'wp_single_pixel_buffer_manager_v1', version: 1
'zwp_pointer_constraints_v1', version: 1
When built with EGL, the following Wayland protocol is also supported:
'zwp_linux_explicit_synchronization_v1', version: 2
When the X server supports version 1.6 or later of the X Resize,
Rotate and Reflect Extension, the following Wayland protocol is also
supported:
'wp_drm_lease_device_v1', version: 1
With the main caveat being that zwp_linux_dmabuf_v1 has no real
support for multiple-provider setups (help wanted).
Window decorations are also not supported, even though they fit in
nicely with X window management.
It would also be nice to have pinch gesture support.
This directory is organized as follows:
Imakefile - the top level Makefile template
12to11.conf - configuration
*.xml - Wayland protocol definition source
*.c, *.h - C source code
*.awk - scripts used to generate headers
*.txt - text data used to generate some headers, i.e.
those containing MIME types or shaders
Building the source code is simple, provided that you have the
necessary libwayland-server library, pixman, XCB, DRM, and X extension
libraries installed:
xmkmf # to generate the Makefile
make # to build the binary
wayland-scanner is also required when building from the repository.
Running the binary should be simple as well:
./12to11
Wayland programs will then run as regular X windows.