From e4da0792261c7069f674e1d0982459366900b981 Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Sun, 8 Dec 2024 11:09:36 +0800 Subject: [PATCH] Synchronize patches, adjust spec file format alignment --- ...perform-adaptive-settings-when-conne.patch | 139 +++++++++++++++++ ...ix-the-graphical-and-network-hardwar.patch | 44 ++++++ ...emove-the-duplicate-graphical-and-ne.patch | 34 +++++ ...ction-The-shutdown-shortcut-cannot-b.patch | 80 ++++++++++ ...-media-keys-action-fix-compile-error.patch | 42 ++++++ ...e-media-keys-add-shutdown-keybinding.patch | 29 ++++ ...ronize-requests-to-XServer-after-UnG.patch | 32 ++++ ...ardware-Fix-failure-to-get-disk-info.patch | 119 +++++++++++++++ ...-the-ntp-service-load-order-logic-er.patch | 106 +++++++++++++ ...ix-std-regex-can-not-run-in-gcc-vers.patch | 121 +++++++++++++++ ...fo-hardware-use-glibmm-s-regex-to-re.patch | 94 ++++++++++++ ...Fix-the-issue-where-switching-betwee.patch | 122 +++++++++++++++ ...ash-caused-by-the-previous-commit-du.patch | 36 +++++ ...-enriching-pw_history-error-reporing.patch | 78 ++++++++++ kiran-cc-daemon.spec | 141 +++++++++++------- 15 files changed, 1162 insertions(+), 55 deletions(-) create mode 100644 0017-feature-display-perform-adaptive-settings-when-conne.patch create mode 100644 0018-fix-systeminfo-fix-the-graphical-and-network-hardwar.patch create mode 100644 0019-fix-systeminfo-Remove-the-duplicate-graphical-and-ne.patch create mode 100644 0020-fix-media-keys-action-The-shutdown-shortcut-cannot-b.patch create mode 100644 0021-fix-media-keys-action-fix-compile-error.patch create mode 100644 0022-feature-media-keys-add-shutdown-keybinding.patch create mode 100644 0023-fix-Ungrab-Synchronize-requests-to-XServer-after-UnG.patch create mode 100644 0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch create mode 100644 0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch create mode 100644 0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch create mode 100644 0027-feature-systeminfo-hardware-use-glibmm-s-regex-to-re.patch create mode 100644 0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch create mode 100644 0029-fix-gnome-Fix-crash-caused-by-the-previous-commit-du.patch create mode 100644 0030-fix-passwd-enriching-pw_history-error-reporing.patch diff --git a/0017-feature-display-perform-adaptive-settings-when-conne.patch b/0017-feature-display-perform-adaptive-settings-when-conne.patch new file mode 100644 index 0000000..d4fd101 --- /dev/null +++ b/0017-feature-display-perform-adaptive-settings-when-conne.patch @@ -0,0 +1,139 @@ +From d8e6d419f0b4f4965b32e7c62281f257e0595c4b Mon Sep 17 00:00:00 2001 +From: tangjie02 +Date: Mon, 13 May 2024 12:58:46 +0800 +Subject: [PATCH] feature(display): perform adaptive settings when connection + status or monitor uid is changed. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 如果显示器uid和显示接口连接状态有一个发生变化,则重新进行自适应设置。 + +Relates #37289 + +Signed-off-by: tangjie02 +--- + plugins/display/display-manager.cpp | 44 +++++++++++++++++++++-------- + plugins/display/display-manager.h | 18 ++++++------ + 2 files changed, 42 insertions(+), 20 deletions(-) + +diff --git a/plugins/display/display-manager.cpp b/plugins/display/display-manager.cpp +index 8cf4099..858f944 100644 +--- a/plugins/display/display-manager.cpp ++++ b/plugins/display/display-manager.cpp +@@ -1,14 +1,14 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-cc-daemon 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 + */ + +@@ -749,8 +749,7 @@ ModeInfoVec DisplayManager::monitors_common_modes(const DisplayMonitorVec &monit + auto iter = std::remove_if(result.begin(), result.end(), [monitor](std::shared_ptr mode) -> bool + { + auto modes = monitor->get_modes_by_size(mode->width, mode->height); +- return (modes.size() == 0); +- }); ++ return (modes.size() == 0); }); + + result.erase(iter, result.end()); + } +@@ -863,6 +862,17 @@ std::string DisplayManager::get_monitors_uid() + return StrUtils::join(result, MONITOR_JOIN_CHAR); + } + ++std::string DisplayManager::get_output_names() ++{ ++ std::vector result; ++ for (const auto &iter : this->monitors_) ++ { ++ result.push_back(iter.second->name_get()); ++ } ++ std::sort(result.begin(), result.end(), std::less()); ++ return StrUtils::join(result, MONITOR_JOIN_CHAR); ++} ++ + std::string DisplayManager::get_c_monitors_uid(const ScreenConfigInfo::MonitorSequence &monitors) + { + std::vector result; +@@ -907,13 +917,23 @@ bool DisplayManager::save_to_file(CCErrorCode &error_code) + void DisplayManager::resources_changed() + { + auto old_monitors_uid = this->get_monitors_uid(); ++ auto old_output_names = this->get_output_names(); + this->load_monitors(); + auto new_monitors_uid = this->get_monitors_uid(); ++ auto new_output_names = this->get_output_names(); + + auto screen_changed_adaptation = this->display_settings_->get_boolean(SCREEN_CHANGED_ADAPT); + +- // 如果uid不相同,说明设备硬件发生了变化,此时需要重新进行设置 +- if (screen_changed_adaptation && old_monitors_uid != new_monitors_uid) ++ KLOG_INFO("check display resource changed, the old monitor uid and output names is %s/%s, " ++ "the new monitor uid and names is %s/%s", ++ old_monitors_uid.c_str(), ++ old_output_names.c_str(), ++ new_monitors_uid.c_str(), ++ new_output_names.c_str()); ++ ++ /* 如果uid不相同且连接的接口不一样,说明设备硬件发生了变化,此时需要重新进行设置。这里不能只判断uid是否变化,因为有可能出现 */ ++ if (screen_changed_adaptation && ++ (old_monitors_uid != new_monitors_uid || old_output_names != new_output_names)) + { + CCErrorCode error_code = CCErrorCode::SUCCESS; + if (!this->switch_style_and_save(this->default_style_, error_code)) +diff --git a/plugins/display/display-manager.h b/plugins/display/display-manager.h +index 6348568..e6f84da 100644 +--- a/plugins/display/display-manager.h ++++ b/plugins/display/display-manager.h +@@ -1,14 +1,14 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-cc-daemon 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 + */ + +@@ -113,6 +113,8 @@ private: + + // 将uid进行排序后拼接 + std::string get_monitors_uid(); ++ // 将output name进行排序后拼接 ++ std::string get_output_names(); + std::string get_c_monitors_uid(const ScreenConfigInfo::MonitorSequence& monitors); + + // 保存配置到文件 +-- +2.27.0 + diff --git a/0018-fix-systeminfo-fix-the-graphical-and-network-hardwar.patch b/0018-fix-systeminfo-fix-the-graphical-and-network-hardwar.patch new file mode 100644 index 0000000..109e487 --- /dev/null +++ b/0018-fix-systeminfo-fix-the-graphical-and-network-hardwar.patch @@ -0,0 +1,44 @@ +From 5f64a588c8518aada0c2c8fb73f6ee753eef8f98 Mon Sep 17 00:00:00 2001 +From: tangjie02 +Date: Thu, 4 Jul 2024 13:31:05 +0800 +Subject: [PATCH 18/22] fix(systeminfo): fix the graphical and network hardware + info no display problem +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复由于placehold1数组大小太小导致读取显卡和网络信息错误问题 + +Signed-off-by: tangjie02 +--- + plugins/systeminfo/systeminfo-hardware.cpp | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/plugins/systeminfo/systeminfo-hardware.cpp b/plugins/systeminfo/systeminfo-hardware.cpp +index 917afe1..73960f7 100644 +--- a/plugins/systeminfo/systeminfo-hardware.cpp ++++ b/plugins/systeminfo/systeminfo-hardware.cpp +@@ -26,7 +26,7 @@ namespace Kiran + #define CPUINFO_FILE "/proc/cpuinfo" + #define CPUINFO_KEY_DELIMITER ':' + #define CPUINFO_KEY_MODEL "model name" +-//龙芯cpuinfo中为大写 ++// 龙芯cpuinfo中为大写 + #define CPUINFO_KEY_MODEL_LS "Model Name" + #define CPUINFO_KEY_PROCESSOR "processor" + +@@ -340,9 +340,9 @@ KVList SystemInfoHardware::get_pcis_by_major_class_id(PCIMajorClassID major_clas + auto lines = StrUtils::split_lines(cmd_output); + for (auto& line : lines) + { +- char placehold1[10]; ++ char placehold1[50]; + unsigned int full_class_id; +- if (sscanf(line.c_str(), "%9s %x:", placehold1, &full_class_id) == 2) ++ if (sscanf(line.c_str(), "%49s %x:", placehold1, &full_class_id) == 2) + { + if ((full_class_id >> 8) == major_class_id) + { +-- +2.27.0 + diff --git a/0019-fix-systeminfo-Remove-the-duplicate-graphical-and-ne.patch b/0019-fix-systeminfo-Remove-the-duplicate-graphical-and-ne.patch new file mode 100644 index 0000000..cd0e7ad --- /dev/null +++ b/0019-fix-systeminfo-Remove-the-duplicate-graphical-and-ne.patch @@ -0,0 +1,34 @@ +From df915cbcc72f0ac8c220e40a62eb6da050057c3e Mon Sep 17 00:00:00 2001 +From: tangjie02 +Date: Thu, 4 Jul 2024 19:39:36 +0800 +Subject: [PATCH 19/22] fix(systeminfo): Remove the duplicate graphical and + network hardware info. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 移除重复的显卡和网络设备 + +Signed-off-by: tangjie02 +--- + plugins/systeminfo/systeminfo-hardware.cpp | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/plugins/systeminfo/systeminfo-hardware.cpp b/plugins/systeminfo/systeminfo-hardware.cpp +index 73960f7..8ccb0e4 100644 +--- a/plugins/systeminfo/systeminfo-hardware.cpp ++++ b/plugins/systeminfo/systeminfo-hardware.cpp +@@ -355,6 +355,10 @@ KVList SystemInfoHardware::get_pcis_by_major_class_id(PCIMajorClassID major_clas + // 如果为空则不执行下面的命令,否则会取到所有的PCI设备(没有了-d选项的限制) + RETURN_VAL_IF_TRUE(full_class_ids.size() == 0, KVList()); + ++ // 对full_class_ids去重 ++ std::sort(full_class_ids.begin(), full_class_ids.end()); ++ full_class_ids.erase(std::unique(full_class_ids.begin(), full_class_ids.end()), full_class_ids.end()); ++ + // 根据full_class_id列表获取设备相关信息 + std::string full_outputs; + for (auto& full_class_id : full_class_ids) +-- +2.27.0 + diff --git a/0020-fix-media-keys-action-The-shutdown-shortcut-cannot-b.patch b/0020-fix-media-keys-action-The-shutdown-shortcut-cannot-b.patch new file mode 100644 index 0000000..8d192e1 --- /dev/null +++ b/0020-fix-media-keys-action-The-shutdown-shortcut-cannot-b.patch @@ -0,0 +1,80 @@ +From 4156ea6bbf3252fd111f6a2f5a0e87ac97171c93 Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Tue, 23 Jul 2024 17:20:17 +0800 +Subject: [PATCH 20/22] fix(media-keys-action):The shutdown shortcut cannot be + found +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复关机快捷键找不到 + +Related #44337 +--- + .../media-keys/media-keys-action.cpp | 25 ++++++++----------- + 1 file changed, 11 insertions(+), 14 deletions(-) + +diff --git a/plugins/keybinding/media-keys/media-keys-action.cpp b/plugins/keybinding/media-keys/media-keys-action.cpp +index 31552d5..864f8dc 100644 +--- a/plugins/keybinding/media-keys/media-keys-action.cpp ++++ b/plugins/keybinding/media-keys/media-keys-action.cpp +@@ -1,14 +1,14 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-cc-daemon 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: meizhigang + */ + #include "plugins/keybinding/media-keys/media-keys-action.h" +@@ -68,8 +68,7 @@ void MediaKeysAction::init_touchpad() + if (device_helper->is_touchpad()) + { + this->has_touchpad_ = true; +- } +- }); ++ } }); + } + + bool MediaKeysAction::do_action(XEvent *xev, std::string name) +@@ -208,10 +207,9 @@ void MediaKeysAction::do_touchpad_osd(bool state) + + void MediaKeysAction::do_shutdown() + { +- std::string cmdline = std::string("mate-session-save --shutdown-dialog"); +- + try + { ++ std::string cmdline = "kiran-session-quit --power-off"; + Glib::spawn_command_line_async(cmdline); + } + catch (const Glib::Error &e) +@@ -222,10 +220,9 @@ void MediaKeysAction::do_shutdown() + + void MediaKeysAction::do_logout() + { +- std::string cmdline = std::string("mate-session-save --logout-dialog"); +- + try + { ++ std::string cmdline = "kiran-session-quit --logout"; + Glib::spawn_command_line_async(cmdline); + } + catch (const Glib::Error &e) +-- +2.27.0 + diff --git a/0021-fix-media-keys-action-fix-compile-error.patch b/0021-fix-media-keys-action-fix-compile-error.patch new file mode 100644 index 0000000..3c95f50 --- /dev/null +++ b/0021-fix-media-keys-action-fix-compile-error.patch @@ -0,0 +1,42 @@ +From fb62714c4f58c5705baeffd0a668ca656384391f Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Wed, 24 Jul 2024 19:47:09 +0800 +Subject: [PATCH 21/22] fix(media-keys-action):fix compile error +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复编译错误 +--- + plugins/keybinding/media-keys/media-keys-action.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/plugins/keybinding/media-keys/media-keys-action.cpp b/plugins/keybinding/media-keys/media-keys-action.cpp +index 864f8dc..27ef53a 100644 +--- a/plugins/keybinding/media-keys/media-keys-action.cpp ++++ b/plugins/keybinding/media-keys/media-keys-action.cpp +@@ -207,9 +207,9 @@ void MediaKeysAction::do_touchpad_osd(bool state) + + void MediaKeysAction::do_shutdown() + { ++ std::string cmdline = "kiran-session-quit --power-off"; + try + { +- std::string cmdline = "kiran-session-quit --power-off"; + Glib::spawn_command_line_async(cmdline); + } + catch (const Glib::Error &e) +@@ -220,9 +220,9 @@ void MediaKeysAction::do_shutdown() + + void MediaKeysAction::do_logout() + { ++ std::string cmdline = "kiran-session-quit --logout"; + try + { +- std::string cmdline = "kiran-session-quit --logout"; + Glib::spawn_command_line_async(cmdline); + } + catch (const Glib::Error &e) +-- +2.27.0 + diff --git a/0022-feature-media-keys-add-shutdown-keybinding.patch b/0022-feature-media-keys-add-shutdown-keybinding.patch new file mode 100644 index 0000000..6f9e48b --- /dev/null +++ b/0022-feature-media-keys-add-shutdown-keybinding.patch @@ -0,0 +1,29 @@ +From 2c7c73ef7bb363c4c0966daf5e48664f6b708c62 Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Wed, 24 Jul 2024 19:59:51 +0800 +Subject: [PATCH 22/22] feature(media-keys): add shutdown keybinding +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 增加关机快捷键 +--- + data/schemas/com.kylinsec.kiran.media-keys.gschema.xml.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/schemas/com.kylinsec.kiran.media-keys.gschema.xml.in b/data/schemas/com.kylinsec.kiran.media-keys.gschema.xml.in +index 7bfb629..7ec3296 100644 +--- a/data/schemas/com.kylinsec.kiran.media-keys.gschema.xml.in ++++ b/data/schemas/com.kylinsec.kiran.media-keys.gschema.xml.in +@@ -57,7 +57,7 @@ + Binding to mute/unmute the microphone. + + +- '' ++ '<Control><Alt>Delete' + Shut down + Binding to shut down. + +-- +2.27.0 + diff --git a/0023-fix-Ungrab-Synchronize-requests-to-XServer-after-UnG.patch b/0023-fix-Ungrab-Synchronize-requests-to-XServer-after-UnG.patch new file mode 100644 index 0000000..1e5a7d7 --- /dev/null +++ b/0023-fix-Ungrab-Synchronize-requests-to-XServer-after-UnG.patch @@ -0,0 +1,32 @@ +From 2af5d982e63e6e7e4b1f7c4729dbd85930c004f1 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Fri, 9 Aug 2024 10:20:03 +0800 +Subject: [PATCH] fix(Ungrab): Synchronize requests to XServer after + UnGrabServer +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- UnGrabServer后需立即同步请求至XServer,避免后续请求堆积在队列之中,导致其他XClient无法连接至XServer +--- + plugins/appearance/background/appearance-background.cpp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/plugins/appearance/background/appearance-background.cpp b/plugins/appearance/background/appearance-background.cpp +index fca2231..8b01845 100644 +--- a/plugins/appearance/background/appearance-background.cpp ++++ b/plugins/appearance/background/appearance-background.cpp +@@ -373,7 +373,10 @@ bool AppearanceBackground::set_surface_as_root(Glib::RefPtr screen, + XClearWindow(xdisplay, xroot); + + XFlush(xdisplay); ++ + XUngrabServer(xdisplay); ++ //立即同步UnGrab请求支XServer ++ XFlush(xdisplay); + + return true; + } +-- +2.27.0 + diff --git a/0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch b/0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch new file mode 100644 index 0000000..3d444bd --- /dev/null +++ b/0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch @@ -0,0 +1,119 @@ +From 5c6cbc5e72570a5772b6ed4568cd2c303c02c9d9 Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Tue, 20 Aug 2024 08:49:07 +0800 +Subject: [PATCH] fix(systeminfo-hardware):Fix failure to get disk information + in virtual machine +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复虚拟机中获取磁盘信息失败 + +Related #46645 +--- + plugins/systeminfo/systeminfo-hardware.cpp | 67 +++++++++++++++------- + 1 file changed, 45 insertions(+), 22 deletions(-) + +diff --git a/plugins/systeminfo/systeminfo-hardware.cpp b/plugins/systeminfo/systeminfo-hardware.cpp +index 8ccb0e4..706a10d 100644 +--- a/plugins/systeminfo/systeminfo-hardware.cpp ++++ b/plugins/systeminfo/systeminfo-hardware.cpp +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + + namespace Kiran + { +@@ -233,13 +234,13 @@ std::map SystemInfoHardware::parse_info_file(const std + + DiskInfoVec SystemInfoHardware::get_disks_info() + { +- // 老版本lsblk不支持-J选项,所以这里不使用json格式 ++ // 老版本lsblk不支持-J选项,所以这里不使用json格式 + DiskInfoVec disks_info; ++ std::vector argv{DISKINFO_CMD, "-d", "-b", "-P", "-o", "NAME,TYPE,SIZE,MODEL,VENDOR"}; + + std::string cmd_output; + try + { +- std::vector argv{DISKINFO_CMD, "-d", "-b", "-P", "-o", "NAME,TYPE,SIZE,MODEL,VENDOR"}; + Glib::spawn_sync("", + argv, + Glib::SPAWN_DEFAULT, +@@ -256,29 +257,51 @@ DiskInfoVec SystemInfoHardware::get_disks_info() + + for (auto& line : lines) + { +- char name[BUFSIZ] = {0}; +- char type[BUFSIZ] = {0}; +- int64_t size = 0; +- char model[BUFSIZ] = {0}; +- char vendor[BUFSIZ] = {0}; +- +- std::string formatstr = "NAME=\"%" + std::to_string(BUFSIZ - 1) + "[^\"]\" TYPE=\"%" + std::to_string(BUFSIZ - 1) + "[^\"]\" SIZE=\"%" + PRId64 + +- "\" MODEL=\"%" + std::to_string(BUFSIZ - 1) + "[^\"]\" VENDOR=\"%" + std::to_string(BUFSIZ - 1) + "[^\"]\""; +- +- // model和vendor只要有一个不为空则认为合法,所以只要能读到4个变量即可 +- //"NAME=\"%[^\"]\" TYPE=\"%[^\"]\" SIZE=\"%" PRId64 "\" MODEL=\"%[^\"]\" VENDOR=\"%[^\"]\"" +- if (sscanf(line.c_str(), formatstr.c_str(), +- name, type, &size, model, vendor) >= 4) ++ std::regex pattern(R"(NAME=\"([^\"]*)\" TYPE=\"([^\"]*)\" SIZE=\"(\d+)\" MODEL=\"([^\"]*)\" VENDOR=\"([^\"]*)\")"); ++ std::smatch matches; ++ if (std::regex_search(line, matches, pattern)) + { +- if (std::string(type) == "disk") ++ if (matches[2].str() != "disk") + { +- DiskInfo disk_info; +- disk_info.name = name; +- disk_info.size = size; +- disk_info.model = StrUtils::trim(model); +- disk_info.vendor = StrUtils::trim(vendor); +- disks_info.push_back(disk_info); ++ continue; ++ } ++ ++ int matched_count = 0; ++ for (size_t i = 1; i < matches.size(); ++i) ++ { ++ if (matches[i].str().size() > 0) ++ { ++ matched_count++; ++ } ++ } ++ // model和vendor只要有一个不为空则认为合法,所以只要能读到4个变量即可 ++ if (matched_count < 4) ++ { ++ continue; ++ } ++ DiskInfo disk_info; ++ if (matches[1].str().size() > 0) ++ { ++ disk_info.name = matches[1].str(); ++ } ++ if (matches[3].str().size() > 0) ++ { ++ disk_info.size = std::stoll(matches[3].str()); ++ } ++ if (matches[4].str().size() > 0) ++ { ++ disk_info.model = matches[4].str(); + } ++ else ++ { ++ disk_info.model = disk_info.name; ++ } ++ if (matches[5].str().size() > 0) ++ { ++ disk_info.vendor = matches[5].str(); ++ } ++ ++ disks_info.push_back(disk_info); + } + } + +-- +2.27.0 + diff --git a/0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch b/0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch new file mode 100644 index 0000000..1a0a85c --- /dev/null +++ b/0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch @@ -0,0 +1,106 @@ +From 2952b5d65d8920ab3ee41433399915b0b20b51a2 Mon Sep 17 00:00:00 2001 +From: tangjie02 +Date: Thu, 29 Aug 2024 09:58:19 +0800 +Subject: [PATCH 25/27] fix(timedate): Fix the ntp service load order logic + error. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复ntp服务加载顺序逻辑错误问题,之前的代码加载顺序是随机的 +- 去重逻辑有问题,std::unique只会对相邻的元素进行去重 + +Signed-off-by: tangjie02 +--- + plugins/timedate/timedate-manager.cpp | 42 ++++++++++++++++++--------- + 1 file changed, 28 insertions(+), 14 deletions(-) + +diff --git a/plugins/timedate/timedate-manager.cpp b/plugins/timedate/timedate-manager.cpp +index fdd9acc..1a28877 100644 +--- a/plugins/timedate/timedate-manager.cpp ++++ b/plugins/timedate/timedate-manager.cpp +@@ -1,14 +1,14 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-cc-daemon 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 + */ + +@@ -387,7 +387,7 @@ void TimedateManager::init_ntp_units() + this->ntp_unit_name_.clear(); + for (auto &ntp_unit : ntp_units) + { +- if (ntp_unit == ntp_units.back()) ++ if (ntp_unit == ntp_units.front()) + { + this->ntp_unit_name_ = ntp_unit; + continue; +@@ -426,11 +426,21 @@ std::vector TimedateManager::get_ntp_units() + { + auto &unit_dir = *iter; + Glib::Dir dir(unit_dir); ++ std::vector paths; + + for (auto dir_iter = dir.begin(); dir_iter != dir.end(); ++dir_iter) + { + auto entry = *dir_iter; + auto path = fmt::format("{0}/{1}", unit_dir, entry); ++ paths.push_back(path); ++ } ++ ++ // 排序确定加载优先级,字母序越大的优先使用 ++ std::sort(paths.begin(), paths.end(), std::greater()); ++ ++ for (auto iter = paths.begin(); iter != paths.end(); ++iter) ++ { ++ auto path = *iter; + std::string contents; + + try +@@ -460,8 +470,15 @@ std::vector TimedateManager::get_ntp_units() + continue; + } + +- KLOG_DEBUG_TIMEDATE("Insert ntp unit: %s %s.", line.c_str(), entry.c_str()); +- ntp_units.push_back(line); ++ if (std::find(ntp_units.begin(), ntp_units.end(), line) == ntp_units.end()) ++ { ++ KLOG_DEBUG_TIMEDATE("Insert ntp unit: %s %s.", line.c_str(), path.c_str()); ++ ntp_units.push_back(line); ++ } ++ else ++ { ++ KLOG_DEBUG_TIMEDATE("Ignore duplication ntp unit: %s %s.", line.c_str(), path.c_str()); ++ } + } + } + } +@@ -471,9 +488,6 @@ std::vector TimedateManager::get_ntp_units() + } + } + +- // Remove duplicates. +- auto iter = std::unique(ntp_units.begin(), ntp_units.end()); +- ntp_units.erase(iter, ntp_units.end()); + return ntp_units; + } + +-- +2.27.0 + diff --git a/0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch b/0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch new file mode 100644 index 0000000..f0d764c --- /dev/null +++ b/0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch @@ -0,0 +1,121 @@ +From 762c2907fb52dfdebec779c33883a6589d458c0d Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Thu, 5 Sep 2024 14:13:56 +0800 +Subject: [PATCH 26/27] fix(systeminfo): fix std::regex can not run in gcc + version < 4.9 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复gcc4.9以下不支持std::regex问题 + +Related #48386 +--- + plugins/systeminfo/systeminfo-hardware.cpp | 69 +++++++++------------- + 1 file changed, 28 insertions(+), 41 deletions(-) + +diff --git a/plugins/systeminfo/systeminfo-hardware.cpp b/plugins/systeminfo/systeminfo-hardware.cpp +index 706a10d..e494e52 100644 +--- a/plugins/systeminfo/systeminfo-hardware.cpp ++++ b/plugins/systeminfo/systeminfo-hardware.cpp +@@ -15,11 +15,11 @@ + #include "plugins/systeminfo/systeminfo-hardware.h" + + #include ++#include + #include + #include + #include + #include +-#include + + namespace Kiran + { +@@ -254,57 +254,44 @@ DiskInfoVec SystemInfoHardware::get_disks_info() + } + + auto lines = StrUtils::split_lines(cmd_output); ++ GRegex* pattern = g_regex_new(R"(NAME=\"([^\"]*)\" TYPE=\"([^\"]*)\" SIZE=\"(\d+)\" MODEL=\"([^\"]*)\" VENDOR=\"([^\"]*)\")", G_REGEX_MULTILINE, (GRegexMatchFlags)0, NULL); + + for (auto& line : lines) + { +- std::regex pattern(R"(NAME=\"([^\"]*)\" TYPE=\"([^\"]*)\" SIZE=\"(\d+)\" MODEL=\"([^\"]*)\" VENDOR=\"([^\"]*)\")"); +- std::smatch matches; +- if (std::regex_search(line, matches, pattern)) ++ GMatchInfo* match_info; ++ if (g_regex_match(pattern, line.c_str(), (GRegexMatchFlags)0, &match_info)) + { +- if (matches[2].str() != "disk") ++ const gchar* name = g_match_info_fetch(match_info, 1); ++ const gchar* type = g_match_info_fetch(match_info, 2); ++ const gchar* size = g_match_info_fetch(match_info, 3); ++ const gchar* model = g_match_info_fetch(match_info, 4); ++ const gchar* vendor = g_match_info_fetch(match_info, 5); ++ ++ if (strcmp(type, "disk") == 0 && ++ (name && strlen(name) > 0) && ++ (size && strlen(size) > 0) && ++ ((model && strlen(model) > 0) || (vendor && strlen(vendor) > 0))) + { +- continue; ++ DiskInfo disk_info; ++ disk_info.name = name; ++ disk_info.size = atoll(size); ++ disk_info.model = (strlen(model) ? model : name); ++ disk_info.vendor = (strlen(vendor) ? vendor : name); ++ disks_info.push_back(disk_info); + } + +- int matched_count = 0; +- for (size_t i = 1; i < matches.size(); ++i) +- { +- if (matches[i].str().size() > 0) +- { +- matched_count++; +- } +- } +- // model和vendor只要有一个不为空则认为合法,所以只要能读到4个变量即可 +- if (matched_count < 4) +- { +- continue; +- } +- DiskInfo disk_info; +- if (matches[1].str().size() > 0) +- { +- disk_info.name = matches[1].str(); +- } +- if (matches[3].str().size() > 0) +- { +- disk_info.size = std::stoll(matches[3].str()); +- } +- if (matches[4].str().size() > 0) +- { +- disk_info.model = matches[4].str(); +- } +- else +- { +- disk_info.model = disk_info.name; +- } +- if (matches[5].str().size() > 0) +- { +- disk_info.vendor = matches[5].str(); +- } ++ if (name) g_free((gchar*)name); ++ if (type) g_free((gchar*)type); ++ if (size) g_free((gchar*)size); ++ if (model) g_free((gchar*)model); ++ if (vendor) g_free((gchar*)vendor); + +- disks_info.push_back(disk_info); ++ g_match_info_free(match_info); + } + } + ++ g_regex_unref(pattern); ++ + return disks_info; + } + +-- +2.27.0 + diff --git a/0027-feature-systeminfo-hardware-use-glibmm-s-regex-to-re.patch b/0027-feature-systeminfo-hardware-use-glibmm-s-regex-to-re.patch new file mode 100644 index 0000000..5f98d83 --- /dev/null +++ b/0027-feature-systeminfo-hardware-use-glibmm-s-regex-to-re.patch @@ -0,0 +1,94 @@ +From 66efa416ca17d10589df7eb6aab8a09a1ec3739e Mon Sep 17 00:00:00 2001 +From: yangfeng +Date: Mon, 9 Sep 2024 11:23:53 +0800 +Subject: [PATCH 27/27] feature(systeminfo-hardware):use glibmm's regex to + replace glib's regex +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 使用glibmm正则 +--- + plugins/systeminfo/systeminfo-hardware.cpp | 49 +++++++++------------- + 1 file changed, 19 insertions(+), 30 deletions(-) + +diff --git a/plugins/systeminfo/systeminfo-hardware.cpp b/plugins/systeminfo/systeminfo-hardware.cpp +index e494e52..a47a8ea 100644 +--- a/plugins/systeminfo/systeminfo-hardware.cpp ++++ b/plugins/systeminfo/systeminfo-hardware.cpp +@@ -15,7 +15,7 @@ + #include "plugins/systeminfo/systeminfo-hardware.h" + + #include +-#include ++#include + #include + #include + #include +@@ -253,45 +253,34 @@ DiskInfoVec SystemInfoHardware::get_disks_info() + return disks_info; + } + +- auto lines = StrUtils::split_lines(cmd_output); +- GRegex* pattern = g_regex_new(R"(NAME=\"([^\"]*)\" TYPE=\"([^\"]*)\" SIZE=\"(\d+)\" MODEL=\"([^\"]*)\" VENDOR=\"([^\"]*)\")", G_REGEX_MULTILINE, (GRegexMatchFlags)0, NULL); +- +- for (auto& line : lines) ++ auto lines = Glib::Regex::split_simple("\n", cmd_output); ++ Glib::RefPtr regex = Glib::Regex::create(R"(NAME=\"([^\"]*)\" TYPE=\"([^\"]*)\" SIZE=\"(\d+)\" MODEL=\"([^\"]*)\" VENDOR=\"([^\"]*)\")"); ++ for (const auto& line : lines) + { +- GMatchInfo* match_info; +- if (g_regex_match(pattern, line.c_str(), (GRegexMatchFlags)0, &match_info)) ++ Glib::MatchInfo match_info; ++ if (regex->match(line, match_info)) + { +- const gchar* name = g_match_info_fetch(match_info, 1); +- const gchar* type = g_match_info_fetch(match_info, 2); +- const gchar* size = g_match_info_fetch(match_info, 3); +- const gchar* model = g_match_info_fetch(match_info, 4); +- const gchar* vendor = g_match_info_fetch(match_info, 5); +- +- if (strcmp(type, "disk") == 0 && +- (name && strlen(name) > 0) && +- (size && strlen(size) > 0) && +- ((model && strlen(model) > 0) || (vendor && strlen(vendor) > 0))) ++ std::string name = match_info.fetch(1); ++ std::string type = match_info.fetch(2); ++ std::string size = match_info.fetch(3); ++ std::string model = match_info.fetch(4); ++ std::string vendor = match_info.fetch(5); ++ ++ if (type == "disk" && ++ !name.empty() && ++ !size.empty() && ++ (!model.empty() || !vendor.empty())) + { + DiskInfo disk_info; + disk_info.name = name; +- disk_info.size = atoll(size); +- disk_info.model = (strlen(model) ? model : name); +- disk_info.vendor = (strlen(vendor) ? vendor : name); ++ disk_info.size = atoll(size.c_str()); ++ disk_info.model = !model.empty() ? model : name; ++ disk_info.vendor = !vendor.empty() ? vendor : name; + disks_info.push_back(disk_info); + } +- +- if (name) g_free((gchar*)name); +- if (type) g_free((gchar*)type); +- if (size) g_free((gchar*)size); +- if (model) g_free((gchar*)model); +- if (vendor) g_free((gchar*)vendor); +- +- g_match_info_free(match_info); + } + } + +- g_regex_unref(pattern); +- + return disks_info; + } + +-- +2.27.0 + diff --git a/0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch b/0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch new file mode 100644 index 0000000..c206601 --- /dev/null +++ b/0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch @@ -0,0 +1,122 @@ +From 40d6ee6ad5f920e450160c26bad1dfe2136a529e Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Fri, 27 Sep 2024 15:52:39 +0800 +Subject: [PATCH] fix(gnome theme): Fix the issue where switching between light + and dark themes does not work in Gnome 41 and later versions. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复切换深浅色主题对gnome41之后的应用失效的问题 + +#35120 +--- + plugins/appearance/theme/appearance-theme.cpp | 41 ++++++++++++++++++- + plugins/appearance/theme/appearance-theme.h | 2 + + 2 files changed, 42 insertions(+), 1 deletion(-) + +diff --git a/plugins/appearance/theme/appearance-theme.cpp b/plugins/appearance/theme/appearance-theme.cpp +index 383e59d..186e156 100644 +--- a/plugins/appearance/theme/appearance-theme.cpp ++++ b/plugins/appearance/theme/appearance-theme.cpp +@@ -24,6 +24,16 @@ + #define MOUSE_SCHEMA_KEY_CURSOR_THEME "cursor-theme" + #define MOUSE_SCHEMA_KEY_CURSOR_SIZE "cursor-size" + ++#define GNOME_DESKTOP_SCHEMA_ID "org.gnome.desktop.interface" ++#define GNOME_DESKTOP_SCHEMA_KEY_COLOR_SCHEMA "color-scheme" ++enum GnomeDesktopColorScheme ++{ ++ GNOME_COLOR_SCHEME_DEFAULT, ++ GNOME_COLOR_SCHEME_PREFER_DARK, ++ GNOME_COLOR_SCHEME_PREFER_LIGHT, ++ GNOME_COLOR_SCHEME_LAST ++}; ++ + namespace Kiran + { + AppearanceTheme::AppearanceTheme() +@@ -40,6 +50,11 @@ AppearanceTheme::AppearanceTheme() + { + this->mouse_settings_ = Gio::Settings::create(MOUSE_SCHEMA_ID); + } ++ ++ if (std::find(schemas.begin(), schemas.end(), GNOME_DESKTOP_SCHEMA_ID) != schemas.end()) ++ { ++ this->gnome_desktop_settigns_ = Gio::Settings::create(GNOME_DESKTOP_SCHEMA_ID); ++ } + } + + void AppearanceTheme::init() +@@ -54,10 +69,12 @@ void AppearanceTheme::init() + { + this->add_theme(theme); + } +- } ++ } + + this->xsettings_settings_->signal_changed().connect(sigc::mem_fun(this, &AppearanceTheme::on_xsettings_settings_changed)); + this->theme_monitor_.signal_monitor_event().connect(sigc::mem_fun(this, &AppearanceTheme::on_monitor_event_changed)); ++ ++ this->try_sync_gnome_color_schema(); + } + + ThemeInfoVec AppearanceTheme::get_themes_by_type(AppearanceThemeType type) +@@ -111,6 +128,7 @@ bool AppearanceTheme::set_theme(ThemeKey key, CCErrorCode& error_code) + break; + case AppearanceThemeType::APPEARANCE_THEME_TYPE_GTK: + this->set_gtk_theme(theme->name); ++ this->try_sync_gnome_color_schema(); + break; + case AppearanceThemeType::APPEARANCE_THEME_TYPE_METACITY: + this->set_metacity_theme(theme->name); +@@ -289,4 +307,25 @@ void AppearanceTheme::on_monitor_event_changed(std::shared_ptr + this->themes_changed_.emit(key, ThemeEventType::THEME_EVENT_TYPE_CHG); + } + } ++ ++void AppearanceTheme::try_sync_gnome_color_schema() ++{ ++ if (!this->gnome_desktop_settigns_) ++ { ++ return; ++ } ++ ++ auto theme_name = this->get_theme(APPEARANCE_THEME_TYPE_GTK); ++ if (theme_name == APPEARANCE_DEFAULT_DARK_GTK_THEME) ++ { ++ this->gnome_desktop_settigns_->set_enum(GNOME_DESKTOP_SCHEMA_KEY_COLOR_SCHEMA, ++ GNOME_COLOR_SCHEME_PREFER_DARK); ++ } ++ else ++ { ++ this->gnome_desktop_settigns_->set_enum(GNOME_DESKTOP_SCHEMA_KEY_COLOR_SCHEMA, ++ GNOME_COLOR_SCHEME_PREFER_LIGHT); ++ } ++} ++ + } // namespace Kiran +\ No newline at end of file +diff --git a/plugins/appearance/theme/appearance-theme.h b/plugins/appearance/theme/appearance-theme.h +index 77d5149..b812128 100644 +--- a/plugins/appearance/theme/appearance-theme.h ++++ b/plugins/appearance/theme/appearance-theme.h +@@ -74,6 +74,7 @@ private: + void on_xsettings_settings_changed(const Glib::ustring& key); + void on_monitor_event_changed(std::shared_ptr monitor_info, ThemeMonitorEventType event_type); + ++ void try_sync_gnome_color_schema(); + private: + static AppearanceTheme* instance_; + +@@ -89,5 +90,6 @@ private: + Glib::RefPtr xsettings_settings_; + Glib::RefPtr marco_settings_; + Glib::RefPtr mouse_settings_; ++ Glib::RefPtr gnome_desktop_settigns_; + }; + } // namespace Kiran +\ No newline at end of file +-- +2.27.0 + diff --git a/0029-fix-gnome-Fix-crash-caused-by-the-previous-commit-du.patch b/0029-fix-gnome-Fix-crash-caused-by-the-previous-commit-du.patch new file mode 100644 index 0000000..c6f3275 --- /dev/null +++ b/0029-fix-gnome-Fix-crash-caused-by-the-previous-commit-du.patch @@ -0,0 +1,36 @@ +From 24a3b5e00c9d57472e5b06d59248df9fcecedc87 Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Tue, 8 Oct 2024 10:36:03 +0800 +Subject: [PATCH] fix(gnome): Fix crash caused by the previous commit due to + the existence of a schema but the absence of a color-schema +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复上次提交导致存在schema但是不存在color-scehma导致崩溃,加强对于schema以及key的判断 +--- + plugins/appearance/theme/appearance-theme.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/plugins/appearance/theme/appearance-theme.cpp b/plugins/appearance/theme/appearance-theme.cpp +index 186e156..9f31ca5 100644 +--- a/plugins/appearance/theme/appearance-theme.cpp ++++ b/plugins/appearance/theme/appearance-theme.cpp +@@ -53,7 +53,13 @@ AppearanceTheme::AppearanceTheme() + + if (std::find(schemas.begin(), schemas.end(), GNOME_DESKTOP_SCHEMA_ID) != schemas.end()) + { +- this->gnome_desktop_settigns_ = Gio::Settings::create(GNOME_DESKTOP_SCHEMA_ID); ++ auto temp_settings = Gio::Settings::create(GNOME_DESKTOP_SCHEMA_ID); ++ auto keys = temp_settings->list_keys(); ++ if ( std::find(keys.begin(), keys.end(), GNOME_DESKTOP_SCHEMA_KEY_COLOR_SCHEMA) != keys.end() ) ++ { ++ // 确保 org.gnome.desktop.interface color-scheme 完全存在才使用 ++ this->gnome_desktop_settigns_ = temp_settings; ++ } + } + } + +-- +2.27.0 + diff --git a/0030-fix-passwd-enriching-pw_history-error-reporing.patch b/0030-fix-passwd-enriching-pw_history-error-reporing.patch new file mode 100644 index 0000000..b3b561a --- /dev/null +++ b/0030-fix-passwd-enriching-pw_history-error-reporing.patch @@ -0,0 +1,78 @@ +From 6875a6f5c1c4c446eb5098f342a53913db83ac8a Mon Sep 17 00:00:00 2001 +From: liuxinhao +Date: Wed, 23 Oct 2024 10:34:17 +0800 +Subject: [PATCH] fix(passwd): enriching pw_history error reporing +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 丰富pw_history的报错信息 + +Related #52096 +--- + plugins/accounts/passwd-wrapper.cpp | 41 ++++++++++++++--------------- + 1 file changed, 20 insertions(+), 21 deletions(-) + +diff --git a/plugins/accounts/passwd-wrapper.cpp b/plugins/accounts/passwd-wrapper.cpp +index 1a26737..e962729 100644 +--- a/plugins/accounts/passwd-wrapper.cpp ++++ b/plugins/accounts/passwd-wrapper.cpp +@@ -1,14 +1,14 @@ + /** +- * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. ++ * Copyright (c) 2020 ~ 2021 KylinSec Co., Ltd. + * kiran-cc-daemon 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 + */ + +@@ -289,20 +289,19 @@ bool PasswdWrapper::process_passwd_output_line(const std::string &line) + break; + case PASSWD_STATE_RETYPE: + if (StrUtils::contains_oneof_substrs(lowercase_passwd_tips, std::vector{ +- "successfully", +- "failure", +- })) ++ "successfully"})) + { +- if (lowercase_passwd_tips.find("successfully") != std::string::npos) +- { +- // 密码设置成功 +- this->end_passwd(true); +- } +- else +- { +- this->additional_error_message_ = this->translation_passwd_tips(line); +- this->state_ = PASSWD_STATE_ERROR; +- } ++ // 密码设置成功 ++ this->end_passwd(true); ++ retval = true; ++ } ++ else if (StrUtils::contains_oneof_substrs(lowercase_passwd_tips, ++ std::vector{"failure"}) || ++ StrUtils::contains_allof_substrs(lowercase_passwd_tips, ++ std::vector{"password", "already", "used"})) ++ { ++ this->additional_error_message_ = this->translation_passwd_tips(line); ++ this->state_ = PASSWD_STATE_ERROR; + retval = true; + } + break; +-- +2.27.0 + diff --git a/kiran-cc-daemon.spec b/kiran-cc-daemon.spec index de5652d..cd59932 100644 --- a/kiran-cc-daemon.spec +++ b/kiran-cc-daemon.spec @@ -1,30 +1,44 @@ Name: kiran-cc-daemon Version: 2.6.1 -Release: 15%{?dist} +Release: 24%{?dist} Summary: DBus daemon for Kiran Desktop License: MulanPSL-2.0 Source0: %{name}-%{version}.tar.gz -Source1: 99_unikylin-mate-SettingsDaemon-plugins.gschema.override -Source2: 99_unikylin-mate-Marco-global-keybindings.gschema.override +Source1: 99_unikylin-mate-SettingsDaemon-plugins.gschema.override +Source2: 99_unikylin-mate-Marco-global-keybindings.gschema.override -Patch0000: 0000-fix-xsettings-set-default-icon-theme-to-Spring.patch -Patch0001: 0001-fix-xsettings-Fix-font-enlargement-on-4K-screen.patch -Patch0002: 0001-fix-media-keys-Fix-use-shortcut-key-with-shift.patch -Patch0003: 0003-fix-power-tray-Fixed-an-issue-where-the-laptop-tray-.patch -Patch0004: 0004-fix-keybinding-Fix-shortcut-grab-in-system-and-conf-.patch -Patch0005: 0005-fix-power-Fix-dpms-force-level-effective-while-state.patch -Patch0006: 0006-feature-appearance-Add-support-reset-default-font.patch -Patch0007: 0007-fix-keybidning-avoid-shift-to-participate-in-transla.patch -Patch0008: 0008-fix-appearance-Change-the-light-theme-name-to-Kiran-.patch -Patch0009: 0009-fix-power-Fix-coredump-while-log-print-in-power.patch -Patch0010: 0010-feature-CI-ref-new-CI-entry-point.patch -Patch0011: 0011-fix-audio-Fix-audio-stream-volume-retain-while-set-m.patch -Patch0012: 0012-fix-power-Fix-battery-charging-and-discharging-time.patch -Patch0013: 0013-fix-power-Fix-sys-backlight-set-only-in-notebook-wit.patch -Patch0014: 0014-fix-touchpad-Fix-touchpad-control-with-the-type-psmo.patch -Patch0015: 0015-fix-display-Fix-handling-Dbus-method-calls-returning.patch -Patch0016: 0016-fix-power-Fix-poweroff-action-while-button-event-dup.patch +Patch0000: 0000-fix-xsettings-set-default-icon-theme-to-Spring.patch +Patch0001: 0001-fix-xsettings-Fix-font-enlargement-on-4K-screen.patch +Patch0002: 0001-fix-media-keys-Fix-use-shortcut-key-with-shift.patch +Patch0003: 0003-fix-power-tray-Fixed-an-issue-where-the-laptop-tray-.patch +Patch0004: 0004-fix-keybinding-Fix-shortcut-grab-in-system-and-conf-.patch +Patch0005: 0005-fix-power-Fix-dpms-force-level-effective-while-state.patch +Patch0006: 0006-feature-appearance-Add-support-reset-default-font.patch +Patch0007: 0007-fix-keybidning-avoid-shift-to-participate-in-transla.patch +Patch0008: 0008-fix-appearance-Change-the-light-theme-name-to-Kiran-.patch +Patch0009: 0009-fix-power-Fix-coredump-while-log-print-in-power.patch +Patch0010: 0010-feature-CI-ref-new-CI-entry-point.patch +Patch0011: 0011-fix-audio-Fix-audio-stream-volume-retain-while-set-m.patch +Patch0012: 0012-fix-power-Fix-battery-charging-and-discharging-time.patch +Patch0013: 0013-fix-power-Fix-sys-backlight-set-only-in-notebook-wit.patch +Patch0014: 0014-fix-touchpad-Fix-touchpad-control-with-the-type-psmo.patch +Patch0015: 0015-fix-display-Fix-handling-Dbus-method-calls-returning.patch +Patch0016: 0016-fix-power-Fix-poweroff-action-while-button-event-dup.patch +Patch0017: 0017-feature-display-perform-adaptive-settings-when-conne.patch +Patch0018: 0018-fix-systeminfo-fix-the-graphical-and-network-hardwar.patch +Patch0019: 0019-fix-systeminfo-Remove-the-duplicate-graphical-and-ne.patch +Patch0020: 0020-fix-media-keys-action-The-shutdown-shortcut-cannot-b.patch +Patch0021: 0021-fix-media-keys-action-fix-compile-error.patch +Patch0022: 0022-feature-media-keys-add-shutdown-keybinding.patch +Patch0023: 0023-fix-Ungrab-Synchronize-requests-to-XServer-after-UnG.patch +Patch0024: 0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch +Patch0025: 0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch +Patch0026: 0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch +Patch0027: 0027-feature-systeminfo-hardware-use-glibmm-s-regex-to-re.patch +Patch0028: 0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch +Patch0029: 0029-fix-gnome-Fix-crash-caused-by-the-previous-commit-du.patch +Patch0030: 0030-fix-passwd-enriching-pw_history-error-reporing.patch BuildRequires: cmake >= 3.2 BuildRequires: pkgconfig(glibmm-2.4) @@ -48,19 +62,19 @@ BuildRequires: kiran-log-gtk3-devel BuildRequires: fmt-devel >= 6.2.1 %if "%{?kylin_major_version}" == "3" && "%{?kylin_minor_version}" == "3" && "%{?kylin_sub_minor_version}" == "6" -BuildRequires: python36-jinja2 +BuildRequires: python36-jinja2 %else -BuildRequires: python%{python3_pkgversion}-jinja2 +BuildRequires: python%{python3_pkgversion}-jinja2 %endif BuildRequires: gdbus-codegen-glibmm -BuildRequires: gtest-devel -BuildRequires: libnotify-devel -BuildRequires: pulseaudio-libs-devel -BuildRequires: libgtop2-devel -BuildRequires: libgudev-devel -BuildRequires: cryptopp-devel -BuildRequires: libwnck3-devel +BuildRequires: gtest-devel +BuildRequires: libnotify-devel +BuildRequires: pulseaudio-libs-devel +BuildRequires: libgtop2-devel +BuildRequires: libgudev-devel +BuildRequires: cryptopp-devel +BuildRequires: libwnck3-devel %description @@ -68,61 +82,61 @@ DBus daemon for Kiran Desktop %package -n kiran-system-daemon -Summary: System DBus daemon for Kiran Desktop -Requires: systemd +Summary: System DBus daemon for Kiran Desktop +%{?systemd_requires} %if 0%{?rhel} > 7 || 0%{?openEuler} -Requires: dbus-daemon +Requires: dbus-daemon %else -Requires: dbus +Requires: dbus %endif -Requires: polkit -Requires: kiran-cc-daemon-common -Requires: util-linux -Requires: pciutils -Requires: libgtop2 -Requires: libgudev -Requires: lshw -Requires: passwd -Requires: iso-codes +Requires: polkit +Requires: kiran-cc-daemon-common +Requires: util-linux +Requires: pciutils +Requires: libgtop2 +Requires: libgudev +Requires: lshw +Requires: passwd +Requires: iso-codes %if "%{?kylin}" == "" -Requires: openeuler-lsb +Requires: openeuler-lsb %else -Requires: %{_vendor}-lsb +Requires: %{_vendor}-lsb %endif %description -n kiran-system-daemon System DBus daemon for Kiran Desktop %package -n kiran-session-daemon -Summary: Session DBus daemon for Kiran Desktop +Summary: Session DBus daemon for Kiran Desktop %if 0%{?rhel} > 7 || 0%{?openEuler} -Requires: dbus-daemon +Requires: dbus-daemon %else -Requires: dbus +Requires: dbus %endif -Requires: kiran-session-manager -Requires: xorg-x11-server-utils -Requires: kiran-cc-daemon-common -Requires: upower -Requires: pulseaudio -Requires: libwnck3 +Requires: kiran-session-manager +Requires: xorg-x11-server-utils +Requires: kiran-cc-daemon-common +Requires: upower +Requires: pulseaudio +Requires: libwnck3 %description -n kiran-session-daemon Session DBus daemon for Kiran Desktop %package common -Summary: Common files for kiran-session-daemon and kiran-system-daemon +Summary: Common files for kiran-session-daemon and kiran-system-daemon %description common Common files for kiran-session-daemon and kiran-system-daemon %package devel -Summary: Development files for communicating with control center daemon +Summary: Development files for communicating with control center daemon %description devel Development files for communicating with control center daemon @@ -211,6 +225,23 @@ glib-compile-schemas /usr/share/glib-2.0/schemas &> /dev/nulls || : %{_libdir}/pkgconfig/kiran-cc-daemon.pc %changelog +* Sun Dec 08 2024 liuxinhao - 2.6.1-24 +- KYOS-F: Decrease the priority of override file configurations(#52881) +- KYOS-F: Marking the configuration as not to be replaced +- KYOS-B: Enrichment of error messages in pw_history module when changing passwords(#52096) +- KYOS-B: Fix crash caused by the previous commit due to the existence of a schema but the absence of a color-schema (#35120) +- KYOS-B: Fix the issue where switching between light and dark themes does not work in Gnome 41 and later versions.(#35120) +- KYSO-B: Fix the ntp service load order logic error +- KYSO-B: Fix std::regex can not run in gcc version < 4.9(#48386) +- KYSO-F: Use glibmm's regex to replace glib's regex +- KYSO-B: Fix failure to get disk information in virtual machine(#46645) +- KYOS-B: Fixed the issue where Unglab was not executed in a timely manner, causing subsequent Xclient connections to XServer to fail +- KYOS-B: fix the graphical and network hardware info no display problem.(#37289) +- KYOS-B: Remove the duplicate graphical and network hardware info. +- KYOS-B: The shutdown shortcut cannot be found.(#44337) +- KYOS-F: add shutdown keybinding +- KYOS-B: perform adaptive settings when connection status or monitor uid is changed.(#37289) + * Mon Apr 22 2024 meizhigang - 2.6.1-15 - KYOS-B: Fix poweroff action while button event duplicate once clicked (#28620)