summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUmang Jain <umang@endlessm.com>2020-02-28 17:23:09 +0530
committerPhaedrus Leeds <matthew.leeds@endlessm.com>2020-08-26 15:35:45 -0700
commita4190caa85842de9af9880729c41b07945265cf2 (patch)
treee0133c18ff5eadb20f7ad5cd770d9d2d4d11c988
parentae44f790c4a9d17b228432e397f52bd6ec3d0312 (diff)
downloadgnome-control-center-mwleeds/disable-lock-autologin.tar.gz
panels: lock: Disable lock screen when autologin is enabledmwleeds/disable-lock-autologin
Note 2020-08-26: This patch has been in Endless OS since 2014; proposing it upstream. Presumably if you have autologin enabled you're not depending on your account password to keep your computer secure.
-rw-r--r--panels/lock/cc-lock-panel.c42
-rw-r--r--panels/lock/cc-lock-panel.ui4
-rw-r--r--panels/lock/meson.build6
3 files changed, 39 insertions, 13 deletions
diff --git a/panels/lock/cc-lock-panel.c b/panels/lock/cc-lock-panel.c
index 86800e871..f2907f041 100644
--- a/panels/lock/cc-lock-panel.c
+++ b/panels/lock/cc-lock-panel.c
@@ -24,6 +24,7 @@
#include "cc-lock-resources.h"
#include "cc-util.h"
+#include <act/act.h>
#include <gio/gdesktopappinfo.h>
#include <glib/gi18n.h>
@@ -46,6 +47,9 @@ struct _CcLockPanel
GtkSwitch *usb_protection_switch;
GDBusProxy *usb_proxy;
GtkListBoxRow *usb_protection_row;
+
+ GtkWidget *automatic_screen_lock_delay_row;
+ GtkWidget *automatic_screen_lock_row;
};
CC_PANEL_REGISTER (CcLockPanel, cc_lock_panel)
@@ -270,6 +274,8 @@ cc_lock_panel_class_init (CcLockPanelClass *klass)
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, show_notifications_switch);
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, usb_protection_switch);
gtk_widget_class_bind_template_child (widget_class, CcLockPanel, usb_protection_row);
+ gtk_widget_class_bind_template_child (widget_class, CcLockPanel, automatic_screen_lock_row);
+ gtk_widget_class_bind_template_child (widget_class, CcLockPanel, automatic_screen_lock_delay_row);
gtk_widget_class_bind_template_callback (widget_class, on_blank_screen_delay_changed_cb);
gtk_widget_class_bind_template_callback (widget_class, on_lock_combo_changed_cb);
@@ -279,6 +285,9 @@ static void
cc_lock_panel_init (CcLockPanel *self)
{
guint value;
+ ActUserManager *um;
+ ActUser *user;
+ gboolean automatic_login;
g_resources_register (cc_lock_get_resource ());
@@ -295,17 +304,30 @@ cc_lock_panel_init (CcLockPanel *self)
self->notification_settings = g_settings_new ("org.gnome.desktop.notifications");
self->session_settings = g_settings_new ("org.gnome.desktop.session");
- g_settings_bind (self->lock_settings,
- "lock-enabled",
- self->automatic_screen_lock_switch,
- "active",
- G_SETTINGS_BIND_DEFAULT);
+ um = act_user_manager_get_default ();
+ user = act_user_manager_get_user_by_id (um, getuid ());
+ automatic_login = act_user_get_automatic_login (user);
- g_settings_bind (self->lock_settings,
- "lock-enabled",
- self->lock_after_combo,
- "sensitive",
- G_SETTINGS_BIND_GET);
+ if (automatic_login)
+ {
+ gtk_switch_set_active (self->automatic_screen_lock_switch, FALSE);
+ gtk_widget_set_sensitive (self->automatic_screen_lock_row, FALSE);
+ gtk_widget_set_sensitive (self->automatic_screen_lock_delay_row, FALSE);
+ }
+ else
+ {
+ g_settings_bind (self->lock_settings,
+ "lock-enabled",
+ self->automatic_screen_lock_switch,
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ g_settings_bind (self->lock_settings,
+ "lock-enabled",
+ self->lock_after_combo,
+ "sensitive",
+ G_SETTINGS_BIND_GET);
+ }
set_lock_value_for_combo (self->lock_after_combo, self);
diff --git a/panels/lock/cc-lock-panel.ui b/panels/lock/cc-lock-panel.ui
index f32dde111..3fdf537d3 100644
--- a/panels/lock/cc-lock-panel.ui
+++ b/panels/lock/cc-lock-panel.ui
@@ -60,7 +60,7 @@
<!-- Automatic Screen Lock row -->
<child>
- <object class="HdyActionRow">
+ <object class="HdyActionRow" id="automatic_screen_lock_row">
<property name="visible">true</property>
<property name="title" translatable="yes">Automatic Screen _Lock</property>
<property name="activatable-widget">automatic_screen_lock_switch</property>
@@ -77,7 +77,7 @@
<!-- Automatic Screen Lock Delay row -->
<child>
- <object class="HdyActionRow">
+ <object class="HdyActionRow" id="automatic_screen_lock_delay_row">
<property name="visible">true</property>
<property name="title" translatable="yes">Automatic _Screen Lock Delay</property>
<property name="subtitle" translatable="yes">Period after the screen blanks when the screen is automatically locked.</property>
diff --git a/panels/lock/meson.build b/panels/lock/meson.build
index 0661af4fa..10ab3aca2 100644
--- a/panels/lock/meson.build
+++ b/panels/lock/meson.build
@@ -29,12 +29,16 @@ sources += gnome.compile_resources(
export: true
)
+deps = common_deps + [
+ accounts_dep,
+]
+
cflags += '-DGNOMELOCALEDIR="@0@"'.format(control_center_localedir)
panels_libs += static_library(
cappletname,
sources: sources,
include_directories: [top_inc, common_inc],
- dependencies: common_deps,
+ dependencies: deps,
c_args: cflags
)