*wayland.txt*	For Vim バージョン 9.2.  Last change: 2026 Apr 20


		  VIM リファレンスマニュアル	by Bram Moolenaar


Wayland プロトコルのサポート				*wayland*

1. Wayland の役立つ情報		|wayland-useful|
2. Wayland セレクション		|wayland-selections|

==============================================================================
1. Wayland の役立つ情報					*wayland-useful*

							*wayland-seat*
Wayland のクリップボードなどの機能を使用するには、シートが必要である。Wayland
シートは、キーボード、ポインター、タッチデバイスで構成される。使用するシートは
'wlseat' オプションで設定できる。これは、同じ Wayland セッションで複数の
Wayland シートを使用する場合にのみ役立つ。これが何を意味するのか分からないので
あれば、それはおそらくあなたにとって問題ではないだろう。

							*wayland-gui*
|gui-wayland| を参照。GUI 使用時、Vim はクリップボードへのアクセスに GTK など
のツールキットを使用し、Wayland 経由ではアクセスしない。これは |v:clipmethod|
変数で確認できる。GUI 実行時にはこの変数は "none" になる。

Wayland のコマンド:
							*:wlrestore* *:wl*
:wl[restore] [display]	Wayland コンポジタへの接続を再初期化する。Wayland コン
			ポジタの再起動後も Vim を screen/tmux セッションで実行
			し続ける場合に便利である。

			[display] は、環境変数 $WAYLAND_DISPLAY の形式（例:
			"wayland-0"）で指定する必要がある。[display] を省略し
			た場合は、このコマンドの前回実行時に使用された値と同じ
			値を使用して接続を再初期化する。
			値が指定されていない場合は、環境変数 $WAYLAND_DISPLAY
			の値が使用される。また、|v:clipmethod| も更新される。
			{Vimが |+wayland| 機能付きでコンパイルされたときのみ有
			効}

Wayland のエラー:
							*E1548*
Vim は Wayland コンポジタとの通信に失敗した。これは Wayland コンポジタのプロセ
スが強制終了したことが原因である可能性がある。再接続するには `:wlrestore` コマ
ンドを試すこと。

==============================================================================
2. Wayland セレクション					*wayland-selections*

Vim は、現在の Wayland セレクションにアクセスするための
wlr-data-control-unstable-v1 プロトコルと ext-data-control-v1 プロトコルをサ
ポートしている。この場合のセレクションは基本的に "clipboard" を指す。Wayland
コンポジタがこれらのプロトコルをサポートしているかどうかを確認するには、
wayland-info コマンドを実行する。このコマンドは、あなたのシステムでは
libwayland にバンドルされているはずである: >
	wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
<grep で一致するものが見つかった場合、システムにはどちらか、または両方のプロト
コルが存在する。

どちらかまたは両方のプロトコルをサポートすることが知られているコンポジタの一部:
    1. KWin (KDE)
    2. wlroots based (Sway, Labwc)
    3. Niri
    4. Hyprland
    5. Wayfire

X11 から移行する場合、通常の Waylandセレクション は X11 のクリップボードセレク
ションに相当し、プライマリ Wayland セレクションは X11 のプライマリセレクション
に相当する。これらのセレクションへのアクセスは Vim の X11 と同様で、+ レジスタ
が通常のセレクション、* レジスタがプライマリセレクションである。Note コンポジ
タがプライマリセレクションをサポートしていない可能性があることに注意。詳細は
|wayland-primary-selection| を参照。

							*wayland-persist*
X11 のカットバッファを使用する場合、Wayland にはそのような機能は存在しない。そ
のような機能をエミュレートするには、Wayland クライアントが終了した後も選択デー
タを保持するために、別のクリップボードマネージャーを使用する必要がある。

							*wayland-and-x11*
使用している Vim のバージョンが X11 と Wayland の両方のサポートでコンパイルさ
れている場合、Vim は 'clipmethod' オプションを使用してクリップボードにアクセス
するときにどちらを使用するかを決定する。

						*wayland-primary-selection*
X11 スタイルのプライマリ選択が便利だと感じる場合、Wayland も Vim がサポートす
るプロトコルを使用してこの機能を実装している。ただし、wlr-data-control プロト
コルのバージョン 1 (プロトコル名の 'v1' とは異なる) を使用している場合は、プラ
イマリ選択はサポートされない。これを確認するには、以下を使用する >
	wayland-info | grep -E '(ext_data_control|zwlr_data_control)'
"zwlr_data_control_manager_v1" の "version:" エントリが "2" 以上であれば、プラ
イマリ選択がサポートされる。また、"ext_data_control_manager_v1" も取得できた場
合は、Vim は代わりにそのプロトコルを使用する。このプロトコルにはプライマリ選択
のサポートが組み込まれている。

Wayland コンポジタが wlr-data-control-v1 または ext-data-control-v1 プロトコル
をサポートしていない場合、Vim は Wayland プロトコルを介してクリップボードに直
接アクセスできない。代わりに、ユーザー定義の |clipboard-providers| を介して
wl-clipboard などの外部ツールを使用できる。

例: `wl-copy` と `wl-paste` を実行するプロバイダを定義する: >vim9

    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


これは、wl-clipboard パッケージがインストールされていることを前提としている
(https://github.com/bugaevc/wl-clipboard).

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