From a048ade79cb1c6deb49582743960d31791974828 Mon Sep 17 00:00:00 2001 From: lenemter Date: Tue, 13 Jun 2023 02:05:34 +0900 Subject: [PATCH 1/3] Use user's mouse settings --- ...mentary.SettingsDaemon.AccountsService.xml | 23 ++++++++++++++++ src/AccountsService.vala | 6 +++++ src/Backends/MouseSettings.vala | 26 +++++++++++++------ 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/data/io.elementary.SettingsDaemon.AccountsService.xml b/data/io.elementary.SettingsDaemon.AccountsService.xml index d1640c38..ad7ef00d 100644 --- a/data/io.elementary.SettingsDaemon.AccountsService.xml +++ b/data/io.elementary.SettingsDaemon.AccountsService.xml @@ -24,5 +24,28 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/AccountsService.vala b/src/AccountsService.vala index 856cc974..68ec9625 100644 --- a/src/AccountsService.vala +++ b/src/AccountsService.vala @@ -27,7 +27,13 @@ public interface SettingsDaemon.AccountsService : Object { public abstract KeyboardLayout[] keyboard_layouts { owned get; set; } public abstract uint active_keyboard_layout { get; set; } + public abstract bool left_handed { get; set; } + public abstract bool mouse_natural_scroll { get; set; } + public abstract bool touchpad_natural_scroll { get; set; } + public abstract double mouse_speed { get; set; } + public abstract double touchpad_speed { get; set; } + public abstract int accel_profile { owned get; set; } } [DBus (name = "io.elementary.pantheon.AccountsService")] diff --git a/src/Backends/MouseSettings.vala b/src/Backends/MouseSettings.vala index 6b1fe703..b3f31928 100644 --- a/src/Backends/MouseSettings.vala +++ b/src/Backends/MouseSettings.vala @@ -22,6 +22,7 @@ public class SettingsDaemon.Backends.MouseSettings : GLib.Object { public unowned AccountsService accounts_service { get; construct; } private GLib.Settings mouse_settings; + private GLib.Settings touchpad_settings; public MouseSettings (AccountsService accounts_service) { Object (accounts_service: accounts_service); @@ -29,25 +30,34 @@ public class SettingsDaemon.Backends.MouseSettings : GLib.Object { construct { mouse_settings = new GLib.Settings ("org.gnome.desktop.peripherals.mouse"); - - if (accounts_service.left_handed != mouse_settings.get_boolean ("left-handed")) { - sync_accountsservice_to_gsettings (); - } + touchpad_settings = new GLib.Settings ("org.gnome.desktop.peripherals.touchpad"); sync_gsettings_to_accountsservice (); mouse_settings.changed.connect ((key) => { - if (key == "left-handed") { + if (key == "accel-profile" || + key == "left-handed" || + key == "natural-scroll" || + key == "speed") { sync_gsettings_to_accountsservice (); } }); - } - private void sync_accountsservice_to_gsettings () { - mouse_settings.set_boolean ("left-handed", accounts_service.left_handed); + touchpad_settings.changed.connect ((key) => { + if (key == "natural-scroll" || + key == "speed") { + sync_gsettings_to_accountsservice (); + } + }); } private void sync_gsettings_to_accountsservice () { + accounts_service.accel_profile = mouse_settings.get_enum ("accel-profile"); accounts_service.left_handed = mouse_settings.get_boolean ("left-handed"); + accounts_service.mouse_natural_scroll = mouse_settings.get_boolean ("natural-scroll"); + accounts_service.mouse_speed = mouse_settings.get_double ("speed"); + + accounts_service.touchpad_natural_scroll = touchpad_settings.get_boolean ("natural-scroll"); + accounts_service.touchpad_speed = touchpad_settings.get_double ("speed"); } } From b10d55f5ee00ac4097763bdb7d7bf4b23266ac08 Mon Sep 17 00:00:00 2001 From: lenemter Date: Thu, 15 Jun 2023 18:41:33 +0900 Subject: [PATCH 2/3] More settings --- ...mentary.SettingsDaemon.AccountsService.xml | 50 ++++++++++++++++--- src/AccountsService.vala | 14 +++++- src/Backends/MouseSettings.vala | 31 ++++++++++-- 3 files changed, 82 insertions(+), 13 deletions(-) diff --git a/data/io.elementary.SettingsDaemon.AccountsService.xml b/data/io.elementary.SettingsDaemon.AccountsService.xml index ad7ef00d..d16950fc 100644 --- a/data/io.elementary.SettingsDaemon.AccountsService.xml +++ b/data/io.elementary.SettingsDaemon.AccountsService.xml @@ -24,28 +24,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + + + - - + + + + + + \ No newline at end of file diff --git a/src/AccountsService.vala b/src/AccountsService.vala index 68ec9625..2dfabd72 100644 --- a/src/AccountsService.vala +++ b/src/AccountsService.vala @@ -29,11 +29,21 @@ public interface SettingsDaemon.AccountsService : Object { public abstract uint active_keyboard_layout { get; set; } public abstract bool left_handed { get; set; } + public abstract int accel_profile { get; set; } + public abstract bool mouse_natural_scroll { get; set; } - public abstract bool touchpad_natural_scroll { get; set; } public abstract double mouse_speed { get; set; } + + public abstract int touchpad_click_method { get; set; } + public abstract bool touchpad_disable_while_typing { get; set; } + public abstract bool touchpad_edge_scrolling { get; set; } + public abstract bool touchpad_natural_scroll { get; set; } + public abstract int touchpad_send_events { get; set; } public abstract double touchpad_speed { get; set; } - public abstract int accel_profile { owned get; set; } + public abstract bool touchpad_tap_to_click { get; set; } + public abstract bool touchpad_two_finger_scrolling { get; set; } + + public abstract int cursor_size { get; set; } } [DBus (name = "io.elementary.pantheon.AccountsService")] diff --git a/src/Backends/MouseSettings.vala b/src/Backends/MouseSettings.vala index b3f31928..d0fac230 100644 --- a/src/Backends/MouseSettings.vala +++ b/src/Backends/MouseSettings.vala @@ -23,6 +23,7 @@ public class SettingsDaemon.Backends.MouseSettings : GLib.Object { private GLib.Settings mouse_settings; private GLib.Settings touchpad_settings; + private GLib.Settings interface_settings; public MouseSettings (AccountsService accounts_service) { Object (accounts_service: accounts_service); @@ -31,6 +32,7 @@ public class SettingsDaemon.Backends.MouseSettings : GLib.Object { construct { mouse_settings = new GLib.Settings ("org.gnome.desktop.peripherals.mouse"); touchpad_settings = new GLib.Settings ("org.gnome.desktop.peripherals.touchpad"); + interface_settings = new GLib.Settings ("org.gnome.desktop.interface"); sync_gsettings_to_accountsservice (); @@ -44,20 +46,41 @@ public class SettingsDaemon.Backends.MouseSettings : GLib.Object { }); touchpad_settings.changed.connect ((key) => { - if (key == "natural-scroll" || - key == "speed") { + if (key == "click-method" || + key == "disable-while-typing" || + key == "edge-scrolling-enabled" || + key == "natural-scroll" || + key == "send-events" || + key == "speed" || + key == "tap-to-click" || + key == "two-finger-scrolling-enabled") { + sync_gsettings_to_accountsservice (); + } + }); + + interface_settings.changed.connect ((key) => { + if (key == "cursor-size") { sync_gsettings_to_accountsservice (); } }); } private void sync_gsettings_to_accountsservice () { - accounts_service.accel_profile = mouse_settings.get_enum ("accel-profile"); accounts_service.left_handed = mouse_settings.get_boolean ("left-handed"); + accounts_service.accel_profile = mouse_settings.get_enum ("accel-profile"); + accounts_service.mouse_natural_scroll = mouse_settings.get_boolean ("natural-scroll"); accounts_service.mouse_speed = mouse_settings.get_double ("speed"); - + + accounts_service.touchpad_click_method = touchpad_settings.get_enum ("click-method"); + accounts_service.touchpad_disable_while_typing = touchpad_settings.get_boolean ("disable-while-typing"); + accounts_service.touchpad_edge_scrolling = touchpad_settings.get_boolean ("edge-scrolling-enabled"); accounts_service.touchpad_natural_scroll = touchpad_settings.get_boolean ("natural-scroll"); + accounts_service.touchpad_send_events = touchpad_settings.get_enum ("send-events"); accounts_service.touchpad_speed = touchpad_settings.get_double ("speed"); + accounts_service.touchpad_tap_to_click = touchpad_settings.get_boolean ("tap-to-click"); + accounts_service.touchpad_two_finger_scrolling = touchpad_settings.get_boolean ("two-finger-scrolling-enabled"); + + accounts_service.cursor_size = interface_settings.get_int ("cursor-size"); } } From e8a026ddcb66cedd02cc723e0d2ab67d29258a1c Mon Sep 17 00:00:00 2001 From: lenemter Date: Thu, 15 Jun 2023 18:43:24 +0900 Subject: [PATCH 3/3] Fix lint --- src/Backends/MouseSettings.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Backends/MouseSettings.vala b/src/Backends/MouseSettings.vala index d0fac230..56d4c19a 100644 --- a/src/Backends/MouseSettings.vala +++ b/src/Backends/MouseSettings.vala @@ -68,10 +68,10 @@ public class SettingsDaemon.Backends.MouseSettings : GLib.Object { private void sync_gsettings_to_accountsservice () { accounts_service.left_handed = mouse_settings.get_boolean ("left-handed"); accounts_service.accel_profile = mouse_settings.get_enum ("accel-profile"); - + accounts_service.mouse_natural_scroll = mouse_settings.get_boolean ("natural-scroll"); accounts_service.mouse_speed = mouse_settings.get_double ("speed"); - + accounts_service.touchpad_click_method = touchpad_settings.get_enum ("click-method"); accounts_service.touchpad_disable_while_typing = touchpad_settings.get_boolean ("disable-while-typing"); accounts_service.touchpad_edge_scrolling = touchpad_settings.get_boolean ("edge-scrolling-enabled");