diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-05-12 09:01:16 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-05-12 09:01:16 -0400 |
commit | 2da685e913432716f55cd537fd3d64f3fb3cc09a (patch) | |
tree | c986cca12ecdb3e3ac4d94d38205028788315889 /swaymsg | |
parent | a2d7079b263290ccc7259a0d16749dbd0baae821 (diff) | |
parent | 51b0b25587d69593eb77e3337e3fa459c1024f5c (diff) |
Merge remote-tracking branch 'origin/master' into scdoc
Diffstat (limited to 'swaymsg')
-rw-r--r-- | swaymsg/main.c | 37 | ||||
-rw-r--r-- | swaymsg/swaymsg.1.txt | 3 |
2 files changed, 39 insertions, 1 deletions
diff --git a/swaymsg/main.c b/swaymsg/main.c index 7e3622d9..89af7345 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c @@ -106,6 +106,35 @@ static void pretty_print_input(json_object *i) { json_object_get_int(vendor)); } +static void pretty_print_seat(json_object *i) { + json_object *name, *capabilities, *devices; + json_object_object_get_ex(i, "name", &name); + json_object_object_get_ex(i, "capabilities", &capabilities); + json_object_object_get_ex(i, "devices", &devices); + + const char *fmt = + "Seat: %s\n" + " Capabilities: %d\n"; + + printf(fmt, json_object_get_string(name), + json_object_get_int(capabilities)); + + size_t devices_len = json_object_array_length(devices); + if (devices_len > 0) { + printf(" Devices:\n"); + for (size_t i = 0; i < devices_len; ++i) { + json_object *device = json_object_array_get_idx(devices, i); + + json_object *device_name; + json_object_object_get_ex(device, "name", &device_name); + + printf(" %s\n", json_object_get_string(device_name)); + } + } + + printf("\n"); +} + static void pretty_print_output(json_object *o) { json_object *name, *rect, *focused, *active, *ws; json_object_object_get_ex(o, "name", &name); @@ -211,7 +240,8 @@ static void pretty_print_clipboard(json_object *v) { static void pretty_print(int type, json_object *resp) { if (type != IPC_COMMAND && type != IPC_GET_WORKSPACES && type != IPC_GET_INPUTS && type != IPC_GET_OUTPUTS && - type != IPC_GET_VERSION && type != IPC_GET_CLIPBOARD) { + type != IPC_GET_VERSION && type != IPC_GET_CLIPBOARD && + type != IPC_GET_SEATS) { printf("%s\n", json_object_to_json_string_ext(resp, JSON_C_TO_STRING_PRETTY | JSON_C_TO_STRING_SPACED)); return; @@ -244,6 +274,9 @@ static void pretty_print(int type, json_object *resp) { case IPC_GET_OUTPUTS: pretty_print_output(obj); break; + case IPC_GET_SEATS: + pretty_print_seat(obj); + break; } } } @@ -324,6 +357,8 @@ int main(int argc, char **argv) { type = IPC_COMMAND; } else if (strcasecmp(cmdtype, "get_workspaces") == 0) { type = IPC_GET_WORKSPACES; + } else if (strcasecmp(cmdtype, "get_seats") == 0) { + type = IPC_GET_SEATS; } else if (strcasecmp(cmdtype, "get_inputs") == 0) { type = IPC_GET_INPUTS; } else if (strcasecmp(cmdtype, "get_outputs") == 0) { diff --git a/swaymsg/swaymsg.1.txt b/swaymsg/swaymsg.1.txt index abc517c8..52209b12 100644 --- a/swaymsg/swaymsg.1.txt +++ b/swaymsg/swaymsg.1.txt @@ -48,6 +48,9 @@ IPC Message Types *get_workspaces*:: Gets a JSON-encoded list of workspaces and their status. +*get_seats*:: + Gets a JSON-encoded list of current seats. + *get_inputs*:: Gets a JSON-encoded list of current inputs. |