swaybar: add status_padding command

Adds the bar subcommand `status_padding <padding>` which allows setting
the padding used for swaybar. If `status_padding` is set to `0`, blocks
will be able to take up the full height of the bar.
This commit is contained in:
Brian Ashworth 2019-01-10 23:43:45 -05:00
parent 33d9de88ef
commit c0f92cb2fb
12 changed files with 46 additions and 6 deletions

View file

@ -23,6 +23,7 @@ static struct cmd_handler bar_handlers[] = {
{ "position", bar_cmd_position },
{ "separator_symbol", bar_cmd_separator_symbol },
{ "status_command", bar_cmd_status_command },
{ "status_padding", bar_cmd_status_padding },
{ "strip_workspace_name", bar_cmd_strip_workspace_name },
{ "strip_workspace_numbers", bar_cmd_strip_workspace_numbers },
{ "tray_bindsym", bar_cmd_tray_bindsym },

View file

@ -0,0 +1,21 @@
#include <stdlib.h>
#include <string.h>
#include "sway/commands.h"
#include "log.h"
struct cmd_results *bar_cmd_status_padding(int argc, char **argv) {
struct cmd_results *error = NULL;
if ((error = checkarg(argc, "status_padding", EXPECTED_EQUAL_TO, 1))) {
return error;
}
char *end;
int padding = strtol(argv[0], &end, 10);
if (strlen(end) || padding < 0) {
return cmd_results_new(CMD_INVALID, "status_padding",
"Padding must be a positive integer");
}
config->current_bar->status_padding = padding;
wlr_log(WLR_DEBUG, "Status padding on bar %s: %d",
config->current_bar->id, config->current_bar->status_padding);
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
}

View file

@ -106,6 +106,7 @@ struct bar_config *default_bar_config(void) {
bar->verbose = false;
bar->pid = 0;
bar->modifier = get_modifier_mask_by_name("Mod4");
bar->status_padding = 1;
if (!(bar->mode = strdup("dock"))) {
goto cleanup;
}

View file

@ -660,6 +660,8 @@ json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
}
json_object_object_add(json, "bar_height",
json_object_new_int(bar->height));
json_object_object_add(json, "status_padding",
json_object_new_int(bar->status_padding));
json_object_object_add(json, "wrap_scroll",
json_object_new_boolean(bar->wrap_scroll));
json_object_object_add(json, "workspace_buttons",

View file

@ -116,6 +116,7 @@ sway_sources = files(
'commands/bar/position.c',
'commands/bar/separator_symbol.c',
'commands/bar/status_command.c',
'commands/bar/status_padding.c',
'commands/bar/strip_workspace_numbers.c',
'commands/bar/strip_workspace_name.c',
'commands/bar/swaybar_command.c',

View file

@ -92,6 +92,11 @@ Sway allows configuring swaybar in the sway configuration file.
*modifier* <Modifier>|none
Specifies the modifier key that shows a hidden bar. Default is _Mod4_.
*status\_padding* <padding>
Sets the vertical padding that is used for the status line. The default is
_1_. If _padding_ is _0_, blocks will be able to take up the full height of
the bar. This value will be multiplied by the output scale.
## TRAY
Swaybar provides a system tray where third-party applications may place icons.