diff options
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands/bar.c | 1 | ||||
-rw-r--r-- | sway/commands/bar/strip_workspace_name.c | 32 | ||||
-rw-r--r-- | sway/commands/bar/strip_workspace_numbers.c | 17 | ||||
-rw-r--r-- | sway/config/bar.c | 1 | ||||
-rw-r--r-- | sway/ipc-json.c | 2 | ||||
-rw-r--r-- | sway/meson.build | 1 | ||||
-rw-r--r-- | sway/sway-bar.5.scd | 4 |
7 files changed, 51 insertions, 7 deletions
diff --git a/sway/commands/bar.c b/sway/commands/bar.c index c808aef2..f9ed530e 100644 --- a/sway/commands/bar.c +++ b/sway/commands/bar.c @@ -25,6 +25,7 @@ static struct cmd_handler bar_handlers[] = { { "secondary_button", bar_cmd_secondary_button }, { "separator_symbol", bar_cmd_separator_symbol }, { "status_command", bar_cmd_status_command }, + { "strip_workspace_name", bar_cmd_strip_workspace_name }, { "strip_workspace_numbers", bar_cmd_strip_workspace_numbers }, { "tray_output", bar_cmd_tray_output }, { "tray_padding", bar_cmd_tray_padding }, diff --git a/sway/commands/bar/strip_workspace_name.c b/sway/commands/bar/strip_workspace_name.c new file mode 100644 index 00000000..79692f6e --- /dev/null +++ b/sway/commands/bar/strip_workspace_name.c @@ -0,0 +1,32 @@ +#include <string.h> +#include <strings.h> +#include "sway/commands.h" +#include "log.h" +#include "util.h" + +struct cmd_results *bar_cmd_strip_workspace_name(int argc, char **argv) { + struct cmd_results *error = NULL; + if ((error = checkarg(argc, + "strip_workspace_name", EXPECTED_EQUAL_TO, 1))) { + return error; + } + if (!config->current_bar) { + return cmd_results_new(CMD_FAILURE, + "strip_workspace_name", "No bar defined."); + } + + config->current_bar->strip_workspace_name = + parse_boolean(argv[0], config->current_bar->strip_workspace_name); + + if (config->current_bar->strip_workspace_name) { + config->current_bar->strip_workspace_numbers = false; + + wlr_log(WLR_DEBUG, "Stripping workspace name on bar: %s", + config->current_bar->id); + } else { + wlr_log(WLR_DEBUG, "Enabling workspace name on bar: %s", + config->current_bar->id); + } + + return cmd_results_new(CMD_SUCCESS, NULL, NULL); +} diff --git a/sway/commands/bar/strip_workspace_numbers.c b/sway/commands/bar/strip_workspace_numbers.c index 4e47d047..b33d01e5 100644 --- a/sway/commands/bar/strip_workspace_numbers.c +++ b/sway/commands/bar/strip_workspace_numbers.c @@ -2,6 +2,7 @@ #include <strings.h> #include "sway/commands.h" #include "log.h" +#include "util.h" struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) { struct cmd_results *error = NULL; @@ -13,17 +14,19 @@ struct cmd_results *bar_cmd_strip_workspace_numbers(int argc, char **argv) { return cmd_results_new(CMD_FAILURE, "strip_workspace_numbers", "No bar defined."); } - if (strcasecmp("yes", argv[0]) == 0) { - config->current_bar->strip_workspace_numbers = true; + + config->current_bar->strip_workspace_numbers = + parse_boolean(argv[0], config->current_bar->strip_workspace_numbers); + + if (config->current_bar->strip_workspace_numbers) { + config->current_bar->strip_workspace_name = false; + wlr_log(WLR_DEBUG, "Stripping workspace numbers on bar: %s", config->current_bar->id); - } else if (strcasecmp("no", argv[0]) == 0) { - config->current_bar->strip_workspace_numbers = false; + } else { wlr_log(WLR_DEBUG, "Enabling workspace numbers on bar: %s", config->current_bar->id); - } else { - return cmd_results_new(CMD_INVALID, - "strip_workspace_numbers", "Invalid value %s", argv[0]); } + return cmd_results_new(CMD_SUCCESS, NULL, NULL); } diff --git a/sway/config/bar.c b/sway/config/bar.c index 7bca5f49..7009d0a0 100644 --- a/sway/config/bar.c +++ b/sway/config/bar.c @@ -100,6 +100,7 @@ struct bar_config *default_bar_config(void) { bar->wrap_scroll = false; bar->separator_symbol = NULL; bar->strip_workspace_numbers = false; + bar->strip_workspace_name = false; bar->binding_mode_indicator = true; bar->verbose = false; bar->pid = 0; diff --git a/sway/ipc-json.c b/sway/ipc-json.c index e3450df1..05e453ec 100644 --- a/sway/ipc-json.c +++ b/sway/ipc-json.c @@ -581,6 +581,8 @@ json_object *ipc_json_describe_bar_config(struct bar_config *bar) { 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, "strip_workspace_name", + json_object_new_boolean(bar->strip_workspace_name)); json_object_object_add(json, "binding_mode_indicator", json_object_new_boolean(bar->binding_mode_indicator)); json_object_object_add(json, "verbose", diff --git a/sway/meson.build b/sway/meson.build index d9bc08f3..14822dbd 100644 --- a/sway/meson.build +++ b/sway/meson.build @@ -114,6 +114,7 @@ sway_sources = files( 'commands/bar/separator_symbol.c', 'commands/bar/status_command.c', 'commands/bar/strip_workspace_numbers.c', + 'commands/bar/strip_workspace_name.c', 'commands/bar/swaybar_command.c', 'commands/bar/tray_output.c', 'commands/bar/tray_padding.c', diff --git a/sway/sway-bar.5.scd b/sway/sway-bar.5.scd index 873741c0..60ee9999 100644 --- a/sway/sway-bar.5.scd +++ b/sway/sway-bar.5.scd @@ -50,6 +50,10 @@ Sway allows configuring swaybar in the sway configuration file. *workspace\_buttons* yes|no Enables or disables workspace buttons on the bar. Default is _yes_. +*strip\_workspace\_name* yes|no + If set to _yes_, then workspace names will be omitted from the workspace + button and only the custom number will be shown. Default is _no_. + *strip\_workspace\_numbers* yes|no If set to _yes_, then workspace numbers will be omitted from the workspace button and only the custom name will be shown. Default is _no_. |