Synchronize patches, adjust spec file format alignment
This commit is contained in:
parent
1d8ae11db2
commit
e4da079226
139
0017-feature-display-perform-adaptive-settings-when-conne.patch
Normal file
139
0017-feature-display-perform-adaptive-settings-when-conne.patch
Normal file
@ -0,0 +1,139 @@
|
||||
From d8e6d419f0b4f4965b32e7c62281f257e0595c4b Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
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 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
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 <tangjie02@kylinos.com.cn>
|
||||
*/
|
||||
|
||||
@@ -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<ModeInfo> 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<std::string> result;
|
||||
+ for (const auto &iter : this->monitors_)
|
||||
+ {
|
||||
+ result.push_back(iter.second->name_get());
|
||||
+ }
|
||||
+ std::sort(result.begin(), result.end(), std::less<std::string>());
|
||||
+ return StrUtils::join(result, MONITOR_JOIN_CHAR);
|
||||
+}
|
||||
+
|
||||
std::string DisplayManager::get_c_monitors_uid(const ScreenConfigInfo::MonitorSequence &monitors)
|
||||
{
|
||||
std::vector<std::string> 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 <tangjie02@kylinos.com.cn>
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
From 5f64a588c8518aada0c2c8fb73f6ee753eef8f98 Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
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 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
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
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
From df915cbcc72f0ac8c220e40a62eb6da050057c3e Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
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 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
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
|
||||
|
||||
@ -0,0 +1,80 @@
|
||||
From 4156ea6bbf3252fd111f6a2f5a0e87ac97171c93 Mon Sep 17 00:00:00 2001
|
||||
From: yangfeng <yangfeng@kylinsec.com.cn>
|
||||
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 <meizhigang@kylinsec.com.cn>
|
||||
*/
|
||||
#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
|
||||
|
||||
42
0021-fix-media-keys-action-fix-compile-error.patch
Normal file
42
0021-fix-media-keys-action-fix-compile-error.patch
Normal file
@ -0,0 +1,42 @@
|
||||
From fb62714c4f58c5705baeffd0a668ca656384391f Mon Sep 17 00:00:00 2001
|
||||
From: yangfeng <yangfeng@kylinsec.com.cn>
|
||||
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
|
||||
|
||||
29
0022-feature-media-keys-add-shutdown-keybinding.patch
Normal file
29
0022-feature-media-keys-add-shutdown-keybinding.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 2c7c73ef7bb363c4c0966daf5e48664f6b708c62 Mon Sep 17 00:00:00 2001
|
||||
From: yangfeng <yangfeng@kylinsec.com.cn>
|
||||
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 @@
|
||||
<description>Binding to mute/unmute the microphone.</description>
|
||||
</key>
|
||||
<key name="power" type="s">
|
||||
- <default>''</default>
|
||||
+ <default>'<Control><Alt>Delete'</default>
|
||||
<summary>Shut down</summary>
|
||||
<description>Binding to shut down.</description>
|
||||
</key>
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
From 2af5d982e63e6e7e4b1f7c4729dbd85930c004f1 Mon Sep 17 00:00:00 2001
|
||||
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||||
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<Gdk::Screen> screen,
|
||||
XClearWindow(xdisplay, xroot);
|
||||
|
||||
XFlush(xdisplay);
|
||||
+
|
||||
XUngrabServer(xdisplay);
|
||||
+ //立即同步UnGrab请求支XServer
|
||||
+ XFlush(xdisplay);
|
||||
|
||||
return true;
|
||||
}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
119
0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch
Normal file
119
0024-fix-systeminfo-hardware-Fix-failure-to-get-disk-info.patch
Normal file
@ -0,0 +1,119 @@
|
||||
From 5c6cbc5e72570a5772b6ed4568cd2c303c02c9d9 Mon Sep 17 00:00:00 2001
|
||||
From: yangfeng <yangfeng@kylinsec.com.cn>
|
||||
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 <gudev/gudev.h>
|
||||
#include <cinttypes>
|
||||
#include <fstream>
|
||||
+#include <regex>
|
||||
|
||||
namespace Kiran
|
||||
{
|
||||
@@ -233,13 +234,13 @@ std::map<std::string, std::string> SystemInfoHardware::parse_info_file(const std
|
||||
|
||||
DiskInfoVec SystemInfoHardware::get_disks_info()
|
||||
{
|
||||
- // 老版本lsblk不支持-J选项,所以这里不使用json格式
|
||||
+ // 老版本lsblk不支持-J选项,所以这里不使用json格式
|
||||
DiskInfoVec disks_info;
|
||||
+ std::vector<std::string> argv{DISKINFO_CMD, "-d", "-b", "-P", "-o", "NAME,TYPE,SIZE,MODEL,VENDOR"};
|
||||
|
||||
std::string cmd_output;
|
||||
try
|
||||
{
|
||||
- std::vector<std::string> 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
|
||||
|
||||
106
0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch
Normal file
106
0025-fix-timedate-Fix-the-ntp-service-load-order-logic-er.patch
Normal file
@ -0,0 +1,106 @@
|
||||
From 2952b5d65d8920ab3ee41433399915b0b20b51a2 Mon Sep 17 00:00:00 2001
|
||||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||||
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 <tangjie02@kylinsec.com.cn>
|
||||
---
|
||||
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 <tangjie02@kylinos.com.cn>
|
||||
*/
|
||||
|
||||
@@ -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<std::string> TimedateManager::get_ntp_units()
|
||||
{
|
||||
auto &unit_dir = *iter;
|
||||
Glib::Dir dir(unit_dir);
|
||||
+ std::vector<std::string> 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<std::string>());
|
||||
+
|
||||
+ for (auto iter = paths.begin(); iter != paths.end(); ++iter)
|
||||
+ {
|
||||
+ auto path = *iter;
|
||||
std::string contents;
|
||||
|
||||
try
|
||||
@@ -460,8 +470,15 @@ std::vector<std::string> 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<std::string> 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
|
||||
|
||||
121
0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch
Normal file
121
0026-fix-systeminfo-fix-std-regex-can-not-run-in-gcc-vers.patch
Normal file
@ -0,0 +1,121 @@
|
||||
From 762c2907fb52dfdebec779c33883a6589d458c0d Mon Sep 17 00:00:00 2001
|
||||
From: yangfeng <yangfeng@kylinsec.com.cn>
|
||||
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 <gio/gunixinputstream.h>
|
||||
+#include <glib.h>
|
||||
#include <glibtop/mem.h>
|
||||
#include <gudev/gudev.h>
|
||||
#include <cinttypes>
|
||||
#include <fstream>
|
||||
-#include <regex>
|
||||
|
||||
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
|
||||
|
||||
@ -0,0 +1,94 @@
|
||||
From 66efa416ca17d10589df7eb6aab8a09a1ec3739e Mon Sep 17 00:00:00 2001
|
||||
From: yangfeng <yangfeng@kylinsec.com.cn>
|
||||
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 <gio/gunixinputstream.h>
|
||||
-#include <glib.h>
|
||||
+#include <glibmm/regex.h>
|
||||
#include <glibtop/mem.h>
|
||||
#include <gudev/gudev.h>
|
||||
#include <cinttypes>
|
||||
@@ -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<Glib::Regex> 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
|
||||
|
||||
122
0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch
Normal file
122
0028-fix-gnome-theme-Fix-the-issue-where-switching-betwee.patch
Normal file
@ -0,0 +1,122 @@
|
||||
From 40d6ee6ad5f920e450160c26bad1dfe2136a529e Mon Sep 17 00:00:00 2001
|
||||
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||||
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<ThemeMonitorInfo>
|
||||
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<ThemeMonitorInfo> monitor_info, ThemeMonitorEventType event_type);
|
||||
|
||||
+ void try_sync_gnome_color_schema();
|
||||
private:
|
||||
static AppearanceTheme* instance_;
|
||||
|
||||
@@ -89,5 +90,6 @@ private:
|
||||
Glib::RefPtr<Gio::Settings> xsettings_settings_;
|
||||
Glib::RefPtr<Gio::Settings> marco_settings_;
|
||||
Glib::RefPtr<Gio::Settings> mouse_settings_;
|
||||
+ Glib::RefPtr<Gio::Settings> gnome_desktop_settigns_;
|
||||
};
|
||||
} // namespace Kiran
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
From 24a3b5e00c9d57472e5b06d59248df9fcecedc87 Mon Sep 17 00:00:00 2001
|
||||
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||||
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
|
||||
|
||||
78
0030-fix-passwd-enriching-pw_history-error-reporing.patch
Normal file
78
0030-fix-passwd-enriching-pw_history-error-reporing.patch
Normal file
@ -0,0 +1,78 @@
|
||||
From 6875a6f5c1c4c446eb5098f342a53913db83ac8a Mon Sep 17 00:00:00 2001
|
||||
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||||
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 <tangjie02@kylinos.com.cn>
|
||||
*/
|
||||
|
||||
@@ -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<std::string>{
|
||||
- "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<std::string>{"failure"}) ||
|
||||
+ StrUtils::contains_allof_substrs(lowercase_passwd_tips,
|
||||
+ std::vector<std::string>{"password", "already", "used"}))
|
||||
+ {
|
||||
+ this->additional_error_message_ = this->translation_passwd_tips(line);
|
||||
+ this->state_ = PASSWD_STATE_ERROR;
|
||||
retval = true;
|
||||
}
|
||||
break;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -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 <liuxinhao@kylinsec.com.cn> - 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 <meizhigang@kylinsec.com.cn> - 2.6.1-15
|
||||
- KYOS-B: Fix poweroff action while button event duplicate once clicked (#28620)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user