From 7ca14d646c7e405f3fb1e44600e2a67fc4607238 Mon Sep 17 00:00:00 2001 From: Guido Cella Date: Mon, 14 Dec 2020 20:18:55 +0100 Subject: console: use wl-paste on Wayland --- DOCS/man/console.rst | 4 ++-- player/lua/console.lua | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/DOCS/man/console.rst b/DOCS/man/console.rst index e9a829cbc4..22725a3134 100644 --- a/DOCS/man/console.rst +++ b/DOCS/man/console.rst @@ -36,7 +36,7 @@ INSERT Toggle insert mode. Shift+INSERT - Paste text (uses the primary selection on X11). + Paste text (uses the primary selection on X11 and Wayland). TAB Complete the command or property name at the cursor. @@ -54,7 +54,7 @@ Ctrl+U Delete text from the cursor to the beginning of the line. Ctrl+V - Paste text (uses the clipboard on X11). + Paste text (uses the clipboard on X11 and Wayland). Ctrl+W Delete text from the cursor to the beginning of the current word. diff --git a/player/lua/console.lua b/player/lua/console.lua index a483bbe1f4..2020952840 100644 --- a/player/lua/console.lua +++ b/player/lua/console.lua @@ -36,6 +36,8 @@ function detect_platform() return 'windows' elseif mp.get_property_native('options/macos-force-dedicated-gpu', o) ~= o then return 'macos' + elseif os.getenv('WAYLAND_DISPLAY') then + return 'wayland' end return 'x11' end @@ -609,6 +611,14 @@ function get_clipboard(clip) if not res.error then return res.stdout end + elseif platform == 'wayland' then + local res = utils.subprocess({ + args = { 'wl-paste', clip and '-n' or '-np' }, + playback_only = false, + }) + if not res.error then + return res.stdout + end elseif platform == 'windows' then local res = utils.subprocess({ args = { 'powershell', '-NoProfile', '-Command', [[& { @@ -647,7 +657,7 @@ function get_clipboard(clip) end -- Paste text from the window-system's clipboard. 'clip' determines whether the --- clipboard or the primary selection buffer is used (on X11 only.) +-- clipboard or the primary selection buffer is used (on X11 and Wayland only.) function paste(clip) local text = get_clipboard(clip) local before_cur = line:sub(1, cursor - 1) -- cgit v1.2.3