summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/mate-screensaver-command.13
-rw-r--r--doc/dbus-interface.xml9
-rw-r--r--src/gs-listener-dbus.c7
-rw-r--r--src/mate-screensaver-command.c10
4 files changed, 29 insertions, 0 deletions
diff --git a/data/mate-screensaver-command.1 b/data/mate-screensaver-command.1
index f02c735..6aa60a5 100644
--- a/data/mate-screensaver-command.1
+++ b/data/mate-screensaver-command.1
@@ -35,6 +35,9 @@ Query the length of time the screensaver has been active
.B \-l, \-\-lock
Tells the running screensaver process to lock the screen immediately
.TP
+.B \-u, \-\-unlock
+Tells the running screensaver process to unlock the screen immediately
+.TP
.B \-c, \-\-cycle
If the screensaver is active then switch to another graphics demo
.TP
diff --git a/doc/dbus-interface.xml b/doc/dbus-interface.xml
index d245bf1..207d849 100644
--- a/doc/dbus-interface.xml
+++ b/doc/dbus-interface.xml
@@ -52,6 +52,15 @@
</para>
</sect2>
+ <sect2 id="gs-method-Unlock">
+ <title>
+ <literal>Unlock</literal>
+ </title>
+ <para>
+ Request that the screen be unlocked.
+ </para>
+ </sect2>
+
<sect2 id="gs-method-Cycle">
<title>
<literal>Cycle</literal>
diff --git a/src/gs-listener-dbus.c b/src/gs-listener-dbus.c
index d398601..a37e3f9 100644
--- a/src/gs-listener-dbus.c
+++ b/src/gs-listener-dbus.c
@@ -1373,6 +1373,8 @@ do_introspect (DBusConnection *connection,
" <interface name=\"org.mate.ScreenSaver\">\n"
" <method name=\"Lock\">\n"
" </method>\n"
+ " <method name=\"Unlock\">\n"
+ " </method>\n"
" <method name=\"Cycle\">\n"
" </method>\n"
" <method name=\"SimulateUserActivity\">\n"
@@ -1465,6 +1467,11 @@ listener_dbus_handle_session_message (DBusConnection *connection,
g_signal_emit (listener, signals [LOCK], 0);
return DBUS_HANDLER_RESULT_HANDLED;
}
+ if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Unlock"))
+ {
+ gs_listener_set_active (listener, FALSE);
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
if (dbus_message_is_method_call (message, GS_LISTENER_SERVICE, "Quit"))
{
g_signal_emit (listener, signals [QUIT], 0);
diff --git a/src/mate-screensaver-command.c b/src/mate-screensaver-command.c
index 11feb8b..60c6001 100644
--- a/src/mate-screensaver-command.c
+++ b/src/mate-screensaver-command.c
@@ -39,6 +39,7 @@
static gboolean do_quit = FALSE;
static gboolean do_lock = FALSE;
+static gboolean do_unlock = FALSE;
static gboolean do_cycle = FALSE;
static gboolean do_activate = FALSE;
static gboolean do_deactivate = FALSE;
@@ -71,6 +72,10 @@ static GOptionEntry entries [] =
N_("Tells the running screensaver process to lock the screen immediately"), NULL
},
{
+ "unlock", 'u', 0, G_OPTION_ARG_NONE, &do_unlock,
+ N_("Tells the running screensaver process to unlock the screen immediately"), NULL
+ },
+ {
"cycle", 'c', 0, G_OPTION_ARG_NONE, &do_cycle,
N_("If the screensaver is active then switch to another graphics demo"), NULL
},
@@ -423,6 +428,11 @@ do_command (DBusConnection *connection)
reply = screensaver_send_message_void (connection, "Lock", FALSE);
}
+ if (do_unlock)
+ {
+ reply = screensaver_send_message_void (connection, "Unlock", FALSE);
+ }
+
if (do_cycle)
{
reply = screensaver_send_message_void (connection, "Cycle", FALSE);