aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sway/config.h4
-rw-r--r--sway/commands/bar/colors.c6
-rw-r--r--sway/config.c6
-rw-r--r--sway/ipc-json.c20
4 files changed, 30 insertions, 6 deletions
diff --git a/include/sway/config.h b/include/sway/config.h
index a14b7e48..c41bb8b3 100644
--- a/include/sway/config.h
+++ b/include/sway/config.h
@@ -163,6 +163,10 @@ struct bar_config {
char binding_mode_border[10];
char binding_mode_bg[10];
char binding_mode_text[10];
+
+ bool has_binding_mode_border;
+ bool has_binding_mode_bg;
+ bool has_binding_mode_text;
} colors;
};
diff --git a/sway/commands/bar/colors.c b/sway/commands/bar/colors.c
index 9e374d88..e9180604 100644
--- a/sway/commands/bar/colors.c
+++ b/sway/commands/bar/colors.c
@@ -57,14 +57,20 @@ struct cmd_results *bar_colors_cmd_binding_mode(int argc, char **argv) {
if ((error = add_color("binding_mode_border", config->current_bar->colors.binding_mode_border, argv[0]))) {
return error;
+ } else {
+ config->current_bar->colors.has_binding_mode_border = true;
}
if ((error = add_color("binding_mode_bg", config->current_bar->colors.binding_mode_bg, argv[1]))) {
return error;
+ } else {
+ config->current_bar->colors.has_binding_mode_bg = true;
}
if ((error = add_color("binding_mode_text", config->current_bar->colors.binding_mode_text, argv[2]))) {
return error;
+ } else {
+ config->current_bar->colors.has_binding_mode_text = true;
}
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
diff --git a/sway/config.c b/sway/config.c
index 7a41a3c8..6d4cf2ff 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -1147,9 +1147,9 @@ struct bar_config *default_bar_config(void) {
strcpy(bar->colors.urgent_workspace_border, "#2f343aff");
strcpy(bar->colors.urgent_workspace_bg,"#900000ff");
strcpy(bar->colors.urgent_workspace_text, "#ffffffff");
- strcpy(bar->colors.binding_mode_border, "#2f343aff");
- strcpy(bar->colors.binding_mode_bg,"#900000ff");
- strcpy(bar->colors.binding_mode_text, "#ffffffff");
+ bar->colors.has_binding_mode_border = false;
+ bar->colors.has_binding_mode_bg = false;
+ bar->colors.has_binding_mode_text = false;
list_add(config->bars, bar);
diff --git a/sway/ipc-json.c b/sway/ipc-json.c
index eb77a654..458dc7c2 100644
--- a/sway/ipc-json.c
+++ b/sway/ipc-json.c
@@ -328,9 +328,23 @@ json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
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));
- json_object_object_add(colors, "binding_mode_border", json_object_new_string(bar->colors.binding_mode_border));
- json_object_object_add(colors, "binding_mode_bg", json_object_new_string(bar->colors.binding_mode_bg));
- json_object_object_add(colors, "binding_mode_text", json_object_new_string(bar->colors.binding_mode_text));
+ if (bar->colors.has_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.has_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.has_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);