diff --git a/desktop/kde/applications/kaccounts-integration/pspec.xml b/desktop/kde/applications/kaccounts-integration/pspec.xml
index ca898bba27..f5c53bd362 100755
--- a/desktop/kde/applications/kaccounts-integration/pspec.xml
+++ b/desktop/kde/applications/kaccounts-integration/pspec.xml
@@ -29,8 +29,10 @@
kdoctools-devel
kdeclarative-devel
kio-devel
+ signon-ui
kconfig-devel
kwallet-devel
+ signon-plugin-oauth2-devel
@@ -41,12 +43,14 @@
libgcc
signon
intltool
+ signon-ui
qt5-base
kcoreaddons
kdbusaddons
kdeclarative
kconfigwidgets
libaccounts-qt5
+ signon-plugin-oauth2
qt5-declarative
kio
kconfig
diff --git a/pisi-index.xml b/pisi-index.xml
index d18848c5f8..22d1e94dd3 100644
--- a/pisi-index.xml
+++ b/pisi-index.xml
@@ -324896,6 +324896,65 @@ to create header files and sources from protocol files.
+
+
+ signon-ui
+ https://gitlab.com/accounts-sso/signon-ui
+
+ Pisi Linux Admins
+ admin@pisilinux.org
+
+ GPLv3
+ library
+ programming.library
+ UI component responsible for handling the user interactions which can happen during the login process of an online account
+ UI component responsible for handling the user interactions which can happen during the login process of an online account
+ Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni
+ Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni
+ https://gitlab.com/accounts-sso/signon-ui/-/archive/4368bb77d9d1abc2978af514225ba4a42c29a646/signon-ui-0.17+20171022.tar.gz
+
+ glib2-devel
+ signon-devel
+ libproxy-devel
+ qt5-base-devel
+ libnotify-devel
+ qt5-webkit-devel
+ libaccounts-qt5-devel
+
+
+ 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch
+ 0001-Fix-WebEngine-cache-directory-path.patch
+
+ programming/library/signon-ui/pspec.xml
+
+
+ signon-ui
+
+ glib2
+ signon
+ libproxy
+ qt5-base
+ libnotify
+ qt5-webkit
+ libaccounts-qt5
+
+
+ /usr/bin
+ /usr/share/dbus-1
+ /usr/share/doc
+ /usr/share/applications
+
+
+
+
+ 2022-11-07
+ 0.17
+ First release
+ Pisi Linux Admins
+ admin@pisilinux.org
+
+
+
libgdata
diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum
index ba4e097ef6..a50164a98d 100644
--- a/pisi-index.xml.sha1sum
+++ b/pisi-index.xml.sha1sum
@@ -1 +1 @@
-f507c98a19a71f65aef6ff830d4ac902921acd6f
\ No newline at end of file
+02f9ac1f3d8a25c2452add717a48ba2d3ea37b70
\ No newline at end of file
diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz
index 84dbd0be29..842d837125 100644
Binary files a/pisi-index.xml.xz and b/pisi-index.xml.xz differ
diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum
index dbe413ef16..dac6742527 100644
--- a/pisi-index.xml.xz.sha1sum
+++ b/pisi-index.xml.xz.sha1sum
@@ -1 +1 @@
-f8238bfcc86a5ca5989beffa25ce2fe43f41f0df
\ No newline at end of file
+86f0973fc2637a6c0ef5f306dbc73f9aa506073d
\ No newline at end of file
diff --git a/programming/library/signon-ui/actions.py b/programming/library/signon-ui/actions.py
new file mode 100644
index 0000000000..236fa6828b
--- /dev/null
+++ b/programming/library/signon-ui/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import qt5
+
+def setup():
+ qt5.configure()
+
+def build():
+ qt5.make()
+
+def install():
+ qt5.install()
+
+ pisitools.dodoc("COPYING", "TODO", "README*")
diff --git a/programming/library/signon-ui/files/0001-Fix-WebEngine-cache-directory-path.patch b/programming/library/signon-ui/files/0001-Fix-WebEngine-cache-directory-path.patch
new file mode 100644
index 0000000000..35e5d80cc4
--- /dev/null
+++ b/programming/library/signon-ui/files/0001-Fix-WebEngine-cache-directory-path.patch
@@ -0,0 +1,26 @@
+From e155e6e70ce7a6c52837688b570e8020faac5496 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt
+Date: Sat, 8 Sep 2018 18:58:42 +0200
+Subject: [PATCH] Fix WebEngine cache directory path
+
+Otherwise the URL is treated as a path, which results in a folder "file:" in ~.
+---
+ src/browser-request.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/browser-request.cpp b/src/browser-request.cpp
+index 146bec8..1895d59 100644
+--- a/src/browser-request.cpp
++++ b/src/browser-request.cpp
+@@ -132,7 +132,7 @@ void BrowserRequestPrivate::start()
+
+ m_dialog->rootContext()->setContextProperty("request", this);
+ m_dialog->rootContext()->setContextProperty("rootDir",
+- QUrl::fromLocalFile(rootDir.absolutePath()));
++ rootDir.absolutePath());
+ m_dialog->setSource(webview);
+ }
+
+--
+2.18.0
+
diff --git a/programming/library/signon-ui/files/0001-Reintroduce-the-username-field-reading-with-webkit-o.patch b/programming/library/signon-ui/files/0001-Reintroduce-the-username-field-reading-with-webkit-o.patch
new file mode 100644
index 0000000000..84d8b28105
--- /dev/null
+++ b/programming/library/signon-ui/files/0001-Reintroduce-the-username-field-reading-with-webkit-o.patch
@@ -0,0 +1,128 @@
+From 90890e7d27c544e3557bed2f6624614141db0fc4 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt
+Date: Sat, 29 Sep 2018 15:34:43 +0200
+Subject: [PATCH] Reintroduce the username field reading with webkit-options.d
+
+Use WebChannel to spy on the input fields.
+Use the old UserAgent to make sure the selectors match.
+---
+ src/browser-request.cpp | 11 +++++++++++
+ src/qml/WebView.qml | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 47 insertions(+)
+
+diff --git a/src/browser-request.cpp b/src/browser-request.cpp
+index 1895d59..e58f302 100644
+--- a/src/browser-request.cpp
++++ b/src/browser-request.cpp
+@@ -31,6 +31,7 @@
+ #include
+ #include
+ #include
++#include
+
+ using namespace SignOnUi;
+ using namespace SignOnUi::QQuick;
+@@ -43,8 +44,10 @@ class BrowserRequestPrivate: public QObject
+ Q_DECLARE_PUBLIC(BrowserRequest)
+ Q_PROPERTY(QUrl pageComponentUrl READ pageComponentUrl CONSTANT)
+ Q_PROPERTY(QUrl currentUrl READ currentUrl WRITE setCurrentUrl)
++ Q_PROPERTY(QString username MEMBER m_username)
+ Q_PROPERTY(QUrl startUrl READ startUrl CONSTANT)
+ Q_PROPERTY(QUrl finalUrl READ finalUrl CONSTANT)
++ Q_PROPERTY(QString usernameSelector READ usernameSelector CONSTANT)
+
+ public:
+ BrowserRequestPrivate(BrowserRequest *request);
+@@ -58,6 +61,7 @@ public:
+ QUrl startUrl() const { return m_startUrl; }
+ QUrl finalUrl() const { return m_finalUrl; }
+ QUrl responseUrl() const { return m_responseUrl; }
++ QString usernameSelector() const { return m_settings->value("UsernameField").toString(); }
+
+ public Q_SLOTS:
+ void cancel();
+@@ -77,6 +81,8 @@ private:
+ QUrl m_startUrl;
+ QUrl m_finalUrl;
+ QUrl m_responseUrl;
++ QString m_username;
++ QSettings *m_settings;
+ QTimer m_failTimer;
+ mutable BrowserRequest *q_ptr;
+ };
+@@ -116,6 +122,9 @@ void BrowserRequestPrivate::start()
+
+ m_finalUrl = params.value(SSOUI_KEY_FINALURL).toString();
+ m_startUrl = params.value(SSOUI_KEY_OPENURL).toString();
++
++ m_settings = new QSettings("signon-ui/webkit-options.d/" + m_startUrl.host(), QString(), this);
++
+ buildDialog(params);
+
+ QObject::connect(m_dialog, SIGNAL(finished(int)),
+@@ -231,6 +240,8 @@ void BrowserRequestPrivate::onFinished()
+ QVariantMap reply;
+ QUrl url = m_responseUrl.isEmpty() ? m_currentUrl : m_responseUrl;
+ reply[SSOUI_KEY_URLRESPONSE] = url.toString();
++ if (!m_username.isEmpty())
++ reply[SSOUI_KEY_USERNAME] = m_username;
+
+ m_dialog->close();
+
+diff --git a/src/qml/WebView.qml b/src/qml/WebView.qml
+index 33462b8..3af0239 100644
+--- a/src/qml/WebView.qml
++++ b/src/qml/WebView.qml
+@@ -1,4 +1,5 @@
+ import QtQuick 2.0
++import QtWebChannel 1.0
+ import QtWebEngine 1.1
+
+ WebEngineView {
+@@ -25,8 +26,43 @@ WebEngineView {
+ profile: WebEngineProfile {
+ cachePath: rootDir
+ persistentStoragePath: rootDir
++ // For compatibility with the webkit-options.d values
++ httpUserAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Safari/537.21"
+ }
+
++ QtObject {
++ id: commProxy
++ WebChannel.id: "comm"
++ property string username: ""
++ property string selector: signonRequest.usernameSelector
++ onUsernameChanged: signonRequest.username = username
++ }
++
++ WebChannel {
++ id: chan
++ registeredObjects: [commProxy]
++ }
++ webChannel: chan
++
++ WebEngineScript {
++ id: qwebchannel
++ injectionPoint: WebEngineScript.DocumentCreation
++ sourceUrl: "qrc:/qtwebchannel/qwebchannel.js"
++ worldId: WebEngineScript.MainWorld
++ }
++
++ WebEngineScript {
++ id: commScript
++ injectionPoint: WebEngineScript.DocumentReady
++ sourceCode: "new QWebChannel(window.qt.webChannelTransport, function(channel) {" +
++ " var elem = document.querySelector(channel.objects.comm.selector);" +
++ " elem.addEventListener('keyup', function() { channel.objects.comm.username = elem.value; });" +
++ "});"
++ worldId: WebEngineScript.MainWorld
++ }
++
++ userScripts: [qwebchannel, commScript]
++
+ ProgressBar {
+ anchors.top: parent.top
+ anchors.left: parent.left
+--
+2.18.0
+
diff --git a/programming/library/signon-ui/files/fake-user-agent.patch b/programming/library/signon-ui/files/fake-user-agent.patch
new file mode 100644
index 0000000000..b8021b489c
--- /dev/null
+++ b/programming/library/signon-ui/files/fake-user-agent.patch
@@ -0,0 +1,12 @@
+diff --git a/src/qml/WebView.qml b/src/qml/WebView.qml
+index 33462b8..b720111 100644
+--- a/src/qml/WebView.qml
++++ b/src/qml/WebView.qml
+@@ -25,6 +25,7 @@ WebEngineView {
+ profile: WebEngineProfile {
+ cachePath: rootDir
+ persistentStoragePath: rootDir
++ httpUserAgent: "Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/77.0"
+ }
+
+ ProgressBar {
diff --git a/programming/library/signon-ui/pspec.xml b/programming/library/signon-ui/pspec.xml
new file mode 100644
index 0000000000..76c29a6c74
--- /dev/null
+++ b/programming/library/signon-ui/pspec.xml
@@ -0,0 +1,59 @@
+
+
+
+
+ signon-ui
+ https://gitlab.com/accounts-sso/signon-ui
+
+ Pisi Linux Admins
+ admin@pisilinux.org
+
+ GPLv3
+ library
+ UI component responsible for handling the user interactions which can happen during the login process of an online account
+ Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni
+ https://gitlab.com/accounts-sso/signon-ui/-/archive/4368bb77d9d1abc2978af514225ba4a42c29a646/signon-ui-0.17+20171022.tar.gz
+
+ glib2-devel
+ signon-devel
+ libproxy-devel
+ qt5-base-devel
+ libnotify-devel
+ qt5-webkit-devel
+ libaccounts-qt5-devel
+
+
+ 0001-Reintroduce-the-username-field-reading-with-webkit-o.patch -->
+ 0001-Fix-WebEngine-cache-directory-path.patch -->
+
+
+
+
+ signon-ui
+
+ glib2
+ signon
+ libproxy
+ qt5-base
+ libnotify
+ qt5-webkit
+ libaccounts-qt5
+
+
+ /usr/bin
+ /usr/share/dbus-1
+ /usr/share/doc
+ /usr/share/applications
+
+
+
+
+
+ 2022-11-07
+ 0.17
+ First release
+ Pisi Linux Admins
+ admin@pisilinux.org
+
+
+
diff --git a/programming/library/signon-ui/translations.xml b/programming/library/signon-ui/translations.xml
new file mode 100644
index 0000000000..00c8b6b809
--- /dev/null
+++ b/programming/library/signon-ui/translations.xml
@@ -0,0 +1,8 @@
+
+
+
+ signon-ui
+ UI component responsible for handling the user interactions which can happen during the login process of an online account
+ Bir çevrimiçi hesabın oturum açma işlemi sırasında meydana gelebilecek kullanıcı etkileşimlerini yönetmekten sorumlu UI bileşeni
+
+