aboutsummaryrefslogtreecommitdiff
path: root/swaymsg
diff options
context:
space:
mode:
Diffstat (limited to 'swaymsg')
-rw-r--r--swaymsg/main.c37
-rw-r--r--swaymsg/swaymsg.1.txt3
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.