diff options
author | Daniel Otero <otero.o.daniel@gmail.com> | 2021-03-19 18:02:46 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-06-03 14:18:23 +0200 |
commit | b997147284b9d5632f1f929f02a17936a77cd7ec (patch) | |
tree | 6a2e93690d0dbd3c4eb032ce3d2bbf7e9671af27 | |
parent | cad6e59b932e082d4e9c4d13b4210df9e4ac7cf3 (diff) |
config: Fix swaybar pango_markup inconsistency
Until now, swaybar did not have pango markup enabled by default, even if
the sway config had it on. This patch aims to mimic the i3 behavior, but
maintaining the functionality of the "pango_markup" sway config command.
-rw-r--r-- | include/sway/config.h | 8 | ||||
-rw-r--r-- | sway/commands/bar/font.c | 15 | ||||
-rw-r--r-- | sway/config/bar.c | 2 | ||||
-rw-r--r-- | sway/ipc-json.c | 4 |
4 files changed, 25 insertions, 4 deletions
diff --git a/include/sway/config.h b/include/sway/config.h index 2a1df2b6..254fbad0 100644 --- a/include/sway/config.h +++ b/include/sway/config.h @@ -292,6 +292,12 @@ struct workspace_config { struct side_gaps gaps_outer; }; +enum pango_markup_config { + PANGO_MARKUP_DISABLED = false, + PANGO_MARKUP_ENABLED = true, + PANGO_MARKUP_DEFAULT // The default is font dependent ("pango:" prefix) +}; + struct bar_config { char *swaybar_command; struct wl_client *client; @@ -323,7 +329,7 @@ struct bar_config { char *position; list_t *bindings; char *status_command; - bool pango_markup; + enum pango_markup_config pango_markup; char *font; int height; // -1 not defined bool workspace_buttons; diff --git a/sway/commands/bar/font.c b/sway/commands/bar/font.c index 62987f3e..891c87af 100644 --- a/sway/commands/bar/font.c +++ b/sway/commands/bar/font.c @@ -11,7 +11,20 @@ struct cmd_results *bar_cmd_font(int argc, char **argv) { } char *font = join_args(argv, argc); free(config->current_bar->font); - config->current_bar->font = font; + + if (strncmp(font, "pango:", 6) == 0) { + if (config->current_bar->pango_markup == PANGO_MARKUP_DEFAULT) { + config->current_bar->pango_markup = true; + } + config->current_bar->font = strdup(font + 6); + } else { + if (config->current_bar->pango_markup == PANGO_MARKUP_DEFAULT) { + config->current_bar->pango_markup = false; + } + config->current_bar->font = strdup(font); + } + + free(font); sway_log(SWAY_DEBUG, "Settings font '%s' for bar: %s", config->current_bar->font, config->current_bar->id); return cmd_results_new(CMD_SUCCESS, NULL); diff --git a/sway/config/bar.c b/sway/config/bar.c index 767534a6..8970f3fd 100644 --- a/sway/config/bar.c +++ b/sway/config/bar.c @@ -91,7 +91,7 @@ struct bar_config *default_bar_config(void) { } bar->outputs = NULL; bar->position = strdup("bottom"); - bar->pango_markup = false; + bar->pango_markup = PANGO_MARKUP_DEFAULT; bar->swaybar_command = NULL; bar->font = NULL; bar->height = 0; diff --git a/sway/ipc-json.c b/sway/ipc-json.c index 34adfc74..6c438424 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c @@ -1127,7 +1127,9 @@ json_object *ipc_json_describe_bar_config(struct bar_config *bar) { 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_new_boolean(bar->pango_markup == PANGO_MARKUP_DEFAULT + ? config->pango_markup + : bar->pango_markup)); json_object *colors = json_object_new_object(); json_object_object_add(colors, "background", |