summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/org.mate.session.gschema.xml.in.in6
-rw-r--r--mate-session/gsm-logout-dialog.c32
2 files changed, 28 insertions, 10 deletions
diff --git a/data/org.mate.session.gschema.xml.in.in b/data/org.mate.session.gschema.xml.in.in
index 2415c67..4ce615e 100644
--- a/data/org.mate.session.gschema.xml.in.in
+++ b/data/org.mate.session.gschema.xml.in.in
@@ -15,6 +15,12 @@
<_summary>Logout prompt</_summary>
<_description>If enabled, mate-session will prompt the user before ending a session.</_description>
</key>
+ <key name="logout-timeout" type="i">
+ <default>60</default>
+ <range min="0" max="300"/>
+ <_summary>Logout timeout</_summary>
+ <_description>If logout prompt is enabled, this set the timeout in seconds before logout automatically. If 0, automatic logout is disabled.</_description>
+ </key>
<key name="idle-delay" type="i">
<default>5</default>
<_summary>Time before session is considered idle</_summary>
diff --git a/mate-session/gsm-logout-dialog.c b/mate-session/gsm-logout-dialog.c
index da3d651..8b48ced 100644
--- a/mate-session/gsm-logout-dialog.c
+++ b/mate-session/gsm-logout-dialog.c
@@ -41,11 +41,12 @@
#define GSM_LOGOUT_DIALOG_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_LOGOUT_DIALOG, GsmLogoutDialogPrivate))
-#define AUTOMATIC_ACTION_TIMEOUT 60
-
#define GSM_ICON_LOGOUT "system-log-out"
#define GSM_ICON_SHUTDOWN "system-shutdown"
+#define SESSION_SCHEMA "org.mate.session"
+#define KEY_LOGOUT_TIMEOUT "logout-timeout"
+
typedef enum {
GSM_DIALOG_LOGOUT_TYPE_LOGOUT,
GSM_DIALOG_LOGOUT_TYPE_SHUTDOWN
@@ -397,18 +398,29 @@ gsm_logout_dialog_timeout (gpointer data)
static void
gsm_logout_dialog_set_timeout (GsmLogoutDialog *logout_dialog)
{
- logout_dialog->priv->timeout = AUTOMATIC_ACTION_TIMEOUT;
+ GSettings *settings;
- /* Sets the secondary text */
- gsm_logout_dialog_timeout (logout_dialog);
+ settings = g_settings_new (SESSION_SCHEMA);
- if (logout_dialog->priv->timeout_id != 0) {
- g_source_remove (logout_dialog->priv->timeout_id);
+ logout_dialog->priv->timeout = g_settings_get_int (settings, KEY_LOGOUT_TIMEOUT);
+
+ if (logout_dialog->priv->timeout > 0) {
+ /* Sets the secondary text */
+ gsm_logout_dialog_timeout (logout_dialog);
+
+ if (logout_dialog->priv->timeout_id != 0) {
+ g_source_remove (logout_dialog->priv->timeout_id);
+ }
+
+ logout_dialog->priv->timeout_id = g_timeout_add (1000,
+ gsm_logout_dialog_timeout,
+ logout_dialog);
+ }
+ else {
+ gtk_widget_hide (logout_dialog->priv->progressbar);
}
- logout_dialog->priv->timeout_id = g_timeout_add (1000,
- gsm_logout_dialog_timeout,
- logout_dialog);
+ g_object_unref (settings);
}
static GtkWidget *