From 86e1f46f92ff4c447ea32a6892ea394c6e6ef541 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 9 Jan 2015 01:43:53 +0100 Subject: [PATCH] loginctl: make "loginctl session-status" without session ID show the caller's session status Similar for user-status and seat-status. --- man/loginctl.xml | 33 ++++++++++++++++++++++----------- src/login/loginctl.c | 38 ++++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/man/loginctl.xml b/man/loginctl.xml index 7a6cc156d..095ba056a 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -209,16 +209,20 @@ - session-status ID... + session-status ID... Show terse runtime status information about one or more sessions, followed by the most recent - log data from the journal. This - function is intended to generate - human-readable output. If you are - looking for computer-parsable output, - use show-session + log data from the journal. Takes one + or more session identifiers as + parameters. If no session identifiers + are passed the status of the caller's + session is shown. This function is + intended to generate human-readable + output. If you are looking for + computer-parsable output, use + show-session instead. @@ -307,12 +311,16 @@ - user-status USER... + user-status USER... Show terse runtime status information about one or more logged in users, followed by the most - recent log data from the journal. This + recent log data from the + journal. Takes one or more user names + or numeric user IDs as parameters. If + no parameters are passed the status of + the caller's user is shown. This function is intended to generate human-readable output. If you are looking for computer-parsable output, @@ -390,12 +398,15 @@ - seat-status NAME... + seat-status NAME... Show terse runtime status information about one or more - seats. This function is - intended to generate human-readable + seats. Takes one or more seat names as + parameters. If no seat names are + passed the status of the caller's + session's seat is shown. This function + is intended to generate human-readable output. If you are looking for computer-parsable output, use show-seat diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 0fdd42b2d..c62ae326f 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -684,10 +684,14 @@ static int show_session(int argc, char *argv[], void *userdata) { pager_open_if_enabled(); - if (properties && argc <= 1) { + if (argc <= 1) { /* If not argument is specified inspect the manager * itself */ - return show_properties(bus, "/org/freedesktop/login1", &new_line); + if (properties) + return show_properties(bus, "/org/freedesktop/login1", &new_line); + + /* And in the pretty case, show data of the calling session */ + return print_session_status_info(bus, "/org/freedesktop/login1/session/self", &new_line); } for (i = 1; i < argc; i++) { @@ -736,10 +740,13 @@ static int show_user(int argc, char *argv[], void *userdata) { pager_open_if_enabled(); - if (properties && argc <= 1) { + if (argc <= 1) { /* If not argument is specified inspect the manager * itself */ - return show_properties(bus, "/org/freedesktop/login1", &new_line); + if (properties) + return show_properties(bus, "/org/freedesktop/login1", &new_line); + + return print_user_status_info(bus, "/org/freedesktop/login1/user/self", &new_line); } for (i = 1; i < argc; i++) { @@ -793,10 +800,13 @@ static int show_seat(int argc, char *argv[], void *userdata) { pager_open_if_enabled(); - if (properties && argc <= 1) { + if (argc <= 1) { /* If not argument is specified inspect the manager * itself */ - return show_properties(bus, "/org/freedesktop/login1", &new_line); + if (properties) + return show_properties(bus, "/org/freedesktop/login1", &new_line); + + return print_seat_status_info(bus, "/org/freedesktop/login1/seat/self", &new_line); } for (i = 1; i < argc; i++) { @@ -1133,7 +1143,7 @@ static int help(int argc, char *argv[], void *userdata) { " verbose, export, json, json-pretty, json-sse, cat)\n\n" "Session Commands:\n" " list-sessions List sessions\n" - " session-status ID... Show session status\n" + " session-status [ID...] Show session status\n" " show-session [ID...] Show properties of sessions or the manager\n" " activate ID Activate a session\n" " lock-session ID... Screen lock one or more sessions\n" @@ -1144,7 +1154,7 @@ static int help(int argc, char *argv[], void *userdata) { " kill-session ID... Send signal to processes of a session\n\n" "User Commands:\n" " list-users List users\n" - " user-status USER... Show user status\n" + " user-status [USER...] Show user status\n" " show-user [USER...] Show properties of users or the manager\n" " enable-linger USER... Enable linger state of one or more users\n" " disable-linger USER... Disable linger state of one or more users\n" @@ -1152,8 +1162,8 @@ static int help(int argc, char *argv[], void *userdata) { " kill-user USER... Send signal to processes of a user\n\n" "Seat Commands:\n" " list-seats List seats\n" - " seat-status NAME... Show seat status\n" - " show-seat NAME... Show properties of one or more seats\n" + " seat-status [NAME...] Show seat status\n" + " show-seat [NAME...] Show properties of seats or the manager\n" " attach NAME DEVICE... Attach one or more devices to a seat\n" " flush-devices Flush all device associations\n" " terminate-seat NAME... Terminate all sessions on one or more seats\n" @@ -1292,7 +1302,7 @@ static int loginctl_main(int argc, char *argv[], sd_bus *bus) { static const Verb verbs[] = { { "help", VERB_ANY, VERB_ANY, 0, help }, { "list-sessions", VERB_ANY, 1, VERB_DEFAULT, list_sessions }, - { "session-status", 2, VERB_ANY, 0, show_session }, + { "session-status", VERB_ANY, VERB_ANY, 0, show_session }, { "show-session", VERB_ANY, VERB_ANY, 0, show_session }, { "activate", 2, 2, 0, activate }, { "lock-session", 2, VERB_ANY, 0, activate }, @@ -1302,15 +1312,15 @@ static int loginctl_main(int argc, char *argv[], sd_bus *bus) { { "terminate-session", 2, VERB_ANY, 0, activate }, { "kill-session", 2, VERB_ANY, 0, kill_session }, { "list-users", VERB_ANY, 1, 0, list_users }, - { "user-status", 2, VERB_ANY, 0, show_user }, + { "user-status", VERB_ANY, VERB_ANY, 0, show_user }, { "show-user", VERB_ANY, VERB_ANY, 0, show_user }, { "enable-linger", 2, VERB_ANY, 0, enable_linger }, { "disable-linger", 2, VERB_ANY, 0, enable_linger }, { "terminate-user", 2, VERB_ANY, 0, terminate_user }, { "kill-user", 2, VERB_ANY, 0, kill_user }, { "list-seats", VERB_ANY, 1, 0, list_seats }, - { "seat-status", 2, VERB_ANY, 0, show_seat }, - { "show-seat", VERB_ANY, 1, 0, show_seat }, + { "seat-status", VERB_ANY, VERB_ANY, 0, show_seat }, + { "show-seat", VERB_ANY, VERB_ANY, 0, show_seat }, { "attach", 3, VERB_ANY, 0, attach }, { "flush-devices", VERB_ANY, 1, 0, flush_devices }, { "terminate-seat", 2, VERB_ANY, 0, terminate_seat }, -- 2.30.2