From 9200f24823cd3060bb19a2c042f29435b55457b4 Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Thu, 3 Apr 2025 15:53:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BF=AE=E5=A4=8D=E8=87=B32.?= =?UTF-8?q?5.0-14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...n-manager-fix-compile-failed-in-KY3..patch | 42 + ...ion-manager-fixes-link-Qt5DBus-error.patch | 10 +- ...p-Ignore-the-cancel-shutdown-request.patch | 8 +- ...t_autostart_apps-Add-mate-volume-con.patch | 6 +- ...nager.cpp-repair-defects-about-theme.patch | 34 + ...ger-Allow-update-env-while-server-is.patch | 34 + ...x-the-problem-that-inhibitor-window-.patch | 91 ++ ...n1-extend-the-dbus-call-timeout-to-1.patch | 53 + ...tostart-add-polkit-mate-authenticati.patch | 4 +- ...CoreApplication-to-QGui-QApplication.patch | 57 + ...ssion-quit-Add-kiran-session-quit-to.patch | 1056 +++++++++++++++++ ...mpilation-errors-on-versions-lower-t.patch | 34 + ...ors-Session-management-pulled-up-chi.patch | 82 ++ ...epair-the-situation-that-Key-cannot-.patch | 41 + kiran-session-manager.spec | 51 +- 15 files changed, 1567 insertions(+), 36 deletions(-) create mode 100644 1004-Fix-kiran-session-manager-fix-compile-failed-in-KY3..patch rename 0001-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch => 1005-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch (71%) rename 0001-fix-xsmp-Ignore-the-cancel-shutdown-request.patch => 1006-fix-xsmp-Ignore-the-cancel-shutdown-request.patch (94%) rename 0001-feature-blacklist_autostart_apps-Add-mate-volume-con.patch => 1007-feature-blacklist_autostart_apps-Add-mate-volume-con.patch (85%) create mode 100644 1008-fixed-session-manager.cpp-repair-defects-about-theme.patch create mode 100644 1009-fix-session-manager-Allow-update-env-while-server-is.patch create mode 100644 1010-fix-inhibitor-fix-the-problem-that-inhibitor-window-.patch create mode 100644 1011-fix-systemd-login1-extend-the-dbus-call-timeout-to-1.patch rename 0001-fix-blacklist-autostart-add-polkit-mate-authenticati.patch => 1012-fix-blacklist-autostart-add-polkit-mate-authenticati.patch (93%) create mode 100644 1013-fix-Change-QCoreApplication-to-QGui-QApplication.patch create mode 100644 1014-feature-kiran-session-quit-Add-kiran-session-quit-to.patch create mode 100644 1015-fix-build-Fix-compilation-errors-on-versions-lower-t.patch create mode 100644 1016-fix-xsession-errors-Session-management-pulled-up-chi.patch create mode 100644 1017-fix-QGSettings-Repair-the-situation-that-Key-cannot-.patch diff --git a/1004-Fix-kiran-session-manager-fix-compile-failed-in-KY3..patch b/1004-Fix-kiran-session-manager-fix-compile-failed-in-KY3..patch new file mode 100644 index 0000000..936a26c --- /dev/null +++ b/1004-Fix-kiran-session-manager-fix-compile-failed-in-KY3..patch @@ -0,0 +1,42 @@ +From 2af7cd5d78b39c328cadad09985a94c592efa89f Mon Sep 17 00:00:00 2001 +From: niko_yhc +Date: Thu, 10 Aug 2023 16:08:35 +0800 +Subject: [PATCH 1004/1005] Fix(kiran-session-manager):fix compile failed in + KY3.4-3-KiranUI-2.4 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复缺少头文件导致的编译错误 +--- + src/core/app/app.cpp | 1 + + src/core/main.cpp | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/src/core/app/app.cpp b/src/core/app/app.cpp +index 0fc995b..3804ab9 100644 +--- a/src/core/app/app.cpp ++++ b/src/core/app/app.cpp +@@ -24,6 +24,7 @@ + #include "src/core/app/app-manager.h" + #include "src/core/app/app.h" + #include "src/core/utils.h" ++#include + + namespace Kiran + { +diff --git a/src/core/main.cpp b/src/core/main.cpp +index 7ce98db..aedb433 100644 +--- a/src/core/main.cpp ++++ b/src/core/main.cpp +@@ -29,6 +29,7 @@ + #include "src/core/session-manager.h" + #include "src/core/utils.h" + #include "src/core/xsmp-server.h" ++#include + + using namespace Kiran; + +-- +2.27.0 + diff --git a/0001-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch b/1005-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch similarity index 71% rename from 0001-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch rename to 1005-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch index 8eed48d..d405411 100644 --- a/0001-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch +++ b/1005-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch @@ -1,7 +1,7 @@ -From 474e5d9a32f1b8fa4509b668ba48129d1061effc Mon Sep 17 00:00:00 2001 +From e597a1cc0b5f29ed6a53f87a7efd6a16184a5bfc Mon Sep 17 00:00:00 2001 From: niko_yhc -Date: Thu, 7 Sep 2023 16:04:42 +0800 -Subject: [PATCH] fix(kiran-session-manager):fixes link Qt5DBus error +Date: Thu, 7 Sep 2023 16:02:24 +0800 +Subject: [PATCH 1005/1005] fix(kiran-session-manager):fixes link Qt5DBus error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -12,14 +12,14 @@ Content-Transfer-Encoding: 8bit 1 file changed, 1 insertion(+) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt -index 4c4479b..2452ecd 100644 +index 249e281..8c9c63e 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -66,6 +66,7 @@ target_link_libraries( ${XTRANS_LIBRARIES} ${GSETTINGS_QT_LIBRARIES} Qt5::Core -+ Qt5::DBus ++ Qt5::DBus KF5::ConfigCore KF5::KIOCore lib-base diff --git a/0001-fix-xsmp-Ignore-the-cancel-shutdown-request.patch b/1006-fix-xsmp-Ignore-the-cancel-shutdown-request.patch similarity index 94% rename from 0001-fix-xsmp-Ignore-the-cancel-shutdown-request.patch rename to 1006-fix-xsmp-Ignore-the-cancel-shutdown-request.patch index 7c19209..25c574b 100644 --- a/0001-fix-xsmp-Ignore-the-cancel-shutdown-request.patch +++ b/1006-fix-xsmp-Ignore-the-cancel-shutdown-request.patch @@ -1,7 +1,7 @@ -From 9c06f60de67e54bd835e66d1b1adca9e370f0b2b Mon Sep 17 00:00:00 2001 +From 2bb885a0e22c16ed224297c80d3dd291ca9d4e9e Mon Sep 17 00:00:00 2001 From: tangjie02 Date: Tue, 12 Sep 2023 20:29:06 +0800 -Subject: [PATCH] fix(xsmp): Ignore the cancel shutdown request. +Subject: [PATCH 1006/1007] fix(xsmp): Ignore the cancel shutdown request. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -46,7 +46,7 @@ index b42b57d..552929a 100644 { KLOG_WARNING() << "The inhibitor " << inhibitor->cookie << " already exist."; diff --git a/src/core/session-manager.cpp b/src/core/session-manager.cpp -index 6ca79be..b5bdb57 100644 +index 12dcc15..17a3df9 100644 --- a/src/core/session-manager.cpp +++ b/src/core/session-manager.cpp @@ -486,9 +486,10 @@ void SessionManager::onInteractDone(Client *client) @@ -64,5 +64,5 @@ index 6ca79be..b5bdb57 100644 void SessionManager::onEndSessionPhase2Request(Client *client) -- -2.36.1 +2.27.0 diff --git a/0001-feature-blacklist_autostart_apps-Add-mate-volume-con.patch b/1007-feature-blacklist_autostart_apps-Add-mate-volume-con.patch similarity index 85% rename from 0001-feature-blacklist_autostart_apps-Add-mate-volume-con.patch rename to 1007-feature-blacklist_autostart_apps-Add-mate-volume-con.patch index bcb0b87..1e1e889 100644 --- a/0001-feature-blacklist_autostart_apps-Add-mate-volume-con.patch +++ b/1007-feature-blacklist_autostart_apps-Add-mate-volume-con.patch @@ -1,7 +1,7 @@ -From dc2ee24bb97dd8334aa133c8f8b8d39e274b31b1 Mon Sep 17 00:00:00 2001 +From 21d2cd445f7ea808f11eafabf15fc1397b279b0f Mon Sep 17 00:00:00 2001 From: luoqing Date: Sun, 8 Oct 2023 11:30:31 +0800 -Subject: [PATCH] feature(blacklist_autostart_apps):Add +Subject: [PATCH 1007/1007] feature(blacklist_autostart_apps):Add mate-volume-control-status-icon.desktop to the autostart blacklist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -23,5 +23,5 @@ index 04002c9..8459d14 100644 +mate-volume-control-status-icon.desktop \ No newline at end of file -- -2.33.0 +2.27.0 diff --git a/1008-fixed-session-manager.cpp-repair-defects-about-theme.patch b/1008-fixed-session-manager.cpp-repair-defects-about-theme.patch new file mode 100644 index 0000000..3b04e85 --- /dev/null +++ b/1008-fixed-session-manager.cpp-repair-defects-about-theme.patch @@ -0,0 +1,34 @@ +From a41f8007e0e57d11c0b94fe607216ca785e79b3b Mon Sep 17 00:00:00 2001 +From: michael_fengjun +Date: Wed, 25 Oct 2023 15:29:58 +0800 +Subject: [PATCH] fixed(session-manager.cpp) repair defects about theme not + right when into livecd mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复进入livecd模式主题显示不匹配的缺陷 + +Fixed#18146 + +Signed-off-by: michael_fengjun +--- + src/core/session-manager.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/session-manager.cpp b/src/core/session-manager.cpp +index b5bdb57..9bc637a 100644 +--- a/src/core/session-manager.cpp ++++ b/src/core/session-manager.cpp +@@ -34,7 +34,7 @@ + namespace Kiran + { + // 在一个阶段等待所有应用的最长时间(秒) +-#define KSM_PHASE_STARTUP_TIMEOUT 5 ++#define KSM_PHASE_STARTUP_TIMEOUT 15 + + SessionManager::SessionManager(AppManager *app_manager, + ClientManager *client_manager, +-- +2.27.0 + diff --git a/1009-fix-session-manager-Allow-update-env-while-server-is.patch b/1009-fix-session-manager-Allow-update-env-while-server-is.patch new file mode 100644 index 0000000..c641092 --- /dev/null +++ b/1009-fix-session-manager-Allow-update-env-while-server-is.patch @@ -0,0 +1,34 @@ +From 1b42d26d962d83ec128c6d607d04ee87e6cac89c Mon Sep 17 00:00:00 2001 +From: meizhigang +Date: Wed, 20 Dec 2023 10:18:39 +0800 +Subject: [PATCH 1009/1012] fix(session-manager):Allow update env while server + is already init +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + + - 允许后台服务初始化完成后更新环境变量 + + Related #24084 +--- + src/core/session-manager.cpp | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/core/session-manager.cpp b/src/core/session-manager.cpp +index 9bc637a..5638b4e 100644 +--- a/src/core/session-manager.cpp ++++ b/src/core/session-manager.cpp +@@ -276,10 +276,6 @@ void SessionManager::Setenv(const QString &name, const QString &value) + { + KLOG_DEBUG() << "Set environment variable. name: " << name << ", value: " << value; + +- if (this->m_currentPhase > KSMPhase::KSM_PHASE_INITIALIZATION) +- { +- DBUS_ERROR_REPLY_AND_RET(QDBusError::InvalidArgs, KSMErrorCode::ERROR_MANAGER_PHASE_INVALID); +- } + Utils::getDefault()->setEnv(name, value); + } + +-- +2.27.0 + diff --git a/1010-fix-inhibitor-fix-the-problem-that-inhibitor-window-.patch b/1010-fix-inhibitor-fix-the-problem-that-inhibitor-window-.patch new file mode 100644 index 0000000..866ba26 --- /dev/null +++ b/1010-fix-inhibitor-fix-the-problem-that-inhibitor-window-.patch @@ -0,0 +1,91 @@ +From f27fcf913904f16db55fff149c6c558e1a17b9ee Mon Sep 17 00:00:00 2001 +From: tangjie02 +Date: Tue, 19 Dec 2023 16:31:33 +0800 +Subject: [PATCH 1010/1012] fix(inhibitor): fix the problem that inhibitor + window is show when the number of inhibitor is zero. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复当抑制器数量为0时还弹出抑制器窗口问题 + +Fixed #24564 + +Signed-off-by: tangjie02 +--- + src/ui/exit-query-window.cpp | 17 ++++++++++++++--- + src/ui/exit-query-window.h | 5 ++++- + 2 files changed, 18 insertions(+), 4 deletions(-) + +diff --git a/src/ui/exit-query-window.cpp b/src/ui/exit-query-window.cpp +index 333b882..d0ee0ca 100644 +--- a/src/ui/exit-query-window.cpp ++++ b/src/ui/exit-query-window.cpp +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include "lib/base/base.h" + #include "src/ui/inhibitor-row.h" +@@ -67,8 +68,11 @@ void ExitQueryWindow::initUI() + + connect(primaryScreen, SIGNAL(virtualGeometryChanged(const QRect &)), this, SLOT(onVirtualGeometryChanged(const QRect &))); + +- connect(this->m_ui->m_ok, &QPushButton::clicked, std::bind(&ExitQueryWindow::onResultClicked, this, std::placeholders::_1, "ok")); +- connect(this->m_ui->m_cancel, &QPushButton::clicked, std::bind(&ExitQueryWindow::onResultClicked, this, std::placeholders::_1, "cancel")); ++ connect(this->m_ui->m_ok, &QPushButton::clicked, [this](bool) ++ { this->quit("ok"); }); ++ ++ connect(this->m_ui->m_cancel, &QPushButton::clicked, [this](bool) ++ { this->quit("cancel"); }); + } + + void ExitQueryWindow::initInhibitors() +@@ -97,6 +101,13 @@ void ExitQueryWindow::initInhibitors() + this->m_ui->m_title->setText(tr("Closing %1 apps").arg(jsonRoot.size())); + this->m_ui->m_titleDesc->setText(tr("If you want to go back and save your work, click 'cancel' and finish what you want to do")); + ++ /* 大多数情况是不会出现为0的情况。出现这种情况的原因是在启动当前进程的过程中,会话管理进程收到了客户端响应信息并删除掉了客户端的抑制器,导致此时获取的数量为0。 ++ 主要原因是因为在启动当前进程时有一个延时差,因此这里再做一次判断,如果抑制器数量为0,就之前退出当前进程了。*/ ++ if (jsonRoot.size() == 0) ++ { ++ QTimer::singleShot(0, std::bind(&ExitQueryWindow::quit, this, "ok")); ++ } ++ + for (auto iter : jsonRoot) + { + auto jsonInhibitor = iter.toObject(); +@@ -126,7 +137,7 @@ void ExitQueryWindow::initInhibitors() + } + } + +-void ExitQueryWindow::onResultClicked(bool checked, const QString &result) ++void ExitQueryWindow::quit(const QString &result) + { + QJsonObject jsonObj; + jsonObj.insert("response_id", result); +diff --git a/src/ui/exit-query-window.h b/src/ui/exit-query-window.h +index b970a77..d458aa0 100644 +--- a/src/ui/exit-query-window.h ++++ b/src/ui/exit-query-window.h +@@ -37,11 +37,14 @@ public: + ExitQueryWindow(int32_t powerAction, QWidget *parent = nullptr); + virtual ~ExitQueryWindow(){}; + ++ // 获取应用/InhibitorRow数量 ++ int32_t getAppCount(); ++ + private: + void initUI(); + void initInhibitors(); + +- void onResultClicked(bool checked, const QString &result); ++ void quit(const QString &result); + + private: + // virtual void resizeEvent(QResizeEvent *event) override; +-- +2.27.0 + diff --git a/1011-fix-systemd-login1-extend-the-dbus-call-timeout-to-1.patch b/1011-fix-systemd-login1-extend-the-dbus-call-timeout-to-1.patch new file mode 100644 index 0000000..ec2fdf9 --- /dev/null +++ b/1011-fix-systemd-login1-extend-the-dbus-call-timeout-to-1.patch @@ -0,0 +1,53 @@ +From efecb995410a2990e53619c3e9f3bff6daf48556 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Thu, 21 Dec 2023 11:38:48 +0800 +Subject: [PATCH 1011/1012] fix(systemd-login1):extend the dbus call timeout to + 10s to fix the restart failure caused by the CanReboot call timeout +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 将reboot和shutdonw相关的dbus调用超时时间延长到10s,以修复由于调用CanReboot超时,而导致的重启失效问题 +--- + lib/dbus/systemd-login1.cpp | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/lib/dbus/systemd-login1.cpp b/lib/dbus/systemd-login1.cpp +index e2416a3..34319d3 100644 +--- a/lib/dbus/systemd-login1.cpp ++++ b/lib/dbus/systemd-login1.cpp +@@ -57,6 +57,13 @@ namespace Kiran + #define LOGIN1_DBUS_OBJECT_PATH "/org/freedesktop/login1" + #define LOGIN1_MANAGER_DBUS_INTERFACE "org.freedesktop.login1.Manager" + #define LOGIN1_SESSION_DBUS_INTERFACE "org.freedesktop.login1.Session" ++/** ++ * 执行重启的过程中,会先退出会话,如果是当前账户的最后一个会话,会重启会话中的dbus服务,以杀死会话下的所有进程,退出会话 ++ * 然后调用Logind的CanReboot,再调用Reboot实现重启 ++ * 在调用CanReboot的过程中,如果等待dbus消息超时的时间为300ms,等待时间太短,如果超时则不会继续执行Reboot,从而导致重启功能失效 ++ * 因此,将等待超时时间改为10000ms ++*/ ++#define LOGIN1_DBUS_METHOD_TIMEOUT_MS 10000 + + SystemdLogin1::SystemdLogin1() + { +@@ -178,7 +185,7 @@ bool SystemdLogin1::canDoMethod(const QString &methodName) + LOGIN1_MANAGER_DBUS_INTERFACE, + methodName); + +- auto replyMessage = QDBusConnection::systemBus().call(sendMessage, QDBus::Block, DBUS_TIMEOUT_MS); ++ auto replyMessage = QDBusConnection::systemBus().call(sendMessage, QDBus::Block, LOGIN1_DBUS_METHOD_TIMEOUT_MS); + if (replyMessage.type() == QDBusMessage::ErrorMessage) + { + KLOG_WARNING() << "Call " << methodName << " failed: " << replyMessage.errorMessage(); +@@ -202,7 +209,7 @@ bool SystemdLogin1::doMethod(const QString &methodName) + methodName); + + sendMessage << false; +- auto replyMessage = QDBusConnection::systemBus().call(sendMessage, QDBus::Block, DBUS_TIMEOUT_MS); ++ auto replyMessage = QDBusConnection::systemBus().call(sendMessage, QDBus::Block, LOGIN1_DBUS_METHOD_TIMEOUT_MS); + if (replyMessage.type() == QDBusMessage::ErrorMessage) + { + KLOG_WARNING() << "Call " << methodName << " failed: " << replyMessage.errorMessage(); +-- +2.27.0 + diff --git a/0001-fix-blacklist-autostart-add-polkit-mate-authenticati.patch b/1012-fix-blacklist-autostart-add-polkit-mate-authenticati.patch similarity index 93% rename from 0001-fix-blacklist-autostart-add-polkit-mate-authenticati.patch rename to 1012-fix-blacklist-autostart-add-polkit-mate-authenticati.patch index 84aa58d..d6649e5 100644 --- a/0001-fix-blacklist-autostart-add-polkit-mate-authenticati.patch +++ b/1012-fix-blacklist-autostart-add-polkit-mate-authenticati.patch @@ -1,7 +1,7 @@ From 900779f8301993031bfc75e12d9b75fb27f6b990 Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Sat, 20 Jan 2024 12:57:58 +0800 -Subject: [PATCH] fix(blacklist autostart): add +Subject: [PATCH 1012/1012] fix(blacklist autostart): add polkit-mate-authentication-agent-1 to blacklist MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 @@ -25,5 +25,5 @@ index 8459d14..6302c5f 100644 +mate-volume-control-status-icon.desktop +polkit-mate-authentication-agent-1.desktop -- -2.33.0 +2.27.0 diff --git a/1013-fix-Change-QCoreApplication-to-QGui-QApplication.patch b/1013-fix-Change-QCoreApplication-to-QGui-QApplication.patch new file mode 100644 index 0000000..a277ceb --- /dev/null +++ b/1013-fix-Change-QCoreApplication-to-QGui-QApplication.patch @@ -0,0 +1,57 @@ +From 7102b5da050c3f11679210ee8c3fdd4f3907077c Mon Sep 17 00:00:00 2001 +From: youzhengcai +Date: Tue, 12 Mar 2024 09:59:13 +0800 +Subject: [PATCH] fix(*): Change QCoreApplication to QGui/QApplication. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 将 QCoreApplication 改为 QGui/QApplication,修复XDMCP连接断开会话管理不自动退出问题. + +Closed #31631 #31796 +--- + src/core/CMakeLists.txt | 1 + + src/core/main.cpp | 8 ++++---- + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index 8c9c63e..c36cff6 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -66,6 +66,7 @@ target_link_libraries( + ${XTRANS_LIBRARIES} + ${GSETTINGS_QT_LIBRARIES} + Qt5::Core ++ Qt5::Widgets + Qt5::DBus + KF5::ConfigCore + KF5::KIOCore +diff --git a/src/core/main.cpp b/src/core/main.cpp +index aedb433..c9a3f47 100644 +--- a/src/core/main.cpp ++++ b/src/core/main.cpp +@@ -13,7 +13,7 @@ + */ + + #include +-#include ++#include + #include + #include + #include +@@ -105,9 +105,9 @@ int main(int argc, char *argv[]) + // wayland方式下可能需要自己启动dbus-daemon + startDBusSession(argc, argv); + +- QCoreApplication app(argc, argv); +- QCoreApplication::setApplicationName(programName); +- QCoreApplication::setApplicationVersion(PROJECT_VERSION); ++ QApplication app(argc, argv); ++ QApplication::setApplicationName(programName); ++ QApplication::setApplicationVersion(PROJECT_VERSION); + + QTranslator translator; + +-- +2.27.0 + diff --git a/1014-feature-kiran-session-quit-Add-kiran-session-quit-to.patch b/1014-feature-kiran-session-quit-Add-kiran-session-quit-to.patch new file mode 100644 index 0000000..755db1e --- /dev/null +++ b/1014-feature-kiran-session-quit-Add-kiran-session-quit-to.patch @@ -0,0 +1,1056 @@ +From 0e654f10072a66462fe1ff857bba2dbb410e067c Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Tue, 23 Jul 2024 20:24:32 +0800 +Subject: [PATCH 1014/1015] feature(kiran-session-quit):Add kiran-session-quit + to support shutdown shortcut +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 增加kiran-session-quit用于支持关机快捷键 + +Related #44337 +--- + .gitignore | 4 + + src/CMakeLists.txt | 1 + + src/core/CMakeLists.txt | 9 +- + src/core/inhibitor-manager.cpp | 24 ++-- + src/core/session-manager.cpp | 44 +++---- + src/tool/CMakeLists.txt | 1 + + src/tool/quit/CMakeLists.txt | 46 ++++++++ + src/tool/quit/main.cpp | 103 ++++++++++++++++ + src/ui/CMakeLists.txt | 18 +-- + src/ui/exit-query-window.cpp | 79 ++++++++----- + src/ui/exit-query-window.ui | 59 +++++----- + src/ui/inhibitor-row.cpp | 20 ++-- + src/ui/main.cpp | 20 ++-- + translations/kiran-session-manager.zh_CN.ts | 22 +++- + translations/kiran-session-quit.zh_CN.ts | 22 ++++ + translations/kiran-session-window.zh_CN.ts | 124 ++++++++++---------- + 16 files changed, 397 insertions(+), 199 deletions(-) + create mode 100644 .gitignore + create mode 100644 src/tool/CMakeLists.txt + create mode 100644 src/tool/quit/CMakeLists.txt + create mode 100644 src/tool/quit/main.cpp + create mode 100644 translations/kiran-session-quit.zh_CN.ts + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..d5cfc28 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1,4 @@ ++build ++CMakeLists.txt.user ++.vscode ++.idea +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 8bbc34f..5ec5ec6 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -1,3 +1,4 @@ + add_subdirectory(core) + add_subdirectory(idle) + add_subdirectory(ui) ++add_subdirectory(tool) +\ No newline at end of file +diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt +index c36cff6..248b864 100644 +--- a/src/core/CMakeLists.txt ++++ b/src/core/CMakeLists.txt +@@ -32,8 +32,13 @@ qt5_add_dbus_interface( + + set(TARGET_NAME kiran-session-manager) + +-file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/translations/${TARGET_NAME}.*.ts") +-qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) ++set(TS_FILES "${PROJECT_SOURCE_DIR}/translations/${TARGET_NAME}.zh_CN.ts") ++execute_process( ++ COMMAND ++ lupdate-qt5 -no-obsolete ${PROJECT_SOURCE_DIR}/lib ${SRC_H_FILES} ++ ${SRC_CPP_FILES} -ts ${TS_FILES}) ++ ++qt5_add_translation(QM_FILES ${TS_FILES}) + + add_executable( + ${TARGET_NAME} +diff --git a/src/core/inhibitor-manager.cpp b/src/core/inhibitor-manager.cpp +index 552929a..5913cd9 100644 +--- a/src/core/inhibitor-manager.cpp ++++ b/src/core/inhibitor-manager.cpp +@@ -1,22 +1,22 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-session-manager is licensed under Mulan PSL v2. +- * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: +- * http://license.coscl.org.cn/MulanPSL2 +- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +- * See the Mulan PSL v2 for more details. +- * ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * + * Author: tangjie02 + */ + +-#include "src/core/inhibitor-manager.h" ++#include "inhibitor-manager.h" + #include "lib/base/base.h" +-#include "src/core/presence.h" +-#include "src/core/session-manager.h" +-#include "src/core/utils.h" ++#include "presence.h" ++#include "session-manager.h" ++#include "utils.h" + + namespace Kiran + { +diff --git a/src/core/session-manager.cpp b/src/core/session-manager.cpp +index 5638b4e..489bcb9 100644 +--- a/src/core/session-manager.cpp ++++ b/src/core/session-manager.cpp +@@ -1,18 +1,18 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-session-manager is licensed under Mulan PSL v2. +- * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: +- * http://license.coscl.org.cn/MulanPSL2 +- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +- * See the Mulan PSL v2 for more details. +- * ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * + * Author: tangjie02 + */ + +-#include "src/core/session-manager.h" ++#include "session-manager.h" + #include + #include + #include +@@ -20,16 +20,16 @@ + #include + #include + #include ++#include "app/app-manager.h" ++#include "client/client-manager.h" ++#include "inhibitor-manager.h" + #include "lib/base/base.h" + #include "lib/dbus/systemd-login1.h" +-#include "src/core/app/app-manager.h" +-#include "src/core/client/client-manager.h" +-#include "src/core/inhibitor-manager.h" +-#include "src/core/power.h" +-#include "src/core/presence.h" +-#include "src/core/session_manager_adaptor.h" +-#include "src/core/signal-handler.h" +-#include "src/core/utils.h" ++#include "power.h" ++#include "presence.h" ++#include "session_manager_adaptor.h" ++#include "signal-handler.h" ++#include "utils.h" + + namespace Kiran + { +@@ -446,7 +446,7 @@ void SessionManager::onClientDeleted(Client *client) + } + + /* 这里不调用restart而是start的原因是因为存在如下情况: +- 当已经存在一个caja进程时,再次运行caja,caja会重新发送一个新的clientID(正常逻辑应该是发送第一次启动caja时的ClientID) ++ 当已经存在一个caja进程时,再次运行caja,caja会重新发送一个新的clientID(正常逻辑应该是发送第一次启动caja时的ClientID) + 而这个新发送的ClientID在稍后又被caja给关闭了,这样就会触发ClientDeleted信号,而且会触发两次, + 第一次是通过dbus协议发送(监听name lost信号),第二次是通过x协议发送,在第二次时getAppID会查找到第一个clientID, + 这样就导致app被重启(而实际上caja并未退出),然后caja又会循环这样的操作,导致caja一直无法拉起 */ +@@ -722,14 +722,6 @@ void SessionManager::queryEndSessionComplete() + this->m_waitingClientsTimeoutID->disconnect(); + this->m_waitingClientsTimeoutID->stop(); + +- auto showExitWindow = this->m_settings->get(KSM_SCHEMA_KEY_ALWAYS_SHOW_EXIT_WINDOW).toBool(); +- // 如果不存在退出会话的抑制器,则直接进入下一个阶段 +- if (!showExitWindow && !this->m_inhibitorManager->hasInhibitor(KSMInhibitorFlag::KSM_INHIBITOR_FLAG_QUIT)) +- { +- this->startNextPhase(); +- return; +- } +- + if (this->m_process->state() != QProcess::Running) + { + this->m_process->setProgram("/usr/bin/kiran-session-window"); +diff --git a/src/tool/CMakeLists.txt b/src/tool/CMakeLists.txt +new file mode 100644 +index 0000000..191a478 +--- /dev/null ++++ b/src/tool/CMakeLists.txt +@@ -0,0 +1 @@ ++add_subdirectory(quit) +\ No newline at end of file +diff --git a/src/tool/quit/CMakeLists.txt b/src/tool/quit/CMakeLists.txt +new file mode 100644 +index 0000000..f61fb9f +--- /dev/null ++++ b/src/tool/quit/CMakeLists.txt +@@ -0,0 +1,46 @@ ++cmake_minimum_required(VERSION 3.0) ++ ++file(GLOB_RECURSE H_FILES ./*.h) ++file(GLOB_RECURSE CPP_FILES ./*.cpp) ++ ++ ++set_source_files_properties( ++ ${CMAKE_SOURCE_DIR}/data/org.gnome.SessionManager.xml ++ PROPERTIES CLASSNAME SessionManagerProxy NO_NAMESPACE true) ++ ++qt5_add_dbus_interface( ++ SESSION_MANAGER_SRCS ${CMAKE_SOURCE_DIR}/data/org.gnome.SessionManager.xml ++ session_manager_proxy) ++ ++set(TARGET_NAME kiran-session-quit) ++ ++set(TS_FILES "${PROJECT_SOURCE_DIR}/translations/${TARGET_NAME}.zh_CN.ts") ++execute_process( ++ COMMAND ++ lupdate-qt5 -no-obsolete ${H_FILES} ++ ${CPP_FILES} -ts ${TS_FILES}) ++ ++qt5_add_translation(QM_FILES ${TS_FILES}) ++ ++add_executable( ++ ${TARGET_NAME} ++ ${H_FILES} ++ ${CPP_FILES} ++ ${SESSION_MANAGER_SRCS} ++ ${QM_FILES}) ++ ++target_include_directories( ++ ${TARGET_NAME} ++ PRIVATE ${PROJECT_BINARY_DIR} ++ ${PROJECT_SOURCE_DIR} ++ ${PROJECT_SOURCE_DIR}/include ++ ${KLOG_QT5_INCLUDE_DIRS}) ++ ++target_link_libraries( ++ ${TARGET_NAME} ++ PRIVATE ${KLOG_QT5_LIBRARIES} ++ Qt5::Widgets ++ Qt5::DBus) ++ ++install(FILES ${QM_FILES} DESTINATION ${KSM_INSTALL_TRANSLATIONDIR}) ++install(TARGETS ${TARGET_NAME} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}) +diff --git a/src/tool/quit/main.cpp b/src/tool/quit/main.cpp +new file mode 100644 +index 0000000..2b04c96 +--- /dev/null ++++ b/src/tool/quit/main.cpp +@@ -0,0 +1,103 @@ ++/** ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * kiran-session-manager is licensed under Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You may obtain a copy of Mulan PSL v2 at: ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * ++ * Author: yangfeng ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include "config.h" ++#include "ksm-i.h" ++#include "session_manager_proxy.h" ++ ++int main(int argc, char *argv[]) ++{ ++ auto argv0 = QFileInfo(argv[0]); ++ auto programName = argv0.baseName(); ++ ++ if (klog_qt5_init(QString(), "kylinsec-session", PROJECT_NAME, programName) < 0) ++ { ++ fprintf(stderr, "Failed to init kiran-log."); ++ } ++ ++ QApplication app(argc, argv); ++ ++ QTranslator translator; ++ if (!translator.load(QLocale(), qAppName(), ".", KSM_INSTALL_TRANSLATIONDIR, ".qm")) ++ { ++ KLOG_WARNING() << "Load translator failed!"; ++ } ++ else ++ { ++ app.installTranslator(&translator); ++ } ++ ++ QTextStream cerr(stderr); ++ ++ QCommandLineParser parser; ++ ++ QCommandLineOption logoutOption("logout", QObject::tr("logout")); ++ QCommandLineOption powerOffOption("power-off", QObject::tr("power-off")); ++ QCommandLineOption rebootOption("reboot", QObject::tr("reboot")); ++ ++ parser.addOption(logoutOption); ++ parser.addOption(powerOffOption); ++ parser.addOption(rebootOption); ++ parser.parse(app.arguments()); ++ ++ SessionManagerProxy *sessionManagerProxy; ++ sessionManagerProxy = new SessionManagerProxy(KSM_DBUS_NAME, ++ KSM_DBUS_OBJECT_PATH, ++ QDBusConnection::sessionBus()); ++ if (parser.isSet(logoutOption)) ++ { ++ auto reply = sessionManagerProxy->Logout(0); ++ reply.waitForFinished(); ++ if (reply.isError()) ++ { ++ KLOG_WARNING() << "logout failed through dbus:" << reply.error().message(); ++ return 1; ++ } ++ } ++ else if (parser.isSet(powerOffOption)) ++ { ++ auto reply = sessionManagerProxy->Shutdown(); ++ reply.waitForFinished(); ++ if (reply.isError()) ++ { ++ KLOG_WARNING() << "shutdown failed through dbus:" << reply.error().message(); ++ return 1; ++ } ++ } ++ else if (parser.isSet(rebootOption)) ++ { ++ auto reply = sessionManagerProxy->Reboot(); ++ reply.waitForFinished(); ++ if (reply.isError()) ++ { ++ KLOG_WARNING() << "reboot failed through dbus:" << reply.error().message(); ++ return 1; ++ } ++ } ++ else ++ { ++ cerr << parser.helpText() << Qt::endl; ++ delete sessionManagerProxy; ++ return 1; ++ } ++ ++ delete sessionManagerProxy; ++ ++ return 0; ++} +\ No newline at end of file +diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt +index adc7aed..ca3d365 100644 +--- a/src/ui/CMakeLists.txt ++++ b/src/ui/CMakeLists.txt +@@ -1,8 +1,8 @@ + cmake_minimum_required(VERSION 3.0) + +-file(GLOB_RECURSE UI_H_FILES ./*.h) +-file(GLOB_RECURSE UI_CPP_FILES ./*.cpp) +-# file(GLOB_RECURSE UI_FILES2 ./*.ui) ++file(GLOB_RECURSE H_FILES ./*.h) ++file(GLOB_RECURSE CPP_FILES ./*.cpp) ++file(GLOB_RECURSE UI_FILES ./*.ui) + + set_source_files_properties( + ${CMAKE_SOURCE_DIR}/data/org.gnome.SessionManager.xml +@@ -14,15 +14,17 @@ qt5_add_dbus_interface( + + set(TARGET_NAME kiran-session-window) + +-qt5_wrap_ui(UI_FILES ${CMAKE_CURRENT_SOURCE_DIR}/exit-query-window.ui +- ${CMAKE_CURRENT_SOURCE_DIR}/inhibitor-row.ui) + +-file(GLOB TS_FILES "${PROJECT_SOURCE_DIR}/translations/${TARGET_NAME}.*.ts") +-qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) ++set(TS_FILES "${PROJECT_SOURCE_DIR}/translations/${TARGET_NAME}.zh_CN.ts") ++execute_process( ++ COMMAND ++ lupdate-qt5 -no-obsolete ${PROJECT_SOURCE_DIR}/lib ${H_FILES} ${CPP_FILES} ${UI_FILES} -ts ${TS_FILES}) ++ ++qt5_add_translation(QM_FILES ${TS_FILES}) + + add_executable( + ${TARGET_NAME} +- ${UI_H_FILES} ${UI_CPP_FILES} ${UI_FILES} ${SESSION_MANAGER_SRCS} ${QM_FILES} ++ ${H_FILES} ${CPP_FILES} ${UI_FILES} ${SESSION_MANAGER_SRCS} ${QM_FILES} + "${PROJECT_SOURCE_DIR}/resources/resources.qrc") + + target_include_directories( +diff --git a/src/ui/exit-query-window.cpp b/src/ui/exit-query-window.cpp +index d0ee0ca..1c3774c 100644 +--- a/src/ui/exit-query-window.cpp ++++ b/src/ui/exit-query-window.cpp +@@ -1,18 +1,18 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-session-manager is licensed under Mulan PSL v2. +- * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: +- * http://license.coscl.org.cn/MulanPSL2 +- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +- * See the Mulan PSL v2 for more details. +- * ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * + * Author: tangjie02 + */ + +-#include "src/ui/exit-query-window.h" ++#include "exit-query-window.h" + #include + #include + #include +@@ -25,10 +25,10 @@ + #include + #include + #include ++#include "inhibitor-row.h" + #include "lib/base/base.h" +-#include "src/ui/inhibitor-row.h" +-#include "src/ui/session_manager_interface.h" +-#include "src/ui/ui_exit-query-window.h" ++#include "session_manager_interface.h" ++#include "ui_exit-query-window.h" + + QT_BEGIN_NAMESPACE + Q_WIDGETS_EXPORT void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed = 0); +@@ -98,43 +98,58 @@ void ExitQueryWindow::initInhibitors() + } + + auto jsonRoot = jsonDoc.array(); +- this->m_ui->m_title->setText(tr("Closing %1 apps").arg(jsonRoot.size())); + this->m_ui->m_titleDesc->setText(tr("If you want to go back and save your work, click 'cancel' and finish what you want to do")); + + /* 大多数情况是不会出现为0的情况。出现这种情况的原因是在启动当前进程的过程中,会话管理进程收到了客户端响应信息并删除掉了客户端的抑制器,导致此时获取的数量为0。 + 主要原因是因为在启动当前进程时有一个延时差,因此这里再做一次判断,如果抑制器数量为0,就之前退出当前进程了。*/ +- if (jsonRoot.size() == 0) +- { +- QTimer::singleShot(0, std::bind(&ExitQueryWindow::quit, this, "ok")); +- } +- +- for (auto iter : jsonRoot) +- { +- auto jsonInhibitor = iter.toObject(); +- if (jsonInhibitor.contains(KSM_INHIBITOR_JK_FLAGS) && +- jsonInhibitor.take(KSM_INHIBITOR_JK_FLAGS).toInt() == KSMInhibitorFlag::KSM_INHIBITOR_FLAG_QUIT) +- { +- this->m_ui->m_inhibitorsLayout->addWidget(new InhibitorRow(jsonInhibitor)); +- } +- } +- +- this->m_ui->m_inhibitorsLayout->addStretch(); + + switch (this->m_powerAction) + { + case PowerAction::POWER_ACTION_LOGOUT: +- this->m_ui->m_ok->setText(tr("Forced logout")); ++ { ++ this->m_ui->m_ok->setText(tr("Logout")); ++ this->m_ui->m_title->setText(tr("The current user is being logged out")); + break; ++ } + case PowerAction::POWER_ACTION_SHUTDOWN: +- this->m_ui->m_ok->setText(tr("Forced shutdown")); ++ { ++ this->m_ui->m_ok->setText(tr("Shutdown")); ++ this->m_ui->m_title->setText(tr("Shutting down the system")); + break; ++ } + case PowerAction::POWER_ACTION_REBOOT: +- this->m_ui->m_ok->setText(tr("Forced reboot")); ++ { ++ this->m_ui->m_ok->setText(tr("Reboot")); ++ this->m_ui->m_title->setText(tr("Restarting the system")); + break; ++ } + default: ++ { + KLOG_WARNING() << "The power action is unsupported. action: " << this->m_powerAction; + break; + } ++ } ++ ++ if (jsonRoot.size() == 0) ++ { ++ this->m_ui->m_inhibitorsScrollArea->hide(); ++ this->m_ui->m_content->setFixedSize(400, 180); ++ } ++ else ++ { ++ this->m_ui->m_content->setFixedSize(600, 400); ++ for (auto iter : jsonRoot) ++ { ++ auto jsonInhibitor = iter.toObject(); ++ if (jsonInhibitor.contains(KSM_INHIBITOR_JK_FLAGS) && ++ jsonInhibitor.take(KSM_INHIBITOR_JK_FLAGS).toInt() == KSMInhibitorFlag::KSM_INHIBITOR_FLAG_QUIT) ++ { ++ this->m_ui->m_inhibitorsLayout->addWidget(new InhibitorRow(jsonInhibitor)); ++ } ++ } ++ ++ this->m_ui->m_inhibitorsLayout->addStretch(); ++ } + } + + void ExitQueryWindow::quit(const QString &result) +diff --git a/src/ui/exit-query-window.ui b/src/ui/exit-query-window.ui +index e6e6520..c551517 100644 +--- a/src/ui/exit-query-window.ui ++++ b/src/ui/exit-query-window.ui +@@ -6,8 +6,8 @@ + + 0 + 0 +- 800 +- 600 ++ 825 ++ 555 + + + +@@ -59,7 +59,20 @@ + + 0 + +- ++ ++ ++ ++ Qt::Horizontal ++ ++ ++ ++ 40 ++ 20 ++ ++ ++ ++ ++ + + + Qt::Horizontal +@@ -75,7 +88,7 @@ + + + +- ++ + + + +@@ -86,7 +99,7 @@ + + + 400 +- 300 ++ 180 + + + +@@ -95,6 +108,9 @@ + 400 + + ++ ++ ++ + + + 0 +@@ -158,13 +174,13 @@ + + + 0 +- 216 ++ 220 + + + + + 16777215 +- 216 ++ 220 + + + +@@ -184,8 +200,8 @@ + + 0 + 0 +- 510 +- 204 ++ 470 ++ 218 + + + +@@ -278,13 +294,13 @@ + + + +- +- ++ ++ + + Qt::Vertical + + +- QSizePolicy::Expanding ++ QSizePolicy::Fixed + + + +@@ -294,13 +310,13 @@ + + + +- +- ++ ++ + + Qt::Vertical + + +- QSizePolicy::Fixed ++ QSizePolicy::Expanding + + + +@@ -310,19 +326,6 @@ + + + +- +- +- +- Qt::Horizontal +- +- +- +- 40 +- 20 +- +- +- +- + + + +diff --git a/src/ui/inhibitor-row.cpp b/src/ui/inhibitor-row.cpp +index ce85bac..df8ee28 100644 +--- a/src/ui/inhibitor-row.cpp ++++ b/src/ui/inhibitor-row.cpp +@@ -1,22 +1,22 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-session-manager is licensed under Mulan PSL v2. +- * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: +- * http://license.coscl.org.cn/MulanPSL2 +- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +- * See the Mulan PSL v2 for more details. +- * ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * + * Author: tangjie02 + */ + +-#include "src/ui/inhibitor-row.h" ++#include "inhibitor-row.h" + #include + #include + #include "lib/base/base.h" +-#include "src/ui/ui_inhibitor-row.h" ++#include "ui_inhibitor-row.h" + + namespace Kiran + { +diff --git a/src/ui/main.cpp b/src/ui/main.cpp +index 5495b75..d86d670 100644 +--- a/src/ui/main.cpp ++++ b/src/ui/main.cpp +@@ -1,14 +1,14 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-session-manager is licensed under Mulan PSL v2. +- * You can use this software according to the terms and conditions of the Mulan PSL v2. ++ * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: +- * http://license.coscl.org.cn/MulanPSL2 +- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +- * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +- * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +- * See the Mulan PSL v2 for more details. +- * ++ * http://license.coscl.org.cn/MulanPSL2 ++ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, ++ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, ++ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. ++ * See the Mulan PSL v2 for more details. ++ * + * Author: tangjie02 + */ + +@@ -17,8 +17,8 @@ + #include + #include + #include "config.h" ++#include "exit-query-window.h" + #include "lib/base/base.h" +-#include "src/ui/exit-query-window.h" + + using namespace Kiran; + +@@ -49,7 +49,7 @@ int main(int argc, char *argv[]) + app.installTranslator(&translator); + } + +- ///加载样式表 ++ /// 加载样式表 + QFile file(DEFAULT_STYLE_FILE); + if (file.open(QIODevice::ReadOnly)) + { +diff --git a/translations/kiran-session-manager.zh_CN.ts b/translations/kiran-session-manager.zh_CN.ts +index 7696cbb..3e3b88c 100644 +--- a/translations/kiran-session-manager.zh_CN.ts ++++ b/translations/kiran-session-manager.zh_CN.ts +@@ -4,12 +4,12 @@ + + Kiran::SessionManager + +- ++ + This program is not responding + 程序未响应 + + +- ++ + This program is blocking exit + 程序正在阻止退出 + +@@ -65,14 +65,24 @@ + + main + +- ++ + Specify a session type that contains required components. + 指定一个会话类型,该会话类型包含需要加载的组件列表。 + + +- +- session type +- 会话类型 ++ ++ SESSION_NAME ++ ++ ++ ++ ++ Override standard autostart directories. ++ ++ ++ ++ ++ AUTOSTART_DIRS ++ + + + +diff --git a/translations/kiran-session-quit.zh_CN.ts b/translations/kiran-session-quit.zh_CN.ts +new file mode 100644 +index 0000000..e76dbb3 +--- /dev/null ++++ b/translations/kiran-session-quit.zh_CN.ts +@@ -0,0 +1,22 @@ ++ ++ ++ ++ ++ QObject ++ ++ ++ logout ++ 注销 ++ ++ ++ ++ power-off ++ 关机 ++ ++ ++ ++ reboot ++ 重启 ++ ++ ++ +diff --git a/translations/kiran-session-window.zh_CN.ts b/translations/kiran-session-window.zh_CN.ts +index 4ad8351..41d3243 100644 +--- a/translations/kiran-session-window.zh_CN.ts ++++ b/translations/kiran-session-window.zh_CN.ts +@@ -4,27 +4,27 @@ + + ExitQueryWindow + +- ++ + MainWindow +- 主窗口 ++ + + +- ++ + Closing apps +- 正在关闭应用 ++ + + +- ++ + If you want to go back and save your work, click 'cancel' and finish what you want to do + 如果想要返回并保存你的工作,可单击'取消',然后完成你要执行的操作 + + +- ++ + Forced shutdown +- 强制关机 ++ + + +- ++ + Cancel + 取消 + +@@ -32,58 +32,59 @@ + + InhibitorRow + +- ++ + Form +- Form ++ + + +- +- PushButton +- +- +- +- +- ++ ++ + TextLabel +- +- +- +- Unknown application +- 未知应用 ++ + + + + Kiran::ExitQueryWindow + +- +- Closing %1 apps +- 正在关闭%1个应用程序 ++ ++ Shutting down the system ++ 正在关闭系统 + + +- +- If you want to go back and save your work, click 'cancel' and finish what you want to do +- 如果想要返回并保存你的工作,可单击'取消',然后完成你要执行的操作 ++ ++ Restarting the system ++ 正在重启系统 + + +- +- Forced logout +- 强制注销 ++ ++ Logout ++ 注销 + + + +- Forced shutdown +- 强制关机 ++ The current user is being logged out ++ 正在注销当前用户 ++ ++ ++ ++ Shutdown ++ 关机 + + +- +- Forced reboot +- 强制重启 ++ ++ Reboot ++ 重启 ++ ++ ++ ++ If you want to go back and save your work, click 'cancel' and finish what you want to do ++ 如果想要返回并保存你的工作,可单击'取消',然后完成你要执行的操作 + + + + Kiran::InhibitorRow + +- ++ + Unknown application + 未知应用 + +@@ -91,67 +92,60 @@ + + QObject + ++ + The phase cannot be register. +- 该阶段不允许注册。 ++ 该阶段不允许注册。 + + ++ + The client %s already registered. +- 客户端 %s 已经注册。 ++ 客户端 %s 已经注册。 + + ++ + Failed to generate unique cookie. +- 生成cookie失败。 ++ 生成cookie失败。 + + ++ + The inhibitor is not found. +- 抑制器未发现。 ++ 抑制器未发现。 + + ++ + Internal error. +- 内部错误。 ++ 内部错误。 + + ++ + The status is invalid. +- 状态不合法。 ++ 状态不合法。 + + ++ + The action is not supported. +- 操作不支持。 ++ 操作不支持。 + + ++ + Unknown error. +- 未知错误。 ++ 未知错误。 + + ++ + (error code: 0x%x) +- (错误码: 0x%x) ++ (错误码: 0x%x) + + + + main + +- Output version information and exit. +- 输出版本信息并退出。 +- +- +- Specify a session type that contains required components. +- 指定一个会话类型,该会话类型包含需要加载的组件列表。 +- +- +- session type +- 会话类型 +- +- +- Specify a session that contains required components. +- 指定一个会话,该会话包含需要加载的组件列表。 +- +- +- ++ + Power action. +- 电源动作 ++ 电源动作. + + +- ++ + power action + 电源动作 + +-- +2.27.0 + diff --git a/1015-fix-build-Fix-compilation-errors-on-versions-lower-t.patch b/1015-fix-build-Fix-compilation-errors-on-versions-lower-t.patch new file mode 100644 index 0000000..ba0376b --- /dev/null +++ b/1015-fix-build-Fix-compilation-errors-on-versions-lower-t.patch @@ -0,0 +1,34 @@ +From 7575ca775dc110752499eff30c7a5075daeeec68 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Mon, 26 Aug 2024 15:22:52 +0800 +Subject: [PATCH 1015/1015] fix(build): Fix compilation errors on versions + lower than Qt5.14 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复在低于Qt5.14的版本下编译报错的问题 +--- + src/tool/quit/main.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/tool/quit/main.cpp b/src/tool/quit/main.cpp +index 2b04c96..c0d1410 100644 +--- a/src/tool/quit/main.cpp ++++ b/src/tool/quit/main.cpp +@@ -92,7 +92,12 @@ int main(int argc, char *argv[]) + } + else + { ++#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) ++ // QTextStream提供的endl方法于5.14后才加上Qt命名空间 + cerr << parser.helpText() << Qt::endl; ++#else ++ cerr << parser.helpText() << endl; ++#endif + delete sessionManagerProxy; + return 1; + } +-- +2.27.0 + diff --git a/1016-fix-xsession-errors-Session-management-pulled-up-chi.patch b/1016-fix-xsession-errors-Session-management-pulled-up-chi.patch new file mode 100644 index 0000000..95696f7 --- /dev/null +++ b/1016-fix-xsession-errors-Session-management-pulled-up-chi.patch @@ -0,0 +1,82 @@ +From e5fd51b827f63562daf2002f9d8b778a68e1b433 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Wed, 9 Oct 2024 16:18:01 +0800 +Subject: [PATCH 1016/1017] fix(xsession-errors): Session management pulled up + child process forwards standard errors to the master process +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 会话管理拉起的子进程转发标准错误到主进程,新增默认注释的logrotate配置达到指定大小截断清空xsession-errors避免太多磁盘 + +Closes #50844 +--- + cmake/ksm_variables.cmake | 1 + + data/CMakeLists.txt | 7 +++++++ + data/xsession-errors.logrotate | 12 ++++++++++++ + src/core/app/app.cpp | 1 + + 4 files changed, 21 insertions(+) + create mode 100644 data/xsession-errors.logrotate + +diff --git a/cmake/ksm_variables.cmake b/cmake/ksm_variables.cmake +index 8538245..78aa586 100644 +--- a/cmake/ksm_variables.cmake ++++ b/cmake/ksm_variables.cmake +@@ -4,6 +4,7 @@ set(KSM_INSTALL_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}) + set(KSM_INSTALL_INCLUDE ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${PROJECT_NAME}) + set(KSM_INSTALL_TRANSLATIONDIR ${KSM_INSTALL_DATADIR}/translations) + set(GETTEXT_PACKAGE ${PROJECT_NAME}) ++set(SYSCONFDIR "/etc" CACHE PATH "Installation directory for configurations") + + list(APPEND KSM_COMPILER_FLAGS -Wno-parentheses # Disable parentheses warning + ) +diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt +index 83aed59..4be4ba9 100644 +--- a/data/CMakeLists.txt ++++ b/data/CMakeLists.txt +@@ -43,3 +43,10 @@ install( + ${CMAKE_CURRENT_SOURCE_DIR}/sessions/kiran-greeter.session + ${CMAKE_CURRENT_SOURCE_DIR}/sessions/kiran-wayland.session + DESTINATION "${KSM_INSTALL_DATADIR}/sessions/") ++ ++# xsession-errors logrotate conf ++install( ++ FILES ${CMAKE_CURRENT_SOURCE_DIR}/xsession-errors.logrotate ++ DESTINATION "${SYSCONFDIR}/logrotate.d/" ++ RENAME "xsession-errors" ++) +\ No newline at end of file +diff --git a/data/xsession-errors.logrotate b/data/xsession-errors.logrotate +new file mode 100644 +index 0000000..b19b44f +--- /dev/null ++++ b/data/xsession-errors.logrotate +@@ -0,0 +1,12 @@ ++#/home/*/.xsession-errors ++#/home/*/.xsession-errors.old ++#/root/.xsession-errors ++#/root/.xsession-errors.old ++#{ ++# missingok ++# notifempty ++# dateext ++# rotate 0 ++# copytruncate ++# size 10M ++#} +\ No newline at end of file +diff --git a/src/core/app/app.cpp b/src/core/app/app.cpp +index 3804ab9..c85ca57 100644 +--- a/src/core/app/app.cpp ++++ b/src/core/app/app.cpp +@@ -48,6 +48,7 @@ App::App(const QString &filePath, QObject *parent = nullptr) : QObject(parent), + m_process(new QProcess(this)) + { + this->m_appInfo = QSharedPointer(new KDesktopFile(filePath)); ++ m_process->setProcessChannelMode(QProcess::ForwardedErrorChannel); + connect(this->m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(onFinished(int, QProcess::ExitStatus))); + this->loadAppInfo(); + } +-- +2.27.0 + diff --git a/1017-fix-QGSettings-Repair-the-situation-that-Key-cannot-.patch b/1017-fix-QGSettings-Repair-the-situation-that-Key-cannot-.patch new file mode 100644 index 0000000..e7ff4c8 --- /dev/null +++ b/1017-fix-QGSettings-Repair-the-situation-that-Key-cannot-.patch @@ -0,0 +1,41 @@ +From 29915d26eda5f5af336875aa0ac485cd2d0a219a Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Wed, 16 Oct 2024 11:14:36 +0800 +Subject: [PATCH 1017/1017] fix(QGSettings): Repair the situation that Key + cannot be matched when receiving QGSettings changed signals +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复适配QGSettings Changed信号,key经过转换变成驼峰形式,无法匹配成功的问题 + +Closes #51570 +--- + include/ksm-i.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/include/ksm-i.h b/include/ksm-i.h +index fb49a59..bf6f52a 100644 +--- a/include/ksm-i.h ++++ b/include/ksm-i.h +@@ -37,13 +37,13 @@ extern "C" + + #define KSM_SCHEMA_ID "com.kylinsec.kiran.session-manager" + // 计算机多久未操作视为空闲 +-#define KSM_SCHEMA_KEY_IDLE_DELAY "idle-delay" ++#define KSM_SCHEMA_KEY_IDLE_DELAY "idleDelay" + // 待机时是否锁定屏幕 +-#define KSM_SCHEMA_KEY_SCREEN_LOCKED_WHEN_SUSPEND "screen-locked-when-suspend" ++#define KSM_SCHEMA_KEY_SCREEN_LOCKED_WHEN_SUSPEND "screenLockedWhenSuspend" + // 休眠时是否锁定屏幕 +-#define KSM_SCHEMA_KEY_SCREEN_LOCKED_WHEN_HIBERNATE "screen-locked-when-hibernate" ++#define KSM_SCHEMA_KEY_SCREEN_LOCKED_WHEN_HIBERNATE "screenLockedWhenHibernate" + // 退出时是否显示退出窗口 +-#define KSM_SCHEMA_KEY_ALWAYS_SHOW_EXIT_WINDOW "always-show-exit-window" ++#define KSM_SCHEMA_KEY_ALWAYS_SHOW_EXIT_WINDOW "alwaysShowExitWindow" + + // JK: json key + #define KSM_INHIBITOR_JK_COOKIE "cookie" +-- +2.27.0 + diff --git a/kiran-session-manager.spec b/kiran-session-manager.spec index f5626b3..2bb89c2 100644 --- a/kiran-session-manager.spec +++ b/kiran-session-manager.spec @@ -1,6 +1,6 @@ Name: kiran-session-manager Version: 2.5.0 -Release: 12 +Release: 14%{?dist} Summary: Session manager for KIRAN desktop environment License: MulanPSL-2.0 @@ -10,10 +10,20 @@ Patch1000: 0001-feature-lockscreen-Add-LockScreenWhenHibernate-and-L.patch Patch1001: 0001-feature-session-Add-always-show-exit-window-flag.patch Patch1002: 0001-Add-Type-Application-in-kiran-session-idlemonitor.de.patch Patch1003: 0001-fix-boot-Fix-fork-other-session-program-failed-by-ad.patch -Patch1004: 0001-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch -Patch1005: 0001-fix-xsmp-Ignore-the-cancel-shutdown-request.patch -Patch1006: 0001-feature-blacklist_autostart_apps-Add-mate-volume-con.patch -Patch1007: 0001-fix-blacklist-autostart-add-polkit-mate-authenticati.patch +Patch1004: 1004-Fix-kiran-session-manager-fix-compile-failed-in-KY3..patch +Patch1005: 1005-fix-kiran-session-manager-fixes-link-Qt5DBus-error.patch +Patch1006: 1006-fix-xsmp-Ignore-the-cancel-shutdown-request.patch +Patch1007: 1007-feature-blacklist_autostart_apps-Add-mate-volume-con.patch +Patch1008: 1008-fixed-session-manager.cpp-repair-defects-about-theme.patch +Patch1009: 1009-fix-session-manager-Allow-update-env-while-server-is.patch +Patch1010: 1010-fix-inhibitor-fix-the-problem-that-inhibitor-window-.patch +Patch1011: 1011-fix-systemd-login1-extend-the-dbus-call-timeout-to-1.patch +Patch1012: 1012-fix-blacklist-autostart-add-polkit-mate-authenticati.patch +Patch1013: 1013-fix-Change-QCoreApplication-to-QGui-QApplication.patch +Patch1014: 1014-feature-kiran-session-quit-Add-kiran-session-quit-to.patch +Patch1015: 1015-fix-build-Fix-compilation-errors-on-versions-lower-t.patch +Patch1016: 1016-fix-xsession-errors-Session-management-pulled-up-chi.patch +Patch1017: 1017-fix-QGSettings-Repair-the-situation-that-Key-cannot-.patch BuildRequires: cmake >= 3.2 BuildRequires: pkgconfig(gio-unix-2.0) @@ -55,7 +65,6 @@ Session manager for KIRAN desktop environment %cmake make %{?_smp_mflags} - %install %make_install @@ -65,6 +74,7 @@ if [ "%{ks_custom_name}" = "GC" ] && [ -f "%{_datadir}/kiran-session-manager/bla fi %files +%config(noreplace) %{_sysconfdir}/logrotate.d/xsession-errors %{_datadir}/glib-2.0/schemas/com.kylinsec.kiran.session-manager.gschema.xml %{_datadir}/lightdm/lightdm.conf.d/90-lightdm-kiran-greeter.conf %{_datadir}/xsessions/kiran.desktop @@ -75,30 +85,27 @@ fi %{_datadir}/kiran-session-manager/blacklist_autostart_apps.txt %dir %{_datadir}/kiran-session-manager/sessions %{_datadir}/kiran-session-manager/sessions/* -%{_datadir}/kiran-session-manager/translations/kiran-session-manager.zh_CN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-manager.bo_CN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-manager.kk_KG.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-manager.kk_KZ.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-manager.mn_MN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-manager.ug_CN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-window.zh_CN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-window.bo_CN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-window.kk_KG.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-window.kk_KZ.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-window.mn_MN.qm -%{_datadir}/kiran-session-manager/translations/kiran-session-window.ug_CN.qm +%{_datadir}/kiran-session-manager/translations/* %{_bindir}/kiran-session-manager %{_bindir}/kiran-session-idlemonitor %{_bindir}/kiran-session-window %{_bindir}/kiran-session-kwayland %{_bindir}/kiran-session-wayland - - - +%{_bindir}/kiran-session-quit %changelog +* Thu Apr 03 2025 liuxinhao - 2.5.0-14 +- KYOS-B: Session management pulled up child process forwards standard errors to the master process(#50844) +- KYOS-B: Repair the situation that Key cannot be matched when receiving QGSettings changed signals(#51570) +- KYOS-F: Add kiran-session-quit to support shutdown shortcut (#44337) +- KYOS-B: fix build error +- KYOS-B: extend the dbus call timeout to 10s to fix the restart failure caused by the CanReboot call timeout +- KYOS-B: fix the problem that inhibitor window is show when the number of inhibitor is zero.(#24564) +- KYOS-B: repair defects about theme not right when into livecd mode (#8146) +- KYOS-B: change QCoreApplication to QGui/QApplication to fix the issue of SM not auto exit when XDMCP connection is disconnected.(#31631,#31796) + * Sat Jan 20 2024 liuxinhao - 2.5.0-12 -- KYOS-B: add polkit-mate-authentication-agent-1 to blacklist +- KYOS-B: add polkit-mate-authentication-agent-1 to blacklist * Sun Oct 08 2023 luoqing - 2.5.0-11 - KYOS-F: Add mate-volume-control-status-icon.desktop to the autostart blacklist -- Gitee