diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-05-11 23:51:47 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-05-12 18:17:36 +1000 |
commit | c72940837c24b5df99c95667befe2e4e5c64575a (patch) | |
tree | eae77f45803c33f0825ee134956b9dac292a52b1 /swaymsg/main.c | |
parent | 7f03570caf747b07f8da28e58cc8074f4f6bc33d (diff) |
Implement IPC get_seats command
Diffstat (limited to 'swaymsg/main.c')
-rw-r--r-- | swaymsg/main.c | 37 |
1 files changed, 36 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) { |