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