diff options
author | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-03-29 14:40:25 +0200 |
---|---|---|
committer | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-03-30 00:47:58 +0200 |
commit | 3b05f92f76c3bd9400320844e485eb06e94772cd (patch) | |
tree | 6bbd50ee74217527285e7296c841f59ab6e1fdc8 /sway | |
parent | 86ea79ea6de62c0958511d45e755a4a7767efcd0 (diff) | |
download | sway-3b05f92f76c3bd9400320844e485eb06e94772cd.tar.xz |
Add border <none|normal|toggle|pixel> config
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands.c | 51 | ||||
-rw-r--r-- | sway/config.c | 3 | ||||
-rw-r--r-- | sway/sway.5.txt | 9 |
3 files changed, 63 insertions, 0 deletions
diff --git a/sway/commands.c b/sway/commands.c index 4a3ebf9e..bc182cee 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -43,6 +43,7 @@ static sway_cmd cmd_assign; static sway_cmd cmd_bar; static sway_cmd cmd_bindcode; static sway_cmd cmd_bindsym; +static sway_cmd cmd_border; static sway_cmd cmd_debuglog; static sway_cmd cmd_exec; static sway_cmd cmd_exec_always; @@ -346,6 +347,55 @@ static struct cmd_results *cmd_bindcode(int argc, char **argv) { return cmd_results_new(CMD_SUCCESS, NULL, NULL); } +static struct cmd_results *cmd_border(int argc, char **argv) { + struct cmd_results *error = NULL; + if ((error = checkarg(argc, "border", EXPECTED_AT_LEAST, 1))) { + return error; + } + + if (argc > 2) { + return cmd_results_new(CMD_FAILURE, "border", + "Expected 'border <normal|pixel|none|toggle> [<n>]"); + } + + enum swayc_border_types border = config->border; + + if (strcasecmp(argv[0], "none") == 0) { + border = B_NONE; + } else if (strcasecmp(argv[0], "normal") == 0) { + border = B_NORMAL; + } else if (strcasecmp(argv[0], "pixel") == 0) { + border = B_PIXEL; + } else if (strcasecmp(argv[0], "toggle") == 0) { + switch (config->border) { + case B_NONE: + border = B_PIXEL; + break; + case B_NORMAL: + border = B_NONE; + break; + case B_PIXEL: + border = B_NORMAL; + break; + } + } else { + return cmd_results_new(CMD_FAILURE, "border", + "Expected 'border <normal|pixel|none|toggle>"); + } + + if (argc == 2 && (border == B_NORMAL || border == B_PIXEL)) { + int thickness = (int)strtol(argv[1], NULL, 10); + if (errno == ERANGE || thickness < 0) { + errno = 0; + return cmd_results_new(CMD_INVALID, "border", "Number is out out of range."); + } + config->border_thickness = thickness; + } + + config->border = border; + return cmd_results_new(CMD_SUCCESS, NULL, NULL); +} + static struct cmd_results *cmd_exec_always(int argc, char **argv) { struct cmd_results *error = NULL; if (!config->active) return cmd_results_new(CMD_DEFER, NULL, NULL); @@ -2074,6 +2124,7 @@ static struct cmd_handler handlers[] = { { "bar", cmd_bar }, { "bindcode", cmd_bindcode }, { "bindsym", cmd_bindsym }, + { "border", cmd_border }, { "debuglog", cmd_debuglog }, { "default_orientation", cmd_orientation }, { "exec", cmd_exec }, diff --git a/sway/config.c b/sway/config.c index 565acd05..193cfad2 100644 --- a/sway/config.c +++ b/sway/config.c @@ -182,6 +182,9 @@ static void config_defaults(struct sway_config *config) { config->config_chain = create_list(); config->current_config = NULL; + // borders + config->border = B_NORMAL; + config->border_thickness = 2; config->hide_edge_borders = E_NONE; // border colors diff --git a/sway/sway.5.txt b/sway/sway.5.txt index 13d304bb..2eb0276c 100644 --- a/sway/sway.5.txt +++ b/sway/sway.5.txt @@ -43,6 +43,15 @@ The following commands may only be used in the configuration file. The following commands cannot be used directly in the configuration file. They are expected to be used with **bindsym** or at runtime through **swaymsg**(1). +**border** <normal|pixel> [<n>]:: + Set border style for windows. _normal_ includes a border of thickness _n_ and + a title bar. _pixel_ is just the border without title bar. Default is _normal_ + with border thickness 2. + +**border** <none|toggle>:: + Set border style to _none_ or _toggle_ between the available border styles: + _normal_, _pixel_, _none_. + **exit**:: Exit sway and end your Wayland session. |