aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/commands.c17
-rw-r--r--sway/log.c15
-rw-r--r--sway/log.h1
3 files changed, 31 insertions, 2 deletions
diff --git a/sway/commands.c b/sway/commands.c
index 33a5e485..efa72f19 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -146,6 +146,22 @@ int cmd_set(struct sway_config *config, int argc, char **argv) {
return 0;
}
+int cmd_log_colors(struct sway_config *config, int argc, char **argv) {
+ if (argc != 1) {
+ sway_log(L_ERROR, "Invalid log_colors command (expected 1 argument, got %d)", argc);
+ return 1;
+ }
+
+ if (strcasecmp(argv[0], "no") != 0 && strcasecmp(argv[0], "yes") != 0) {
+ sway_log(L_ERROR, "Invalid log_colors command (expected `yes` or `no`, got '%s')", argv[0]);
+ return 1;
+ }
+
+ sway_log_colors(!strcasecmp(argv[0], "yes"));
+ return 0;
+}
+
+
/* Keep alphabetized */
struct cmd_handler handlers[] = {
{ "bindsym", cmd_bindsym },
@@ -153,6 +169,7 @@ struct cmd_handler handlers[] = {
{ "exit", cmd_exit },
{ "focus_follows_mouse", cmd_focus_follows_mouse },
{ "layout", cmd_layout },
+ { "log_colors", cmd_log_colors },
{ "set", cmd_set },
};
diff --git a/sway/log.c b/sway/log.c
index 6ac7026f..7a88b6d1 100644
--- a/sway/log.c
+++ b/sway/log.c
@@ -17,6 +17,10 @@ void init_log(int verbosity) {
v = verbosity;
}
+void sway_log_colors(int mode) {
+ colored = (mode == 1) ? 1 : 0;
+}
+
void sway_abort(char *format, ...) {
fprintf(stderr, "ERROR: ");
va_list args;
@@ -33,11 +37,18 @@ void sway_log(int verbosity, char* format, ...) {
if (c > sizeof(verbosity_colors) / sizeof(char *)) {
c = sizeof(verbosity_colors) / sizeof(char *) - 1;
}
- fprintf(stderr, verbosity_colors[c]);
+
+ if (colored) {
+ fprintf(stderr, verbosity_colors[c]);
+ }
+
va_list args;
va_start(args, format);
vfprintf(stderr, format, args);
va_end(args);
- fprintf(stderr, "\x1B[0m\n");
+
+ if (colored) {
+ fprintf(stderr, "\x1B[0m\n");
+ }
}
}
diff --git a/sway/log.h b/sway/log.h
index 019012d3..03836513 100644
--- a/sway/log.h
+++ b/sway/log.h
@@ -9,6 +9,7 @@ typedef enum {
} log_importance_t;
void init_log(int verbosity);
+void sway_log_colors(int mode);
void sway_log(int verbosity, char* format, ...);
void sway_abort(char* format, ...);