*wayland.txt*   For Vim version 9.1.  Last change: 2025 Jun 28


		  VIM REFERENCE MANUAL    by Bram Moolenaar


Wayland Protocol Support				*wayland*

1. Useful Wayland information	|wayland-useful|
2. Wayland selections		|wayland-selections|

==============================================================================
1. Useful Wayland information				*wayland-useful*

							*wayland-seat*
Functionality such as the clipboard for Wayland requires a seat to use.  A
Wayland seat can consist of a keyboard, pointer, and touch device(s).  The
seat to use can be set with the 'wlseat' option.  Only useful if you use
multiple Wayland seats in the same Wayland session.

							*wayland-gui*
See |gui-wayland|.  Please note that when using the GUI, Vim uses the toolkit
such as GTK for accessing the clipboard, and does not access the clipboard
though Wayland.  You can check this though the |v:clipmethod| variable, which
should equal to "none" when running the GUI.

Wayland commands:
							*:wlrestore* *:wl*
:wl[restore] [display]	Reinitializes the connection to the Wayland compositor.
			Useful when running Vim in a screen/tmux session that
			continues running after the Wayland compositor
			restarts.

			[display] should be in the format of the
			$WAYLAND_DISPLAY environment variable (e.g.
			"wayland-0").  If [display] is omitted, then it
			reinitializes the connection using the same value as
			was used for the previous execution of this command.
			If the value was never specified, then it uses the
			value of $WAYLAND_DISPLAY environment variable.  This
			will also update |v:clipmethod|.
			{only available when compiled with the |+wayland|
			feature}

Wayland errors:
							*E1548*
Vim failed communicating with the Wayland compositor.  This is likely due to
the Wayland compositor process being killed.  Try the `:wlrestore` command to
try connecting again.

==============================================================================
2. Wayland Selections					*wayland-selections*

Vim supports the wlr-data-control-unstable-v1 and ext-data-control-v1
protocols, for accessing the current Wayland selection.  These are the best
case scenario protocols, see |wayland-focus-steal|.  Selection in this case
essentially means the "clipboard."  You can check if your Wayland compositor
supports either of these protocols by running the wayland-info command, which
should be bunded with libwayland on your system: >
	wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
<If grep finds a match, then you have either or both protocols on your system.
If you don't get any match, then please see |wayland-focus-steal| for more
information.

If you come from X11, then the regular Wayland selection is equivalent to the
CLIPBOARD selection in X11, and the primary Wayland selection equates to the
X11 primary selection.  Accessing these selections is the same as X11 in Vim,
in which the + register is the regular selection, and the * register is the
primary selection, note that your compositor may not support primary
selections, see |wayland-primary-selection| for more details.

							*wayland-persist*
If you use X11 cut buffers, no such things exist on Wayland.  Instead to
emulate such functionality, a separate clipboard manager must be used in order
to persist selection data when a Wayland client exists.

							*wayland-and-x11*
If your version of Vim comes compiled with both X11 and Wayland support, then
Vim determines which one to use when accessing the clipboard using the
'clipmethod' option.

						*wayland-primary-selection*
If you find X11 style primary selections useful, Wayland also implements this
behaviour in its own protocols:

- The primary selection protocol is the most widely supported, but requires
  focus in order to be used, see |wayland-focus-steal|.

- Data control protocol available on your system, such as the ext or wlr
  protocols, then primary selection is also supported.  This is unless you are
  using version 1 (not the same as the 'v1' in the protocol name), of the
  wlr-data-control protocol.  Then the primary selection protocol will be used
  as a fallback.

					*wayland-focus-steal* *wayland-gnome*
If you are using the GNOME desktop environment on Wayland, as of this writing,
there is no method of accessing/modifying the clipboard for external clients
such as Vim without being focused.  Focused in this case means the client has
received some sort of input event, such as a window being focused.  This is
what the wlr-data-control-unstable-v1 and ext-data-control-v1 protocols solve.
If your Wayland compositor does not support the above protocols, then the
above explanation applies.

To solve this problem, Vim implements a way of gaining focus in order to
access the clipboard, by creating a temporary transparent top-level surface.
This is by default disabled and can be enabled via the 'wlsteal' option.
Moreover, a seat that has a keyboard is also required, see 'wlseat', and the
xdg-shell protocol must be available.

Note that this method can have several side effects from the result of focus
stealing.  For example, if you have a taskbar that shows currently opened apps
in your desktop environment, then when Vim attempts to steal focus, it may
"flicker," as if a window was opened then immediately closed after.
Additionally, if you are in fullscreen mode, this focus stealing won't work,
because the created surface won't ever gain focus.  If this happens, Vim will
seem to freeze temporarily, see 'wltimeoutlen' for more information.

 vim:tw=78:ts=8:noet:ft=help:norl
