From e67f3543332349e63b5099a241fdd85ce28ea54b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 30 Apr 2018 21:24:13 +1000 Subject: Implement borders Implements rendering of borders. Title text is still to do. Implements the following configuration directives: * client.focused * client.focused_inactive * client.unfocused * client.urgent * border * default_border --- sway/commands/client.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 sway/commands/client.c (limited to 'sway/commands/client.c') diff --git a/sway/commands/client.c b/sway/commands/client.c new file mode 100644 index 00000000..ce519381 --- /dev/null +++ b/sway/commands/client.c @@ -0,0 +1,79 @@ +#include "log.h" +#include "sway/commands.h" +#include "sway/config.h" +#include "sway/tree/container.h" + +static bool parse_color(char *hexstring, float (*dest)[4]) { + if (hexstring[0] != '#') { + return false; + } + + if (strlen(hexstring) != 7) { + return false; + } + + ++hexstring; + char *end; + uint32_t decimal = strtol(hexstring, &end, 16); + + if (*end != '\0') { + return false; + } + + (*dest)[0] = ((decimal >> 16) & 0xff) / 255.0; + (*dest)[1] = ((decimal >> 8) & 0xff) / 255.0; + (*dest)[2] = (decimal & 0xff) / 255.0; + (*dest)[3] = 1.0; + return true; +} + +static struct cmd_results *handle_command(int argc, char **argv, + struct border_colors *class, char *cmd_name) { + struct cmd_results *error = NULL; + if ((error = checkarg(argc, cmd_name, EXPECTED_EQUAL_TO, 5))) { + return error; + } + + if (!parse_color(argv[0], &class->border)) { + return cmd_results_new(CMD_INVALID, cmd_name, + "Unable to parse border color"); + } + + if (!parse_color(argv[1], &class->background)) { + return cmd_results_new(CMD_INVALID, cmd_name, + "Unable to parse background color"); + } + + if (!parse_color(argv[2], &class->text)) { + return cmd_results_new(CMD_INVALID, cmd_name, + "Unable to parse text color"); + } + + if (!parse_color(argv[3], &class->indicator)) { + return cmd_results_new(CMD_INVALID, cmd_name, + "Unable to parse indicator color"); + } + + if (!parse_color(argv[4], &class->child_border)) { + return cmd_results_new(CMD_INVALID, cmd_name, + "Unable to parse child border color"); + } + + return cmd_results_new(CMD_SUCCESS, NULL, NULL); +} + +struct cmd_results *cmd_client_focused(int argc, char **argv) { + return handle_command(argc, argv, &config->border_colors.focused, "client.focused"); +} + +struct cmd_results *cmd_client_focused_inactive(int argc, char **argv) { + return handle_command(argc, argv, &config->border_colors.focused_inactive, "client.focused_inactive"); +} + +struct cmd_results *cmd_client_unfocused(int argc, char **argv) { + return handle_command(argc, argv, &config->border_colors.unfocused, "client.unfocused"); +} + +struct cmd_results *cmd_client_urgent(int argc, char **argv) { + return handle_command(argc, argv, &config->border_colors.urgent, "client.urgent"); +} -- cgit v1.2.3 From cb07434913b89580a4025824cb181733b2db1eb7 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 1 May 2018 22:48:57 +1000 Subject: Remove unnecessary pointers --- sway/commands/client.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'sway/commands/client.c') diff --git a/sway/commands/client.c b/sway/commands/client.c index ce519381..156ff95c 100644 --- a/sway/commands/client.c +++ b/sway/commands/client.c @@ -3,7 +3,7 @@ #include "sway/config.h" #include "sway/tree/container.h" -static bool parse_color(char *hexstring, float (*dest)[4]) { +static bool parse_color(char *hexstring, float dest[static 4]) { if (hexstring[0] != '#') { return false; } @@ -20,10 +20,10 @@ static bool parse_color(char *hexstring, float (*dest)[4]) { return false; } - (*dest)[0] = ((decimal >> 16) & 0xff) / 255.0; - (*dest)[1] = ((decimal >> 8) & 0xff) / 255.0; - (*dest)[2] = (decimal & 0xff) / 255.0; - (*dest)[3] = 1.0; + dest[0] = ((decimal >> 16) & 0xff) / 255.0; + dest[1] = ((decimal >> 8) & 0xff) / 255.0; + dest[2] = (decimal & 0xff) / 255.0; + dest[3] = 1.0; return true; } @@ -34,27 +34,27 @@ static struct cmd_results *handle_command(int argc, char **argv, return error; } - if (!parse_color(argv[0], &class->border)) { + if (!parse_color(argv[0], class->border)) { return cmd_results_new(CMD_INVALID, cmd_name, "Unable to parse border color"); } - if (!parse_color(argv[1], &class->background)) { + if (!parse_color(argv[1], class->background)) { return cmd_results_new(CMD_INVALID, cmd_name, "Unable to parse background color"); } - if (!parse_color(argv[2], &class->text)) { + if (!parse_color(argv[2], class->text)) { return cmd_results_new(CMD_INVALID, cmd_name, "Unable to parse text color"); } - if (!parse_color(argv[3], &class->indicator)) { + if (!parse_color(argv[3], class->indicator)) { return cmd_results_new(CMD_INVALID, cmd_name, "Unable to parse indicator color"); } - if (!parse_color(argv[4], &class->child_border)) { + if (!parse_color(argv[4], class->child_border)) { return cmd_results_new(CMD_INVALID, cmd_name, "Unable to parse child border color"); } -- cgit v1.2.3