From 11fedfe00a34bc986efede88e1f2d2e8000881ab Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Sun, 20 Jan 2019 01:10:51 +0100 Subject: mate-screensaver-command: Support unlocking (--unlock) the screensaver via CLI. --- data/mate-screensaver-command.1 | 3 +++ doc/dbus-interface.xml | 9 +++++++++ src/gs-listener-dbus.c | 7 +++++++ src/mate-screensaver-command.c | 10 ++++++++++ 4 files changed, 29 insertions(+) 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 @@ + + + <literal>Unlock</literal> + + + Request that the screen be unlocked. + + + <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; @@ -70,6 +71,10 @@ static GOptionEntry entries [] = "lock", 'l', 0, G_OPTION_ARG_NONE, &do_lock, 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); -- cgit v1.2.1