logind: add new loginctl lock-sessions command
This commit is contained in:
parent
fa2b196da1
commit
7212a8a99e
2
TODO
2
TODO
|
@ -39,6 +39,8 @@ Bugfixes:
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
|
* wiki: document new logind LockSessions() call
|
||||||
|
|
||||||
* initialize the hostname from the fs label of /, if /etc/hostname does not exist?
|
* initialize the hostname from the fs label of /, if /etc/hostname does not exist?
|
||||||
|
|
||||||
* logind: different policy actions for idle, suspend, shutdown blockers: allow idle blockers by default, don't allow suspend blockers by default
|
* logind: different policy actions for idle, suspend, shutdown blockers: allow idle blockers by default, don't allow suspend blockers by default
|
||||||
|
|
|
@ -242,6 +242,14 @@
|
||||||
sessions, if the session supports it.</para></listitem>
|
sessions, if the session supports it.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><command>lock-sessions</command></term>
|
||||||
|
|
||||||
|
<listitem><para>Activate the screen
|
||||||
|
lock on all current sessions
|
||||||
|
supporting it.</para></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><command>terminate-session [ID...]</command></term>
|
<term><command>terminate-session [ID...]</command></term>
|
||||||
|
|
||||||
|
|
|
@ -43,4 +43,6 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}
|
||||||
TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
|
TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
|
||||||
TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
|
TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
|
||||||
|
|
||||||
|
SUBSYSTEM=="input", ATTR{name}=="Wiebetech LLC Wiebetech", RUN+="@rootbindir@/loginctl lock-sessions"
|
||||||
|
|
||||||
LABEL="seat_end"
|
LABEL="seat_end"
|
||||||
|
|
|
@ -1604,6 +1604,48 @@ finish:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lock_sessions(DBusConnection *bus, char **args, unsigned n) {
|
||||||
|
DBusMessage *m = NULL, *reply = NULL;
|
||||||
|
int ret = 0;
|
||||||
|
DBusError error;
|
||||||
|
|
||||||
|
assert(bus);
|
||||||
|
assert(args);
|
||||||
|
|
||||||
|
dbus_error_init(&error);
|
||||||
|
|
||||||
|
polkit_agent_open_if_enabled();
|
||||||
|
|
||||||
|
m = dbus_message_new_method_call(
|
||||||
|
"org.freedesktop.login1",
|
||||||
|
"/org/freedesktop/login1",
|
||||||
|
"org.freedesktop.login1.Manager",
|
||||||
|
"LockSessions");
|
||||||
|
if (!m) {
|
||||||
|
log_error("Could not allocate message.");
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error);
|
||||||
|
if (!reply) {
|
||||||
|
log_error("Failed to issue method call: %s", bus_error_message(&error));
|
||||||
|
ret = -EIO;
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
finish:
|
||||||
|
if (m)
|
||||||
|
dbus_message_unref(m);
|
||||||
|
|
||||||
|
if (reply)
|
||||||
|
dbus_message_unref(reply);
|
||||||
|
|
||||||
|
dbus_error_free(&error);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static int terminate_seat(DBusConnection *bus, char **args, unsigned n) {
|
static int terminate_seat(DBusConnection *bus, char **args, unsigned n) {
|
||||||
DBusMessage *m = NULL;
|
DBusMessage *m = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -1679,6 +1721,7 @@ static int help(void) {
|
||||||
" activate [ID] Activate a session\n"
|
" activate [ID] Activate a session\n"
|
||||||
" lock-session [ID...] Screen lock one or more sessions\n"
|
" lock-session [ID...] Screen lock one or more sessions\n"
|
||||||
" unlock-session [ID...] Screen unlock one or more sessions\n"
|
" unlock-session [ID...] Screen unlock one or more sessions\n"
|
||||||
|
" lock-sessions Screen lock all current sessions\n"
|
||||||
" terminate-session [ID...] Terminate one or more sessions\n"
|
" terminate-session [ID...] Terminate one or more sessions\n"
|
||||||
" kill-session [ID...] Send signal to processes of a session\n"
|
" kill-session [ID...] Send signal to processes of a session\n"
|
||||||
" list-users List users\n"
|
" list-users List users\n"
|
||||||
|
@ -1820,6 +1863,7 @@ static int loginctl_main(DBusConnection *bus, int argc, char *argv[], DBusError
|
||||||
{ "activate", EQUAL, 2, activate },
|
{ "activate", EQUAL, 2, activate },
|
||||||
{ "lock-session", MORE, 2, activate },
|
{ "lock-session", MORE, 2, activate },
|
||||||
{ "unlock-session", MORE, 2, activate },
|
{ "unlock-session", MORE, 2, activate },
|
||||||
|
{ "lock-sessions", EQUAL, 1, lock_sessions },
|
||||||
{ "terminate-session", MORE, 2, activate },
|
{ "terminate-session", MORE, 2, activate },
|
||||||
{ "kill-session", MORE, 2, kill_session },
|
{ "kill-session", MORE, 2, kill_session },
|
||||||
{ "list-users", EQUAL, 1, list_users },
|
{ "list-users", EQUAL, 1, list_users },
|
||||||
|
|
Loading…
Reference in New Issue