Quick links: help overview · quick reference · user manual toc · reference manual toc · faq
Go to keyword (shortcut: k)
Site search (shortcut: s)
wayland.txt  	For Vim version 9.2.  Last change: 2026 Apr 20


		  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.  If you don't know what
this is means, then it likely does not matter for you.

							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. 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 bundled 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.

Some compositors that are known to support either or both protocols:
    1. KWin (KDE)
    2. wlroots based (Sway, Labwc)
    3. Niri
    4. Hyprland
    5. Wayfire

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 exits.

							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
feature using the protocols that Vim supports.  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 primary selection will not be supported. You
can check this using 
	wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
If the "version:" entry for "zwlr_data_control_manager_v1" is "2" or greater,
then primary selection is supported.  If you also get
"ext_data_control_manager_v1", then Vim will use that protocol instead, which
has primary selection support builtin into it.

If your Wayland compositor does not support the wlr-data-control-v1 or the
ext-data-control-v1 protocol, Vim cannot access the clipboard directly through
the Wayland protocol.  External tools such as wl-clipboard can be used instead
via a user-defined clipboard-providers.

Example: define a provider that shells out to wl-copy and wl-paste: 

    vim9script

    def Available(): bool
	return executable('wl-copy') && executable('wl-paste')
    enddef

    def Copy(reg: string, type: string, str: list<string>)
	var args = "wl-copy"

	if reg == "*"
	    args ..= " -p"
	endif

	system(args, str)
    enddef

    def Paste(reg: string): tuple<string, list<string>>
	var args = "wl-paste --type text/plain;charset=utf-8"

	if reg == "*"
	    args ..= " -p"
	endif

	return ("", systemlist(args))
    enddef

    v:clipproviders["wl_clipboard"] = {
	available: Available,
	copy: {
	    "+": Copy,
	    "*": Copy
	},
	paste: {
	    "+": Paste,
	    "*": Paste
	}
    }

    set clipmethod=wl_clipboard


This relies on the wl-clipboard package being installed
(https://github.com/bugaevc/wl-clipboard).

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


Quick links: help overview · quick reference · user manual toc · reference manual toc · faq