From 6eb612a5fd8ce1e254afc0b1a18ea91bea1d2703 Mon Sep 17 00:00:00 2001 From: tangjie02 Date: Tue, 16 Aug 2022 20:02:00 +0800 Subject: [PATCH] The scaling rate can only take effect after logging out and logging in again. Signed-off-by: tangjie02 --- ...The-scaling-rate-can-only-take-effec.patch | 795 ++++++++++++++++++ kiran-cc-daemon.spec | 8 +- 2 files changed, 801 insertions(+), 2 deletions(-) create mode 100644 0001-feature-display-The-scaling-rate-can-only-take-effec.patch diff --git a/0001-feature-display-The-scaling-rate-can-only-take-effec.patch b/0001-feature-display-The-scaling-rate-can-only-take-effec.patch new file mode 100644 index 0000000..ba36cb8 --- /dev/null +++ b/0001-feature-display-The-scaling-rate-can-only-take-effec.patch @@ -0,0 +1,795 @@ +From 1137721a530370a171ea437dafa369384d414348 Mon Sep 17 00:00:00 2001 +From: tangjie02 +Date: Tue, 16 Aug 2022 17:54:17 +0800 +Subject: [PATCH] feature(display): The scaling rate can only take effect after + logging out and logging in again. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 缩放率改为默认注销后重新登录才能生效 + +Signed-off-by: tangjie02 +--- + .../com.kylinsec.kiran.display.gschema.xml.in | 4 + + include/display_i.h | 2 + + plugins/display/display-manager.cpp | 80 ++++++----- + plugins/display/display-manager.h | 3 +- + ...kylinsec.Kiran.SessionDaemon.XSettings.xml | 7 + + plugins/xsettings/xsettings-manager.cpp | 11 +- + plugins/xsettings/xsettings-manager.h | 1 + + plugins/xsettings/xsettings-registry.cpp | 18 ++- + plugins/xsettings/xsettings-registry.h | 9 +- + po/POTFILES.in | 12 +- + po/zh_CN.po | 132 ++++++++++-------- + 11 files changed, 168 insertions(+), 111 deletions(-) + +diff --git a/data/schemas/com.kylinsec.kiran.display.gschema.xml.in b/data/schemas/com.kylinsec.kiran.display.gschema.xml.in +index 536f3c4..ea752a8 100644 +--- a/data/schemas/com.kylinsec.kiran.display.gschema.xml.in ++++ b/data/schemas/com.kylinsec.kiran.display.gschema.xml.in +@@ -14,5 +14,9 @@ + Layout of connected monitors in the screen. + + ++ ++ false ++ It takes effect immediately when the scaling factor of window is changed. ++ + + +diff --git a/include/display_i.h b/include/display_i.h +index 56ef7b1..0b6bc17 100644 +--- a/include/display_i.h ++++ b/include/display_i.h +@@ -39,6 +39,8 @@ extern "C" + #define DISPLAY_OBJECT_PATH "/com/kylinsec/Kiran/SessionDaemon/Display" + #define DISPLAY_DBUS_INTERFACE_NAME "com.kylinsec.Kiran.SessionDaemon.Display" + ++#define DISPLAY_SCHEMA_DYNAMIC_SCALING_WINDOW "dynamic-scaling-window" ++ + // 显示模式,只有在下列情况会使用显示模式进行设置: + // 1. 程序第一次启动 + // 2. 有连接设备删除和添加时 +diff --git a/plugins/display/display-manager.cpp b/plugins/display/display-manager.cpp +index ff9151f..5c7c5b3 100644 +--- a/plugins/display/display-manager.cpp ++++ b/plugins/display/display-manager.cpp +@@ -16,6 +16,7 @@ + + #include + ++#include + #include "config.h" + #include "lib/base/base.h" + #include "plugins/display/display-util.h" +@@ -34,6 +35,8 @@ namespace Kiran + + DisplayManager::DisplayManager(XrandrManager *xrandr_manager) : xrandr_manager_(xrandr_manager), + default_style_(DisplayStyle::DISPLAY_STYLE_EXTEND), ++ window_scaling_factor_(0), ++ dynamic_scaling_window_(false), + dbus_connect_id_(0), + object_register_id_(0) + { +@@ -180,10 +183,28 @@ void DisplayManager::SetWindowScalingFactor(gint32 window_scaling_factor, Method + { + KLOG_PROFILE(""); + ++ if (this->window_scaling_factor_get() == window_scaling_factor) ++ { ++ invocation.ret(); ++ return; ++ } ++ ++ if (!this->dynamic_scaling_window_) ++ { ++ std::string standard_error; ++ auto command_line = fmt::format("/usr/bin/notify-send \"{0}\"", _("The scaling rate can only take effect after logging out and logging in again")); ++ Glib::spawn_command_line_sync(command_line, nullptr, &standard_error); ++ if (!standard_error.empty()) ++ { ++ KLOG_WARNING("Failed to run notify-send: %s", standard_error.c_str()); ++ } ++ } ++ + if (!this->window_scaling_factor_set(window_scaling_factor)) + { + DBUS_ERROR_REPLY_AND_RET(CCErrorCode::ERROR_DISPLAY_SET_WINDOW_SCALING_FACTOR_2); + } ++ + invocation.ret(); + } + +@@ -222,7 +243,6 @@ void DisplayManager::init() + this->load_config(); + + this->display_settings_->signal_changed().connect(sigc::mem_fun(this, &DisplayManager::display_settings_changed)); +- this->xsettings_settings_->signal_changed().connect(sigc::mem_fun(this, &DisplayManager::xsettings_settings_changed)); + this->xrandr_manager_->signal_resources_changed().connect(sigc::mem_fun(this, &DisplayManager::resources_changed)); + + this->dbus_connect_id_ = Gio::DBus::own_name(Gio::DBus::BUS_TYPE_SESSION, +@@ -236,21 +256,25 @@ void DisplayManager::init() + { + KLOG_WARNING("%s.", CC_ERROR2STR(error_code).c_str()); + } ++ ++ /* window_scaling_factor的初始化顺序: ++ 1. 先读取xsettings中的window-scaling-factor属性; (load_settings) ++ 2. 读取monitor.xml中维护的window-scaling-factor值 (switch_style_and_save) ++ 3. 如果第2步和第1步的值不相同,则说明在上一次进入会话时用户修改了缩放率,需要在这一次进入会话时生效, ++ 因此需要将monitor.xml中的缩放率更新到xsettings中的window-scaling-factor属性中*/ ++ if (this->window_scaling_factor_ != this->xsettings_settings_->get_int(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR)) ++ { ++ this->xsettings_settings_->set_int(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR, this->window_scaling_factor_); ++ } + } + + void DisplayManager::load_settings() + { + KLOG_PROFILE("settings: %p.", this->display_settings_.get()); + +- if (this->display_settings_) +- { +- this->default_style_ = DisplayStyle(this->display_settings_->get_enum(DISPLAY_SCHEMA_STYLE)); +- } +- +- if (this->xsettings_settings_) +- { +- this->window_scaling_factor_ = this->xsettings_settings_->get_int(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR); +- } ++ this->default_style_ = DisplayStyle(this->display_settings_->get_enum(DISPLAY_SCHEMA_STYLE)); ++ this->dynamic_scaling_window_ = this->display_settings_->get_boolean(DISPLAY_SCHEMA_DYNAMIC_SCALING_WINDOW); ++ this->window_scaling_factor_ = this->xsettings_settings_->get_int(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR); + } + + void DisplayManager::load_monitors() +@@ -505,12 +529,15 @@ bool DisplayManager::save_config(CCErrorCode &error_code) + + bool DisplayManager::apply(CCErrorCode &error_code) + { +- // 应用缩放因子 +- auto variant_value = Glib::Variant::create(this->window_scaling_factor_); +- if (!this->xsettings_settings_->set_value(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR, variant_value)) ++ if (this->dynamic_scaling_window_) + { +- error_code = CCErrorCode::ERROR_DISPLAY_SET_WINDOW_SCALING_FACTOR_1; +- return false; ++ // 应用缩放因子 ++ auto variant_value = Glib::Variant::create(this->window_scaling_factor_); ++ if (!this->xsettings_settings_->set_value(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR, variant_value)) ++ { ++ error_code = CCErrorCode::ERROR_DISPLAY_SET_WINDOW_SCALING_FACTOR_1; ++ return false; ++ } + } + + // 应用xrandr +@@ -652,10 +679,11 @@ ModeInfoVec DisplayManager::monitors_common_modes(const DisplayMonitorVec &monit + for (uint32_t i = 1; i < monitors.size(); ++i) + { + auto monitor = monitors[i]; +- 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); +- }); ++ 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); ++ }); + + result.erase(iter, result.end()); + } +@@ -829,20 +857,6 @@ void DisplayManager::display_settings_changed(const Glib::ustring &key) + } + } + +-void DisplayManager::xsettings_settings_changed(const Glib::ustring &key) +-{ +- KLOG_PROFILE("key: %s.", key.c_str()); +- +- switch (shash(key.c_str())) +- { +- case CONNECT(XSETTINGS_SCHEMA_WINDOW_SCALING_FACTOR, _hash): +- { +- this->window_scaling_factor_ = this->xsettings_settings_->get_int(key); +- } +- break; +- } +-} +- + void DisplayManager::on_bus_acquired(const Glib::RefPtr &connect, Glib::ustring name) + { + KLOG_PROFILE("name: %s", name.c_str()); +diff --git a/plugins/display/display-manager.h b/plugins/display/display-manager.h +index 1dbb50d..773fe90 100644 +--- a/plugins/display/display-manager.h ++++ b/plugins/display/display-manager.h +@@ -120,7 +120,6 @@ private: + void resources_changed(); + + void display_settings_changed(const Glib::ustring& key); +- void xsettings_settings_changed(const Glib::ustring& key); + + void on_bus_acquired(const Glib::RefPtr& connect, Glib::ustring name); + void on_name_acquired(const Glib::RefPtr& connect, Glib::ustring name); +@@ -142,6 +141,8 @@ private: + std::string primary_; + // 窗口缩放率 + int32_t window_scaling_factor_; ++ // 开启动态缩放窗口 ++ bool dynamic_scaling_window_; + + std::map> monitors_; + +diff --git a/plugins/xsettings/com.kylinsec.Kiran.SessionDaemon.XSettings.xml b/plugins/xsettings/com.kylinsec.Kiran.SessionDaemon.XSettings.xml +index d9a23da..cbe1b43 100644 +--- a/plugins/xsettings/com.kylinsec.Kiran.SessionDaemon.XSettings.xml ++++ b/plugins/xsettings/com.kylinsec.Kiran.SessionDaemon.XSettings.xml +@@ -70,5 +70,12 @@ + Set the XSettings Registry value whose type is color. + + ++ ++ ++ The XSettings Registry property name list. ++ ++ Emit this signal when XSettings Registry property is changed. ++ ++ + + +diff --git a/plugins/xsettings/xsettings-manager.cpp b/plugins/xsettings/xsettings-manager.cpp +index 9612a85..61c914b 100644 +--- a/plugins/xsettings/xsettings-manager.cpp ++++ b/plugins/xsettings/xsettings-manager.cpp +@@ -190,6 +190,7 @@ void XSettingsManager::init() + screen->signal_size_changed().connect(sigc::mem_fun(this, &XSettingsManager::on_screen_changed)); + screen->signal_monitors_changed().connect(sigc::mem_fun(this, &XSettingsManager::on_screen_changed)); + this->fontconfig_monitor_.signal_timestamp_changed().connect(sigc::mem_fun(this, &XSettingsManager::on_fontconfig_timestamp_changed)); ++ this->registry_.signal_properties_changed().connect(sigc::mem_fun(this, &XSettingsManager::on_properties_changed)); + + this->dbus_connect_id_ = Gio::DBus::own_name(Gio::DBus::BUS_TYPE_SESSION, + XSETTINGS_DBUS_NAME, +@@ -207,8 +208,6 @@ void XSettingsManager::load_from_settings() + // 这里不做通知,等初始化完后统一通知 + this->settings_changed(key, false); + } +- // 这里统一通知 +- this->registry_.notify(); + } + + void XSettingsManager::settings_changed(const Glib::ustring &key, bool is_notify) +@@ -300,7 +299,6 @@ void XSettingsManager::settings_changed(const Glib::ustring &key, bool is_notify + if (is_notify) + { + this->xsettings_changed_.emit(key.raw()); +- this->registry_.notify(); + } + } + +@@ -406,7 +404,6 @@ void XSettingsManager::on_screen_changed() + { + this->scale_settings(); + } +- this->registry_.notify(); + } + + bool XSettingsManager::delayed_toggle_bg_draw(bool value) +@@ -423,7 +420,11 @@ void XSettingsManager::on_fontconfig_timestamp_changed() + { + int32_t timestamp = time(NULL); + this->registry_.update(XSETTINGS_REGISTRY_PROP_FONTCONFIG_TIMESTAMP, timestamp); +- this->registry_.notify(); ++} ++ ++void XSettingsManager::on_properties_changed(const std::vector &properties) ++{ ++ this->PropertiesChanged_signal.emit(properties); + } + + void XSettingsManager::set_registry_var(std::shared_ptr var, MethodInvocation &invocation) +diff --git a/plugins/xsettings/xsettings-manager.h b/plugins/xsettings/xsettings-manager.h +index 84e5c55..ce69ef9 100644 +--- a/plugins/xsettings/xsettings-manager.h ++++ b/plugins/xsettings/xsettings-manager.h +@@ -68,6 +68,7 @@ private: + void on_screen_changed(); + bool delayed_toggle_bg_draw(bool value); + void on_fontconfig_timestamp_changed(); ++ void on_properties_changed(const std::vector &properties); + + void set_registry_var(std::shared_ptr var, MethodInvocation &invocation); + +diff --git a/plugins/xsettings/xsettings-registry.cpp b/plugins/xsettings/xsettings-registry.cpp +index bd95671..13472de 100644 +--- a/plugins/xsettings/xsettings-registry.cpp ++++ b/plugins/xsettings/xsettings-registry.cpp +@@ -236,8 +236,15 @@ bool XSettingsRegistry::update(std::shared_ptr var) + return true; + } + ++ this->changed_properties_.push_back(var->get_name()); + this->properties_.erase(var->get_name()); + auto iter = this->properties_.emplace(var->get_name(), var); ++ ++ // 空闲时修改,因为update可能会被连续调用多次。 ++ if (!this->notify_handler_) ++ { ++ this->notify_handler_ = Glib::signal_idle().connect(sigc::mem_fun(this, &XSettingsRegistry::notify)); ++ } + return iter.second; + } + +@@ -261,9 +268,10 @@ XSettingsPropertyBaseVec XSettingsRegistry::get_properties() + return retval; + } + +-void XSettingsRegistry::notify() ++bool XSettingsRegistry::notify() + { +- KLOG_PROFILE(""); ++ KLOG_DEBUG("Notify properties changed to other client."); ++ + std::string data; + + // 注意:填充的相关变量类型不能随意修改 +@@ -276,7 +284,6 @@ void XSettingsRegistry::notify() + data.append(std::string((char *)&nsettings, 4)); + + // 填充body +- + for (const auto &iter : this->properties_) + { + data.append(iter.second->serialize()); +@@ -290,6 +297,11 @@ void XSettingsRegistry::notify() + PropModeReplace, + (unsigned char *)data.c_str(), + data.length()); ++ ++ auto changed_properties = std::move(this->changed_properties_); ++ this->properties_changed_.emit(changed_properties); ++ ++ return false; + } + + char XSettingsRegistry::byte_order() +diff --git a/plugins/xsettings/xsettings-registry.h b/plugins/xsettings/xsettings-registry.h +index 8a39051..d8aa238 100644 +--- a/plugins/xsettings/xsettings-registry.h ++++ b/plugins/xsettings/xsettings-registry.h +@@ -126,12 +126,13 @@ public: + bool update(const std::string &name, const XSettingsColor &value); + bool update(std::shared_ptr var); + +- void notify(); +- + std::shared_ptr get_property(const std::string &name); + XSettingsPropertyBaseVec get_properties(); + ++ sigc::signal> signal_properties_changed() { return this->properties_changed_; }; ++ + private: ++ bool notify(); + char byte_order(); + + private: +@@ -146,5 +147,9 @@ private: + Window xsettings_window_; + + std::map> properties_; ++ // 记录发生变化的属性,在改变后发送信号 ++ std::vector changed_properties_; ++ sigc::connection notify_handler_; ++ sigc::signal> properties_changed_; + }; + } // namespace Kiran +\ No newline at end of file +diff --git a/po/POTFILES.in b/po/POTFILES.in +index a12d2d9..5defca8 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -1,11 +1,11 @@ + # List of source files which contain translatable strings. + [encoding: UTF-8] +-[type: gettext/gsettings]data/com.kylinsec.kiran.appearance.gschema.xml.in +-[type: gettext/gsettings]data/com.kylinsec.kiran.display.gschema.xml.in +-[type: gettext/gsettings]data/com.kylinsec.kiran.keyboard.gschema.xml.in +-[type: gettext/gsettings]data/com.kylinsec.kiran.mouse.gschema.xml.in +-[type: gettext/gsettings]data/com.kylinsec.kiran.touchpad.gschema.xml.in +-[type: gettext/gsettings]data/com.kylinsec.kiran.xsettings.gschema.xml.in ++[type: gettext/gsettings]data/schemas/com.kylinsec.kiran.appearance.gschema.xml.in ++[type: gettext/gsettings]data/schemas/com.kylinsec.kiran.display.gschema.xml.in ++[type: gettext/gsettings]data/schemas/com.kylinsec.kiran.keyboard.gschema.xml.in ++[type: gettext/gsettings]data/schemas/com.kylinsec.kiran.mouse.gschema.xml.in ++[type: gettext/gsettings]data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in ++[type: gettext/gsettings]data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in + data/com.kylinsec.Kiran.SystemDaemon.Accounts.policy.in + data/com.kylinsec.Kiran.SystemDaemon.TimeDate.policy.in + data/com.kylinsec.Kiran.SystemDaemon.Greeter.policy.in +diff --git a/po/zh_CN.po b/po/zh_CN.po +index c9f2652..0f3f202 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: kiran-cc-daemon 2.0\n" + "Report-Msgid-Bugs-To: \n" +-"POT-Creation-Date: 2022-06-08 11:05+0800\n" ++"POT-Creation-Date: 2022-08-16 17:47+0800\n" + "PO-Revision-Date: 2020-07-01 17:54+0800\n" + "Last-Translator: tangjie02 \n" + "Language-Team: Chinese (simplified)\n" +@@ -17,58 +17,63 @@ msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + +-#: ../data/com.kylinsec.kiran.appearance.gschema.xml.in.h:1 ++#: ../data/schemas/com.kylinsec.kiran.appearance.gschema.xml.in.h:1 + msgid "File to use for the desktop background image." + msgstr "桌面背景图片的文件路径。" + +-#: ../data/com.kylinsec.kiran.appearance.gschema.xml.in.h:2 ++#: ../data/schemas/com.kylinsec.kiran.appearance.gschema.xml.in.h:2 + msgid "File to use for the lock screen background image." + msgstr "锁屏背景图片的文件路径。" + +-#: ../data/com.kylinsec.kiran.display.gschema.xml.in.h:1 ++#: ../data/schemas/com.kylinsec.kiran.display.gschema.xml.in.h:1 + msgid "Layout of connected monitors in the screen." + msgstr "已连接的显示器在屏幕中的位置布局。" + +-#: ../data/com.kylinsec.kiran.keyboard.gschema.xml.in.h:1 ++#: ../data/schemas/com.kylinsec.kiran.display.gschema.xml.in.h:2 ++msgid "" ++"It takes effect immediately when the scaling factor of window is changed." ++msgstr "当窗口缩放率发生变化时立即生效。" ++ ++#: ../data/schemas/com.kylinsec.kiran.keyboard.gschema.xml.in.h:1 + msgid "" + "Whether repeat to trigger KeyPress and KeyRelease event when key is pressed." + msgstr "当键被长按后是否重复触发按下和弹起事件。" + +-#: ../data/com.kylinsec.kiran.keyboard.gschema.xml.in.h:2 ++#: ../data/schemas/com.kylinsec.kiran.keyboard.gschema.xml.in.h:2 + msgid "" + "The delay time in ms after the initial press of an auto-repeating key and " + "the first generated repeat event." + msgstr "当键被按下时第一次触发按下事件的延时(毫秒)。" + +-#: ../data/com.kylinsec.kiran.keyboard.gschema.xml.in.h:3 ++#: ../data/schemas/com.kylinsec.kiran.keyboard.gschema.xml.in.h:3 + msgid "The delay time in ms between all subsequent generated repeat events." + msgstr "当键被按下后每个按键(按下或者弹起)事件之间的间隔时间。" + +-#: ../data/com.kylinsec.kiran.keyboard.gschema.xml.in.h:4 ++#: ../data/schemas/com.kylinsec.kiran.keyboard.gschema.xml.in.h:4 + msgid "Keyboard layouts." + msgstr "键盘布局。" + +-#: ../data/com.kylinsec.kiran.keyboard.gschema.xml.in.h:5 ++#: ../data/schemas/com.kylinsec.kiran.keyboard.gschema.xml.in.h:5 + msgid "Keyboard options." + msgstr "键盘选项。" + +-#: ../data/com.kylinsec.kiran.mouse.gschema.xml.in.h:1 +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:1 ++#: ../data/schemas/com.kylinsec.kiran.mouse.gschema.xml.in.h:1 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:1 + msgid "Swap left and right buttons for left-handed." + msgstr "启动左手模式后,左右键功能进行切换。" + +-#: ../data/com.kylinsec.kiran.mouse.gschema.xml.in.h:2 ++#: ../data/schemas/com.kylinsec.kiran.mouse.gschema.xml.in.h:2 + msgid "Acceleration multiplier for mouse motion." + msgstr "鼠标移动加速。" + +-#: ../data/com.kylinsec.kiran.mouse.gschema.xml.in.h:3 ++#: ../data/schemas/com.kylinsec.kiran.mouse.gschema.xml.in.h:3 + msgid "" + "Enables middle mouse button emulation through simultaneous left and right " + "button click." + msgstr "通过同时左键和右键启用鼠标中键模拟按钮点击。" + +-#: ../data/com.kylinsec.kiran.mouse.gschema.xml.in.h:4 +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:6 ++#: ../data/schemas/com.kylinsec.kiran.mouse.gschema.xml.in.h:4 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:6 + msgid "" + "Enables or disables natural scroll. Natural scrolling is the terminology for " + "moving the content in the direction of scrolling, i.e. moving the wheel or " +@@ -77,22 +82,22 @@ msgstr "" + "启用或禁用自然滚动。自然滚动是沿滚动方向移动内容,即移动滚轮或手指向下时页面" + "向下移动。" + +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:2 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:2 + msgid "Indicates if diable while typing is enabled or disabled." + msgstr "打字时禁用触摸板功能。" + +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:3 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:3 + msgid "" + "Set this to TRUE to be able to send mouse clicks by tapping on the touchpad." + msgstr "设置为真则表示轻击触摸板触发对应的鼠标事件,例如双击等同于鼠标右键。" + +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:4 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:4 + msgid "" + "Enables a click method. Permitted methods are buttonareas and clickfinger, " + "respectively conreesponding to 0 and 1." + msgstr "设置单击方法。可通过按下和轻触的方式触发点击事件。" + +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:5 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:5 + msgid "" + "Enables a scroll method. Permitted methods are twofinger, edge and button, " + "respectively conrresponding to 0, 1 and 2." +@@ -100,146 +105,146 @@ msgstr "" + "设置滚动方法。可通过双指滑动、边缘滑动和按键(键盘中间的红色按钮)的方式触发滚" + "动操作。" + +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:7 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:7 + msgid "Set this to TRUE to enable all touchpads." + msgstr "开启或关闭触摸板。" + +-#: ../data/com.kylinsec.kiran.touchpad.gschema.xml.in.h:8 ++#: ../data/schemas/com.kylinsec.kiran.touchpad.gschema.xml.in.h:8 + msgid "Acceleration multiplier for touchpad motion." + msgstr "触摸板移动加速。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:1 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:1 + msgid "" + "Maximum time allowed between two clicks for them to be considered a double " + "click (in milliseconds)." + msgstr "触发双击事件时两次单击之间允许的最大时间 (毫秒)。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:2 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:2 + msgid "" + "Maximum distance allowed between two clicks for them to be considered a " + "double click (in pixels)." + msgstr "触发双击事件时两次单击之间允许的最大距离 (像素)。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:3 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:3 + msgid "Number of pixels the cursor can move before dragging." + msgstr "拖动前光标可以移动的像素数。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:4 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:4 + msgid "Whether the cursor should blink." + msgstr "光标是否应该闪烁。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:5 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:5 + msgid "Length of the cursor blink cycle, in milleseconds." + msgstr "光标闪烁周期的长度 (毫秒)。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:6 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:6 + msgid "Name of gtk theme to use." + msgstr "系统使用的主题。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:7 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:7 + msgid "Name of icon theme to use for icons." + msgstr "系统使用的图标主题。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:8 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:8 + msgid "Whether to play sounds on user events." + msgstr "是否在用户事件中播放声音。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:9 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:9 + msgid "The XDG sound theme to use for event sounds." + msgstr "用于事件声音的XDG声音主题。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:10 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:10 + msgid "Whether to play sounds on input events." + msgstr "是否在输入事件上播放声音。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:11 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:11 + msgid "Whether to antialias Xft fonts; 0=no, 1=yes, -1=default." + msgstr "是否开启Xft字体抗锯齿;-1表示默认值。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:12 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:12 + msgid "Whether to hint Xft fonts; 0=no, 1=yes, -1=default." + msgstr "是否开启Xft字体微调;-1表示默认值。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:13 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:13 + msgid "" + "What degree of hinting to use; \"hintnone\", \"hintslight\", \"hintmedium\", " + "or \"hintfull\"." + msgstr "使用什么程度的微调。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:14 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:14 + msgid "" + "Type of subpixel antialiasing; \"none\", \"rgb\", \"bgr\", \"vrgb\", \"vbgr" + "\"." + msgstr "抗锯齿次像素顺序。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:15 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:15 + msgid "" + "Resolution for Xft, in 1024 * dots/inch. -1 to use default value. Do not " + "modify it manually." + msgstr "字体分辨率,请不要手动修改。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:16 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:16 + msgid "Name of the cursor theme." + msgstr "光标主题。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:17 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:17 + msgid "Size of the cursor referenced by cursor_theme." + msgstr "光标大小。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:18 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:18 + msgid "Name of default font to use." + msgstr "GTK默认字体。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:19 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:19 + msgid "Name of key theme RC file to load." + msgstr "GTK要加载的关键主题的名称。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:20 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:20 + msgid "" + "Whether default toolbars have text only, text and icons, icons only, etc." + msgstr "默认工具栏是否只有文本、文本和图标、图标。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:21 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:21 + msgid "Size of icons in default toolbars." + msgstr "默认工具栏中图标的大小。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:22 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:22 + msgid "How to draw the input method preedit string." + msgstr "如何绘制输入法预编辑字符串。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:23 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:23 + msgid "How to draw the input method statusbar." + msgstr "如何绘制输入法状态栏。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:24 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:24 + msgid "Name of the input method module used by GTK+." + msgstr "GTK使用的输入法模块的名称。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:25 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:25 + msgid "Whether images should be shown in menus." + msgstr "是否应在菜单中显示图像。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:26 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:26 + msgid "Whether stock icons should be shown in buttons." + msgstr "图像是否显示在按钮中。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:27 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:27 + msgid "The accelerator for moving the focus to the menubar." + msgstr "将焦点移动到菜单栏的加速器" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:28 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:28 + msgid "" + "A '\\n' separated list of \"name:color\" as defined by the 'gtk-color-" + "scheme' setting" + msgstr "颜色主题" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:29 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:29 + msgid "" + "Module to use as the filesystem model for the GtkFileChooser widget. " + "Possible values are \"gio\" and \"gtk+\"." + msgstr "用作GtkFileChooser小部件的文件系统模型的模块" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:30 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:30 + msgid "" + "This setting determines which buttons should be put in the titlebar of " + "client-side decorated windows, and whether they should be placed at the left " +@@ -247,48 +252,48 @@ msgid "" + msgstr "" + "此设置确定哪些按钮应放在客户端装饰窗口的标题栏中,以及是否应放在右侧的左侧。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:31 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:31 + msgid "" + "This setting determines where application menu will be displayed - in a " + "window or on a panel with MenuModel protocol." + msgstr "" + "此设置确定应用程序菜单的显示位置,在窗口中或使用MenuModel协议的面板上。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:32 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:32 + msgid "" + "This setting determines where window menubars will be displayed - in a " + "window or on a panel with MenuModel protocol." + msgstr "此设置确定窗口菜单栏的显示位置,在窗口中或使用MenuModel协议的面板上" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:33 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:33 + msgid "" + "Whether the context menus of entries and text views should offer to change " + "the input method." + msgstr "条目和文本视图的上下文菜单是否应提供更改输入法的功能。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:34 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:34 + msgid "" + "Whether the context menus of entries and text views should offer to insert " + "control characters." + msgstr "条目和文本视图的上下文菜单是否应提供更改输入法的功能。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:35 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:35 + msgid "" + "Whether mnemonics should be automatically shown and hidden when the user " + "presses the Alt key." + msgstr "当用户按Alt键时,助记符是否应自动显示和隐藏。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:36 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:36 + msgid "" + "If true, gtk+ uses the primary paste selection, usually triggered by a " + "middle mouse button click." + msgstr "如果为true,gtk+将使用主粘贴选择,通常由鼠标中键单击触发。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:37 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:37 + msgid "Whether to enable toolkit-wide animations." + msgstr "是否启用工具箱范围的动画。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:38 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:38 + msgid "" + "Whether builtin GTK+ dialogs such as the file chooser, the color chooser or " + "the font chooser will use a header bar at the top to show action widgets, or " +@@ -297,13 +302,13 @@ msgstr "" + "无论是内置的GTK+对话框、文件选择器、颜色选择器或字体选择器,都将使用顶部的标" + "题栏或者底部的操作区域来显示操作小部件。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:39 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:39 + msgid "" + "This controls the GTK scale factor that maps from window coordinates to the " + "actual device pixels." + msgstr "控制从窗口坐标映射到实际设备像素的GTK比例因子。" + +-#: ../data/com.kylinsec.kiran.xsettings.gschema.xml.in.h:40 ++#: ../data/schemas/com.kylinsec.kiran.xsettings.gschema.xml.in.h:40 + msgid "" + "This setting determines whether MATE controls the scale factor for QT " + "applications." +@@ -836,6 +841,11 @@ msgstr "({0},错误码:0x{1:x})" + msgid "%b %d %Y" + msgstr "%Y年%m月%d日" + ++#: ../plugins/display/display-manager.cpp:195 ++msgid "" ++"The scaling rate can only take effect after logging out and logging in again" ++msgstr "缩放率需要注销后重新登录才能生效" ++ + #: ../plugins/keybinding/custom-shortcut.h:25 + msgid "Custom" + msgstr "自定义" +-- +2.33.0 + diff --git a/kiran-cc-daemon.spec b/kiran-cc-daemon.spec index 5a6e131..96132f2 100644 --- a/kiran-cc-daemon.spec +++ b/kiran-cc-daemon.spec @@ -1,6 +1,6 @@ Name: kiran-cc-daemon Version: 2.3.1 -Release: 3 +Release: 4 Summary: DBus daemon for Kiran Desktop License: MulanPSL-2.0 @@ -8,6 +8,7 @@ Source0: %{name}-%{version}.tar.gz Patch0001: 0001-fix-coredump-Fix-coredump-problem-caused-by-nullpoin.patch Patch0002: 0001-fix-hidpi-Fixed-QT-font-DPI-to-avoid-double-scaling.patch +Patch0003: 0001-feature-display-The-scaling-rate-can-only-take-effec.patch BuildRequires: cmake >= 3.2 @@ -147,8 +148,11 @@ glib-compile-schemas /usr/share/glib-2.0/schemas &> /dev/nulls || : %{_libdir}/pkgconfig/kiran-cc-daemon.pc %changelog +* Tue Aug 16 2022 tangjie02 - 2.3.1-4 +- KYOS-F: The scaling rate can only take effect after logging out and logging in again. + * Mon Aug 15 2022 liuxinhao - 2.3.1-3 -- KYOS-F: Fixed QT font DPI to avoid double scaling(#I5LQSK,#I5LQQQ) +- KYOS-B: Fixed QT font DPI to avoid double scaling(#I5LQSK,#I5LQQQ) * Tue Aug 09 2022 tangjie02 - 2.3.1-2 - KYOS-B: Fix coredump problem caused by nullpointer to SPwd.