|
|
|
@ -9,6 +9,7 @@
|
|
|
|
|
#include "sway/input/seat.h"
|
|
|
|
|
#include <wlr/types/wlr_box.h>
|
|
|
|
|
#include <wlr/types/wlr_output.h>
|
|
|
|
|
#include "wlr-layer-shell-unstable-v1-protocol.h"
|
|
|
|
|
|
|
|
|
|
json_object *ipc_json_get_version() {
|
|
|
|
|
int major = 0, minor = 0, patch = 0;
|
|
|
|
@ -198,3 +199,136 @@ json_object *ipc_json_describe_input(struct sway_input_device *device) {
|
|
|
|
|
|
|
|
|
|
return object;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
|
|
|
|
|
if (!sway_assert(bar, "Bar must not be NULL")) {
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
json_object *json = json_object_new_object();
|
|
|
|
|
json_object_object_add(json, "id", json_object_new_string(bar->id));
|
|
|
|
|
json_object_object_add(json, "mode", json_object_new_string(bar->mode));
|
|
|
|
|
json_object_object_add(json, "hidden_state",
|
|
|
|
|
json_object_new_string(bar->hidden_state));
|
|
|
|
|
json_object_object_add(json, "position",
|
|
|
|
|
json_object_new_string(bar->position));
|
|
|
|
|
json_object_object_add(json, "status_command",
|
|
|
|
|
json_object_new_string(bar->status_command));
|
|
|
|
|
json_object_object_add(json, "font",
|
|
|
|
|
json_object_new_string((bar->font) ? bar->font : config->font));
|
|
|
|
|
if (bar->separator_symbol) {
|
|
|
|
|
json_object_object_add(json, "separator_symbol",
|
|
|
|
|
json_object_new_string(bar->separator_symbol));
|
|
|
|
|
}
|
|
|
|
|
json_object_object_add(json, "bar_height",
|
|
|
|
|
json_object_new_int(bar->height));
|
|
|
|
|
json_object_object_add(json, "wrap_scroll",
|
|
|
|
|
json_object_new_boolean(bar->wrap_scroll));
|
|
|
|
|
json_object_object_add(json, "workspace_buttons",
|
|
|
|
|
json_object_new_boolean(bar->workspace_buttons));
|
|
|
|
|
json_object_object_add(json, "strip_workspace_numbers",
|
|
|
|
|
json_object_new_boolean(bar->strip_workspace_numbers));
|
|
|
|
|
json_object_object_add(json, "binding_mode_indicator",
|
|
|
|
|
json_object_new_boolean(bar->binding_mode_indicator));
|
|
|
|
|
json_object_object_add(json, "verbose",
|
|
|
|
|
json_object_new_boolean(bar->verbose));
|
|
|
|
|
json_object_object_add(json, "pango_markup",
|
|
|
|
|
json_object_new_boolean(bar->pango_markup));
|
|
|
|
|
|
|
|
|
|
json_object *colors = json_object_new_object();
|
|
|
|
|
json_object_object_add(colors, "background",
|
|
|
|
|
json_object_new_string(bar->colors.background));
|
|
|
|
|
json_object_object_add(colors, "statusline",
|
|
|
|
|
json_object_new_string(bar->colors.statusline));
|
|
|
|
|
json_object_object_add(colors, "separator",
|
|
|
|
|
json_object_new_string(bar->colors.separator));
|
|
|
|
|
|
|
|
|
|
if (bar->colors.focused_background) {
|
|
|
|
|
json_object_object_add(colors, "focused_background",
|
|
|
|
|
json_object_new_string(bar->colors.focused_background));
|
|
|
|
|
} else {
|
|
|
|
|
json_object_object_add(colors, "focused_background",
|
|
|
|
|
json_object_new_string(bar->colors.background));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bar->colors.focused_statusline) {
|
|
|
|
|
json_object_object_add(colors, "focused_statusline",
|
|
|
|
|
json_object_new_string(bar->colors.focused_statusline));
|
|
|
|
|
} else {
|
|
|
|
|
json_object_object_add(colors, "focused_statusline",
|
|
|
|
|
json_object_new_string(bar->colors.statusline));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bar->colors.focused_separator) {
|
|
|
|
|
json_object_object_add(colors, "focused_separator",
|
|
|
|
|
json_object_new_string(bar->colors.focused_separator));
|
|
|
|
|
} else {
|
|
|
|
|
json_object_object_add(colors, "focused_separator",
|
|
|
|
|
json_object_new_string(bar->colors.separator));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
json_object_object_add(colors, "focused_workspace_border",
|
|
|
|
|
json_object_new_string(bar->colors.focused_workspace_border));
|
|
|
|
|
json_object_object_add(colors, "focused_workspace_bg",
|
|
|
|
|
json_object_new_string(bar->colors.focused_workspace_bg));
|
|
|
|
|
json_object_object_add(colors, "focused_workspace_text",
|
|
|
|
|
json_object_new_string(bar->colors.focused_workspace_text));
|
|
|
|
|
|
|
|
|
|
json_object_object_add(colors, "inactive_workspace_border",
|
|
|
|
|
json_object_new_string(bar->colors.inactive_workspace_border));
|
|
|
|
|
json_object_object_add(colors, "inactive_workspace_bg",
|
|
|
|
|
json_object_new_string(bar->colors.inactive_workspace_bg));
|
|
|
|
|
json_object_object_add(colors, "inactive_workspace_text",
|
|
|
|
|
json_object_new_string(bar->colors.inactive_workspace_text));
|
|
|
|
|
|
|
|
|
|
json_object_object_add(colors, "active_workspace_border",
|
|
|
|
|
json_object_new_string(bar->colors.active_workspace_border));
|
|
|
|
|
json_object_object_add(colors, "active_workspace_bg",
|
|
|
|
|
json_object_new_string(bar->colors.active_workspace_bg));
|
|
|
|
|
json_object_object_add(colors, "active_workspace_text",
|
|
|
|
|
json_object_new_string(bar->colors.active_workspace_text));
|
|
|
|
|
|
|
|
|
|
json_object_object_add(colors, "urgent_workspace_border",
|
|
|
|
|
json_object_new_string(bar->colors.urgent_workspace_border));
|
|
|
|
|
json_object_object_add(colors, "urgent_workspace_bg",
|
|
|
|
|
json_object_new_string(bar->colors.urgent_workspace_bg));
|
|
|
|
|
json_object_object_add(colors, "urgent_workspace_text",
|
|
|
|
|
json_object_new_string(bar->colors.urgent_workspace_text));
|
|
|
|
|
|
|
|
|
|
if (bar->colors.binding_mode_border) {
|
|
|
|
|
json_object_object_add(colors, "binding_mode_border",
|
|
|
|
|
json_object_new_string(bar->colors.binding_mode_border));
|
|
|
|
|
} else {
|
|
|
|
|
json_object_object_add(colors, "binding_mode_border",
|
|
|
|
|
json_object_new_string(bar->colors.urgent_workspace_border));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bar->colors.binding_mode_bg) {
|
|
|
|
|
json_object_object_add(colors, "binding_mode_bg",
|
|
|
|
|
json_object_new_string(bar->colors.binding_mode_bg));
|
|
|
|
|
} else {
|
|
|
|
|
json_object_object_add(colors, "binding_mode_bg",
|
|
|
|
|
json_object_new_string(bar->colors.urgent_workspace_bg));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bar->colors.binding_mode_text) {
|
|
|
|
|
json_object_object_add(colors, "binding_mode_text",
|
|
|
|
|
json_object_new_string(bar->colors.binding_mode_text));
|
|
|
|
|
} else {
|
|
|
|
|
json_object_object_add(colors, "binding_mode_text",
|
|
|
|
|
json_object_new_string(bar->colors.urgent_workspace_text));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
json_object_object_add(json, "colors", colors);
|
|
|
|
|
|
|
|
|
|
// Add outputs if defined
|
|
|
|
|
if (bar->outputs && bar->outputs->length > 0) {
|
|
|
|
|
json_object *outputs = json_object_new_array();
|
|
|
|
|
for (int i = 0; i < bar->outputs->length; ++i) {
|
|
|
|
|
const char *name = bar->outputs->items[i];
|
|
|
|
|
json_object_array_add(outputs, json_object_new_string(name));
|
|
|
|
|
}
|
|
|
|
|
json_object_object_add(json, "outputs", outputs);
|
|
|
|
|
}
|
|
|
|
|
return json;
|
|
|
|
|
}
|
|
|
|
|