Add 'konsole-osc52/' from commit '8eeb296377a3d02b094064785d4629fdf8b99569'

git-subtree-dir: konsole-osc52
git-subtree-mainline: d0b4192d0a
git-subtree-split: 8eeb296377
This commit is contained in:
Anthony Wang 2023-11-11 19:08:59 -05:00
commit 193d2ff119
6 changed files with 251 additions and 0 deletions

31
konsole-osc52/.SRCINFO Normal file
View file

@ -0,0 +1,31 @@
pkgbase = konsole-osc52
pkgdesc = KDE terminal emulator patched with OSC52 copy support
pkgver = 23.08.3
pkgrel = 1
url = https://apps.kde.org/konsole/
arch = x86_64
groups = kde-applications
groups = kde-utilities
license = GPL
license = LGPL
license = FDL
makedepends = extra-cmake-modules
makedepends = kdoctools5
depends = knotifyconfig5
depends = kpty5
depends = kparts5
depends = knewstuff5
optdepends = keditbookmarks: to manage bookmarks
provides = konsole
conflicts = konsole
source = https://download.kde.org/stable/release-service/23.08.3/src/konsole-23.08.3.tar.xz
source = https://download.kde.org/stable/release-service/23.08.3/src/konsole-23.08.3.tar.xz.sig
source = osc52.patch
validpgpkeys = CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7
validpgpkeys = F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87
validpgpkeys = D81C0CB38EB725EF6691C385BB463350D6EF31EF
sha256sums = e20c3430ad1fd468590d6f34f93d1ef5ca41bbe1827fa0453a1ba41118d85323
sha256sums = SKIP
sha256sums = e7c2ca3b30e018139a139e99141202a2efc8e4e880e2965b09537f9a97865e53
pkgname = konsole-osc52

41
konsole-osc52/PKGBUILD Normal file
View file

@ -0,0 +1,41 @@
# Maintainer: Anthony Wang <a at exozy dot me>
# Contributor: Felix Yan <felixonmars@archlinux.org>
# Contributor: Antonio Rojas <arojas@archlinux.org>
# Contributor: Andrea Scarpino <andrea@archlinux.org>
_pkgname=konsole
pkgname=$_pkgname-osc52
pkgver=23.08.3
pkgrel=1
arch=(x86_64)
url='https://apps.kde.org/konsole/'
pkgdesc='KDE terminal emulator patched with OSC52 copy support'
license=(GPL LGPL FDL)
groups=(kde-applications kde-utilities)
depends=(knotifyconfig5 kpty5 kparts5 knewstuff5)
makedepends=(extra-cmake-modules kdoctools5)
optdepends=('keditbookmarks: to manage bookmarks')
provides=($_pkgname)
conflicts=($_pkgname)
source=(https://download.kde.org/stable/release-service/$pkgver/src/$_pkgname-$pkgver.tar.xz{,.sig}
osc52.patch)
sha256sums=('e20c3430ad1fd468590d6f34f93d1ef5ca41bbe1827fa0453a1ba41118d85323'
'SKIP'
'e7c2ca3b30e018139a139e99141202a2efc8e4e880e2965b09537f9a97865e53')
validpgpkeys=(CA262C6C83DE4D2FB28A332A3A6A4DB839EAA6D7 # Albert Astals Cid <aacid@kde.org>
F23275E4BF10AFC1DF6914A6DBD2CE893E2D1C87 # Christoph Feck <cfeck@kde.org>
D81C0CB38EB725EF6691C385BB463350D6EF31EF) # Heiko Becker <heiko.becker@kde.org>
prepare() {
patch -d $_pkgname-$pkgver -p1 < osc52.patch
}
build() {
cmake -B build -S $_pkgname-$pkgver \
-DBUILD_TESTING=OFF
cmake --build build
}
package() {
DESTDIR="$pkgdir" cmake --install build
}

View file

@ -0,0 +1,29 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBFfNZD4BEACo0YKCUEhTY7v8VZVw3csAtnsRSFQ18G8xfYIt7mJEBrtfiGG4
g28EjNeWQfN8wGIaAeRGl5nb7s9RRpxXStUu719jGX1Z9Sr8p/JOmBS5kdfAtYId
9Cl3VsGRvf4Smg1ClrEv6tQ97j+d1FY8QfgW/GS46YBOEeOFVQRtfi7Yv9lZkiBF
rzP0Nr7JV9u1GkBsFgNkVuYs/3RDYULItBwGFerduOyQCOt819QvHHSZkXqJWwNR
OA6lc8gW36lKbDHoZ1jSkDnDV0bW0cX1/6WJSzWYdcPiceA1vj/VDg0Kr23SVQ1P
yPvBirT7ToirQm6KrIiKHWLSg156ht8/K2C1Dgypf+YMseMbHQxVLrI2p4zpmxu3
B2SrSj3ImM5FO0XGd1gxn/qywNVJDQBfcYnndksD2i/9/Es8I/F6OymBZl4HWBvx
7ixm2JPXkmwVPEC/lJn3eCBb1fAaJSlroHtaAEteCWuE5/Mg/uYEh1UeAstP47N3
P0B3l1E4Ccw1ne2/O1BdsnXeUaI3YVYz9aZkVlL7ywda3h/goRKxc1b18bmgu/Ed
QmcTEMj29B3szMpetWNt1ZbaMJzfDw+z+SiQ3toOTUiqMuWq+l+JK0dVUzOvpGhG
VHv5m9CtJFP671ivEc4it0hJRH5kdW9aNbeG0g9TxHQqQMJIpeLvRq5WKwARAQAB
tCFBbGJlcnQgQXN0YWxzIENpZCA8YWFjaWRAa2RlLm9yZz6JAlQEEwEIAD4CGwMF
CwkIBwIGFQgJCgsCBBYCAwECHgECF4AWIQTKJixsg95NL7KKMyo6ak24Oeqm1wUC
XVO22wUJB2eGHQAKCRA6ak24Oeqm176hD/9QGNeGm0UX/X8PY6OManUuC5tl/RI2
xo5ZbckxgSlNKgdhuE9hcrCOX74smdFKkk3EoxfXTa+YaarjXPq+ZfqgOiAk7TyU
BjZiiRiqgg7rWvsUa0ifxP++oN8aV9bTT8+WvkU2nXEPLtvaoSTXn/zE1bv7dIhB
13u2Du3PIVoUQBfcg9tyNkMQ+ifAQxjUghbPKeqsoql1bqY3v561SVg6D+IqeA5s
3Q8xxve4wc8vFgwRsWm4ugFTGRHdLhAFc3LlFxmFDhPMNvQguPh9MifBGthFcHBd
F2lUTdXffhiKpCQ3+qUP/YP0rurL+Ke8aBNBXlU68+2l0JrCjySnDj3a5RKWOgWk
2SSadUia06GGHRBaTVs5AAOfL0vaIbeUMxSv7Itg8jkqH2/9PdoCDOFznNS1C6o+
MxtPFmjZSGna5wSlyUobCrcRGL1mD5w4r16MKFICSVQM5ns617bm0tWS0qyAARid
Ng3baLoStf64wyk5QUwfVj1huQzRmk7os3OOik44J+nF8BqloW0bAsJ3mFgJVqLW
5U6GpbURaVsnxgnu4VuRedHg/JC1gy7JqNASq3vlExmBJDsNZjgPWKlnUezyxM0+
UP3OGb4AVPm7yVUZWB3XuPyk2565rOWEFyXy1/oOrHAgijD5d4FPGe4sxy0WH88E
z+nBNcht+1juVw==
=t/sG
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,63 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=P9hR
-----END PGP PUBLIC KEY BLOCK-----

View file

@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFlRpEYBCACecX3F5xzF6wzeXiuBAuHq74bVHON7I89U+ROloEWYUYMRNTz2
l1BkNHWRTTqfmPO7LhMY6g4gOPeQVCwgTGVjI8bn6sJd3SFdeiRvvaFBpmn7SjBd
s1rkKKJIjeMUl1w8dFnmf22V0PnhSSepmNwmd8RQnl1umCTSihDJydGxixw6ZNhr
4tzbn+Rfadybli61H2hc6/JJHe91i+V1ltgkHwGcs6MUCqXgSL0dUIJs49gSrla0
gkrcJYF5MWyGxKlajbCjkMCJtN+8bhEmpc4Oe8NZ33arEWnlyh1RVgi5p3RTNApY
Pxctcg57ExczbKn9R8VLYmPJ7Di3gX0cmotrABEBAAG0HkNocmlzdG9waCBGZWNr
IDxjZmVja0BrZGUub3JnPokBTgQTAQgAOBYhBPIydeS/EK/B32kUptvSzok+LRyH
BQJZUaRGAhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJENvSzok+LRyHeWcH
/A1E2d5UL2oHsrLIolIiWMmheRorcac+0Hgll1mMUQ5tfPH+LVzgrlMMG7g1Amky
Hk1qZ5oszrXUg2H/28/cOF/WVlHgQcSGr7aQbHieUivPtZMua+lHUdILC3UV2l1V
22Zz8HIDl4kxmK6EpoNIOK5Mo550S3e3AKYq5pa/FlckCV9/JoK9+thRCsoAAj3g
oWwTx9RY5pmLPtklqyC5961Je7KHSIVqapJ/G5DX+yfOC1Psc+vIfyQVqnaefZPW
dIxXQQhn46i6IRRimw94Gkwca+wslkimt/L/Z7ByZqBsXMyixSQPq+dtSO9CMgr0
WxTX78wATkTGzh5oSwKCMga5AQ0EWVGkRgEIAMuUnfNfrdx8xn7Jjcm6MGkB/Yep
XVysrlHxUUS6q7629JdSlVWnQo9GFO927GZClWI9rCGLQMfZZk/jfgKV/nkpLod3
I51remOg7ohSkwRLAdwJ7xCuNrafhKntFh5/NxuaXxaVIY1muvZbTAsIRyks2jCE
pUoK43Z8dr4/QPhBstssB8czDME1Tw4r7X+RwjFrQqDItFv6f0BIdEwR462khLEw
vbXRN1nzs+6Y0foJbJCS3VDZC9scsrrMVMV+OEBF3DXp9ypSWsLnkuBPPIus6Y8G
j7JvYUBtrUhKL5a7o5G3Te9YhwGgOKVqWlncs6ZLiOV6HnG0BO3xdPcn09cAEQEA
AYkBNgQYAQgAIBYhBPIydeS/EK/B32kUptvSzok+LRyHBQJZUaRGAhsMAAoJENvS
zok+LRyHaRMIAI5YaTfGeQDmR08I2LvztOEH/3YF63cNCP/Vp+WAtF/Kr8mMFpFS
oTHJNMi7p964lHYTTPzPeQzLzV3ayiQjq+DHs6HFmYl73ukzlGGc7KDlyhugQjm6
AqNtqqXAVykaixnFj8jf2WtQGl1hqpm8GhDRBmZycqMqne4tZokujhtpdC6suRvc
AB0S+lRZUwrY05k6Nc1A8J8k/lxXXa9KzXNaqKsqppgBZoqKN3zS4146uEjvuLsh
CarZ/6uUidvP0LBTR7HKye5A9Qdbjlg9qvtR7YF3hqy4g1PRNZWRlsQ1pkCdCTfN
TA+HYUzK0ESVpY72lWvH49lNg+ufZ1bKvKI=
=MZJ5
-----END PGP PUBLIC KEY BLOCK-----

57
konsole-osc52/osc52.patch Normal file
View file

@ -0,0 +1,57 @@
diff --git a/src/Vt102Emulation.cpp b/src/Vt102Emulation.cpp
index bebd5e399..a434ee4ab 100644
--- a/src/Vt102Emulation.cpp
+++ b/src/Vt102Emulation.cpp
@@ -12,7 +12,9 @@
#include <cstdio>
// Qt
+#include <QApplication>
#include <QBuffer>
+#include <QClipboard>
#include <QEvent>
#include <QKeyEvent>
#include <QTimer>
@@ -1147,6 +1149,29 @@ void Vt102Emulation::processSessionAttributeRequest(const int tokenSize, const u
connect(notification, &KNotification::defaultActivated, this, [this, notification]() {
_currentScreen->currentTerminalDisplay()->notificationClicked(notification->xdgActivationToken());
});
+ }
+ if (attribute == 52) {
+ // Clipboard
+ QStringList params = value.split(QLatin1Char(';'));
+ if (params.length() == 0) {
+ return;
+ }
+
+ QClipboard::Mode mode;
+ if (params[0] == QLatin1Char('c')) {
+ mode = QClipboard::Clipboard;
+ } else if (params[0] == QLatin1Char('p')) {
+ mode = QClipboard::Selection;
+ } else {
+ return;
+ }
+
+ if (params.length() == 2) {
+ // Copy to clipboard
+ QApplication::clipboard()->setText(QString::fromUtf8(QByteArray::fromBase64(params[1].toUtf8())), mode);
+ } else {
+ QApplication::clipboard()->clear(mode);
+ }
return;
}
diff --git a/src/Vt102Emulation.h b/src/Vt102Emulation.h
index 3e067549a..a34bfc590 100644
--- a/src/Vt102Emulation.h
+++ b/src/Vt102Emulation.h
@@ -124,7 +124,7 @@ private:
void resetModes();
void resetTokenizer();
-#define MAX_TOKEN_LENGTH 256 // Max length of tokens (e.g. window title)
+#define MAX_TOKEN_LENGTH 65536 // Max length of tokens (e.g. window title)
void addToCurrentToken(uint cc);
int tokenBufferPos;