From 1ceb8b1b0b764c0dbd9ec340dbade87ed17fe719 Mon Sep 17 00:00:00 2001 From: Aron Griffis Date: Fri, 1 Mar 2019 08:48:05 -0500 Subject: [PATCH] Allow no-append in clipboard_control If no-append is present in clipboard_control, this will disable kitty's OSC 52 extension of concatenating to the clipboard. See #995 --- docs/protocol-extensions.rst | 4 ++++ kitty/config_data.py | 6 ++++-- kitty/window.py | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/protocol-extensions.rst b/docs/protocol-extensions.rst index 5ea5c611b..2e95ebc65 100644 --- a/docs/protocol-extensions.rst +++ b/docs/protocol-extensions.rst @@ -219,3 +219,7 @@ first, for example:: ]52;c;!\ Here ``!`` is not valid base64 encoded text, so it clears the clipboard. + +In case you're using software that can't be easily adapted to this +protocol extension, it can be disabled by specifying ``no-append`` to the +:opt:`clipboard_control` setting. diff --git a/kitty/config_data.py b/kitty/config_data.py index 833bc4c02..f5d69a381 100644 --- a/kitty/config_data.py +++ b/kitty/config_data.py @@ -798,8 +798,10 @@ Environment variables in the path are expanded. o('clipboard_control', 'write-clipboard write-primary', option_type=lambda x: frozenset(x.lower().split()), long_text=_(''' Allow programs running in kitty to read and write from the clipboard. You can control exactly which actions are allowed. The set of possible actions is: -write-clipboard read-clipboard write-primary read-primary -The default is to allow writing to the clipboard and primary selection. Note +write-clipboard read-clipboard write-primary read-primary. You can +additionally specify no-append to disable kitty's protocol extension +for clipboard concatenation. The default is to allow writing to the +clipboard and primary selection with concatenation enabled. Note that enabling the read functionality is a security risk as it means that any program, even one running on a remote server via SSH can read your clipboard. ''')) diff --git a/kitty/window.py b/kitty/window.py index e6b0134ce..3b3b64cd6 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -429,7 +429,8 @@ class Window: def write(key, func): if text: - if len(self.clipboard_control_buffers[key]) > 1024*1024: + if ('no-append' in self.opts.clipboard_control or + len(self.clipboard_control_buffers[key]) > 1024*1024): self.clipboard_control_buffers[key] = '' self.clipboard_control_buffers[key] += text else: