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
This commit is contained in:
Aron Griffis 2019-03-01 08:48:05 -05:00
parent 719a9a5b64
commit 1ceb8b1b0b
No known key found for this signature in database
GPG Key ID: 9052C6069B7D31A7
3 changed files with 10 additions and 3 deletions

View File

@ -219,3 +219,7 @@ first, for example::
<ESC>]52;c;!<ESC>\
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.

View File

@ -798,8 +798,10 @@ def startup_session(x):
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.
'''))

View File

@ -429,7 +429,8 @@ def clipboard_control(self, data):
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: