static bool arg_all = false;
static bool arg_full = false;
static bool arg_no_pager = false;
+static bool arg_legend = true;
static const char *arg_kill_who = NULL;
static int arg_signal = SIGTERM;
static BusTransport arg_transport = BUS_TRANSPORT_LOCAL;
if (r < 0)
return bus_log_parse_error(r);
- printf("%10s %10s %-16s %-16s\n", "SESSION", "UID", "USER", "SEAT");
+ if (arg_legend)
+ printf("%10s %10s %-16s %-16s\n", "SESSION", "UID", "USER", "SEAT");
while ((r = sd_bus_message_read(reply, "(susso)", &id, &uid, &user, &seat, &object)) > 0) {
printf("%10s %10u %-16s %-16s\n", id, (unsigned) uid, user, seat);
if (r < 0)
return bus_log_parse_error(r);
- printf("\n%u sessions listed.\n", k);
+ if (arg_legend)
+ printf("\n%u sessions listed.\n", k);
return 0;
}
if (r < 0)
return bus_log_parse_error(r);
- printf("%10s %-16s\n", "UID", "USER");
+ if (arg_legend)
+ printf("%10s %-16s\n", "UID", "USER");
while ((r = sd_bus_message_read(reply, "(uso)", &uid, &user, &object)) > 0) {
printf("%10u %-16s\n", (unsigned) uid, user);
if (r < 0)
return bus_log_parse_error(r);
- printf("\n%u users listed.\n", k);
+ if (arg_legend)
+ printf("\n%u users listed.\n", k);
return 0;
}
if (r < 0)
return bus_log_parse_error(r);
- printf("%-16s\n", "SEAT");
+ if (arg_legend)
+ printf("%-16s\n", "SEAT");
while ((r = sd_bus_message_read(reply, "(so)", &seat, &object)) > 0) {
printf("%-16s\n", seat);
if (r < 0)
return bus_log_parse_error(r);
- printf("\n%u seats listed.\n", k);
+ if (arg_legend)
+ printf("\n%u seats listed.\n", k);
return 0;
}
const char *class;
const char *state;
const char *scope;
+ const char *desktop;
} SessionStatusInfo;
typedef struct UserStatusInfo {
{ "RemoteHost", "s", NULL, offsetof(SessionStatusInfo, remote_host) },
{ "RemoteUser", "s", NULL, offsetof(SessionStatusInfo, remote_user) },
{ "Service", "s", NULL, offsetof(SessionStatusInfo, service) },
+ { "Desktop", "s", NULL, offsetof(SessionStatusInfo, desktop) },
{ "Type", "s", NULL, offsetof(SessionStatusInfo, type) },
{ "Class", "s", NULL, offsetof(SessionStatusInfo, class) },
{ "Scope", "s", NULL, offsetof(SessionStatusInfo, scope) },
{ "Remote", "b", NULL, offsetof(SessionStatusInfo, remote) },
{ "Timestamp", "t", NULL, offsetof(SessionStatusInfo, timestamp) },
{ "User", "(uo)", prop_map_first_of_struct, offsetof(SessionStatusInfo, uid) },
- { "Seat", "(so)", prop_map_first_of_struct, offsetof(SessionStatusInfo, id) },
+ { "Seat", "(so)", prop_map_first_of_struct, offsetof(SessionStatusInfo, seat) },
{}
};
printf("\n");
}
- if (i.seat) {
+ if (!isempty(i.seat)) {
printf("\t Seat: %s", i.seat);
if (i.vtnr > 0)
printf("\n");
} else if (i.type) {
- printf("\t Type: %s\n", i.type);
+ printf("\t Type: %s", i.type);
if (i.class)
printf("; class %s", i.class);
+
+ printf("\n");
} else if (i.class)
printf("\t Class: %s\n", i.class);
+ if (!isempty(i.desktop))
+ printf("\t Desktop: %s\n", i.desktop);
+
if (i.state)
printf("\t State: %s\n", i.state);
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
+ " --no-legend Do not show the headers and footers\n"
" --no-ask-password Don't prompt for password\n"
" -H --host=[USER@]HOST Operate on remote host\n"
" -M --machine=CONTAINER Operate on local container\n"
enum {
ARG_VERSION = 0x100,
ARG_NO_PAGER,
+ ARG_NO_LEGEND,
ARG_KILL_WHO,
ARG_NO_ASK_PASSWORD,
};
{ "all", no_argument, NULL, 'a' },
{ "full", no_argument, NULL, 'l' },
{ "no-pager", no_argument, NULL, ARG_NO_PAGER },
+ { "no-legend", no_argument, NULL, ARG_NO_LEGEND },
{ "kill-who", required_argument, NULL, ARG_KILL_WHO },
{ "signal", required_argument, NULL, 's' },
{ "host", required_argument, NULL, 'H' },
arg_no_pager = true;
break;
+ case ARG_NO_LEGEND:
+ arg_legend = false;
+ break;
+
case ARG_NO_ASK_PASSWORD:
arg_ask_password = false;
break;