aboutsummaryrefslogtreecommitdiff
path: root/src/bardata.c
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-03-01 16:31:24 -0500
committeriamcheeseman <[hidden email]>2026-03-01 16:31:24 -0500
commit5b52739d9e1740f102cea7895cf8e7e51d925573 (patch)
tree5daebe1dc58cb53fe5066d1e6fde119cc1aa7e16 /src/bardata.c
parent66625e33aa2a4b1eedb4e2a46d2092999d8d9da4 (diff)
Allow changing default colors
Diffstat (limited to 'src/bardata.c')
-rw-r--r--src/bardata.c58
1 files changed, 51 insertions, 7 deletions
diff --git a/src/bardata.c b/src/bardata.c
index 507d8f9..19fedcc 100644
--- a/src/bardata.c
+++ b/src/bardata.c
@@ -8,8 +8,7 @@
#include "pipe.h"
#include "tsar.h"
-int fontsize = 16;
-color_t default_fg, default_bg;
+color_t default_fg = {.pixel=0xFFFFFF}, default_bg = {.pixel=0x202020};
int bar_height = 20;
// Global state, oh naur D:
@@ -89,6 +88,34 @@ void set_layout(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) {
}
}
+color_t parse_color(const char* col_str) {
+ color_t col = {0};
+
+ if (col_str[0] == '#') {
+ col_str++;
+ }
+
+ col.pixel = strtol(col_str, NULL, 16);
+ col.color.red = (col.pixel >> 16) & 0xFF;
+ col.color.green = (col.pixel >> 8) & 0xFF;
+ col.color.blue = (col.pixel) & 0xFF;
+ col.color.alpha = 255;
+
+ printf(
+ "%lx %lx %lx %lx %d %d %d %d\n",
+ col.pixel,
+ col.pixel >> 16 & 0xFF,
+ col.pixel >> 8 & 0xFF,
+ col.pixel & 0xFF,
+ col.color.red,
+ col.color.green,
+ col.color.blue,
+ col.color.alpha
+ );
+
+ return col;
+}
+
void set_config(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) {
char *var = argv[1];
if (strcmp(var, "height") == 0) {
@@ -100,13 +127,30 @@ void set_config(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) {
bar_height = new_bar_height;
}
if (strcmp(var, "font") == 0) {
- // fontsize = atoi(argv[2]);
load_font(argv[2]);
}
- if (strcmp(var, "background") == 0) {
-
+ if (strcmp(var, "background") == 0 || strcmp(var, "bg") == 0) {
+ default_bg = parse_color(argv[2]);
+ XSetWindowAttributes win_attr = {
+ .background_pixel = default_bg.pixel,
+ };
+ XChangeWindowAttributes(display, win, CWBackPixel, &win_attr);
}
- if (strcmp(var, "foreground") == 0) {
-
+ if (strcmp(var, "foreground") == 0 || strcmp(var, "fg") == 0) {
+ default_fg = parse_color(argv[2]);
+ XftColorFree(
+ display,
+ DefaultVisual(display, DefaultScreen(display)),
+ DefaultColormap(display, DefaultScreen(display)),
+ &xft_fg_color
+ );
+
+ XftColorAllocName(
+ display,
+ DefaultVisual(display, DefaultScreen(display)),
+ DefaultColormap(display, DefaultScreen(display)),
+ argv[2],
+ &xft_fg_color
+ );
}
}