Merge pull request #1959 from RyanDwyer/ipc-get-seats

Implement IPC get_seats command
This commit is contained in:
Drew DeVault 2018-05-12 09:00:32 -04:00 committed by GitHub
commit 51b0b25587
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 93 additions and 5 deletions

View file

@ -267,6 +267,31 @@ json_object *ipc_json_describe_input(struct sway_input_device *device) {
return object;
}
json_object *ipc_json_describe_seat(struct sway_seat *seat) {
if (!(sway_assert(seat, "Seat must not be null"))) {
return NULL;
}
json_object *object = json_object_new_object();
struct sway_container *focus = seat_get_focus(seat);
json_object_object_add(object, "name",
json_object_new_string(seat->wlr_seat->name));
json_object_object_add(object, "capabilities",
json_object_new_int(seat->wlr_seat->capabilities));
json_object_object_add(object, "focus",
json_object_new_int(focus ? focus->id : 0));
json_object *devices = json_object_new_array();
struct sway_seat_device *device = NULL;
wl_list_for_each(device, &seat->devices, link) {
json_object_array_add(devices, ipc_json_describe_input(device->input_device));
}
json_object_object_add(object, "devices", devices);
return object;
}
json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
if (!sway_assert(bar, "Bar must not be NULL")) {
return NULL;

View file

@ -546,6 +546,19 @@ void ipc_client_handle_command(struct ipc_client *client) {
goto exit_cleanup;
}
case IPC_GET_SEATS:
{
json_object *seats = json_object_new_array();
struct sway_seat *seat = NULL;
wl_list_for_each(seat, &input_manager->seats, link) {
json_object_array_add(seats, ipc_json_describe_seat(seat));
}
const char *json_string = json_object_to_json_string(seats);
ipc_send_reply(client, json_string, (uint32_t)strlen(json_string));
json_object_put(seats); // free
goto exit_cleanup;
}
case IPC_GET_TREE:
{
json_object *tree =

View file

@ -195,6 +195,9 @@ The following commands are available within this block:
**outputs** <enabled|disabled>::
Controls GET_OUTPUTS.
**seats** <enabled|disabled>::
Controls GET_SEATS.
**tree** <enabled|disabled>::
Controls GET_TREE.