]> git.sur5r.net Git - i3/i3/commitdiff
port fernando’s custom background color patch
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 13 Nov 2010 19:07:49 +0000 (20:07 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 13 Nov 2010 19:07:49 +0000 (20:07 +0100)
include/config.h
src/cfgparse.l
src/cfgparse.y
src/con.c
src/config.c

index 36011f456d10a0be35dbe99c84941545140f6679..a435cb5b1a2e71f49c2d6f108f40da9974590ca5 100644 (file)
@@ -112,6 +112,7 @@ struct Config {
 
         /* Color codes are stored here */
         struct config_client {
+                uint32_t background;
                 struct Colortriple focused;
                 struct Colortriple focused_inactive;
                 struct Colortriple unfocused;
index 7d583b949d9e54b2c71a2ea19df68f533889b2bf..eb9c25c710db698f708480b08177d7842d7d3e62 100644 (file)
@@ -102,6 +102,7 @@ stack-limit                     { return TOKSTACKLIMIT; }
 cols                            { /* yylval.number = STACK_LIMIT_COLS; */return TOKSTACKLIMIT; }
 rows                            { /* yylval.number = STACK_LIMIT_ROWS; */return TOKSTACKLIMIT; }
 exec                            { BEGIN(BIND_AWS_COND); return TOKEXEC; }
+client.background               { BEGIN(COLOR_COND); yylval.single_color = &config.client.background; return TOKSINGLECOLOR; }
 client.focused                  { BEGIN(COLOR_COND); yylval.color = &config.client.focused; return TOKCOLOR; }
 client.focused_inactive         { BEGIN(COLOR_COND); yylval.color = &config.client.focused_inactive; return TOKCOLOR; }
 client.unfocused                { BEGIN(COLOR_COND); yylval.color = &config.client.unfocused; return TOKCOLOR; }
index 99367adbd0126d081e5d25fce8042cea0a54a5f0..5de08bde2beb6cc6af452001315736e4ad1117bf 100644 (file)
@@ -182,6 +182,7 @@ void parse_file(const char *f) {
 %union {
         int number;
         char *string;
+        uint32_t *single_color;
         struct Colortriple *color;
         struct Assignment *assignment;
         struct Binding *binding;
@@ -210,6 +211,7 @@ void parse_file(const char *f) {
 %token TOKSET
 %token TOKIPCSOCKET "ipc_socket"
 %token TOKEXEC "exec"
+%token TOKSINGLECOLOR
 %token TOKCOLOR
 %token TOKARROW "→"
 %token TOKMODE "mode"
@@ -240,6 +242,7 @@ line:
         | assign
         | ipcsocket
         | exec
+        | single_color
         | color
         | terminal
         | font
@@ -569,6 +572,13 @@ font:
         }
         ;
 
+single_color:
+        TOKSINGLECOLOR WHITESPACE colorpixel
+        {
+                uint32_t *dest = $<single_color>1;
+                *dest = $<number>3;
+        }
+        ;
 
 color:
         TOKCOLOR WHITESPACE colorpixel WHITESPACE colorpixel WHITESPACE colorpixel
index beaf82ce3739e2ba302829a1517f9240471722a1..8121bf0e8eccbab2b296417c47d28c75f208a24b 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -41,14 +41,17 @@ Con *con_new(Con *parent) {
     /* TODO: remove window coloring after test-phase */
     LOG("color %s\n", colors[cnt]);
     new->name = strdup(colors[cnt]);
+#if 0
     uint32_t cp = get_colorpixel(colors[cnt]);
     cnt++;
     if ((cnt % (sizeof(colors) / sizeof(char*))) == 0)
         cnt = 0;
+#endif
 
     x_con_init(new);
 
-    xcb_change_window_attributes(conn, new->frame, XCB_CW_BACK_PIXEL, &cp);
+    // TODO: this needs to be integrated into src/x.c and updated on config file reloads
+    xcb_change_window_attributes(conn, new->frame, XCB_CW_BACK_PIXEL, &config.client.background);
 
     TAILQ_INIT(&(new->floating_head));
     TAILQ_INIT(&(new->nodes_head));
index 2e611e953eae4c4981f93d56ebe585a7a231c8ef..b37f013c18d73c6a028c65e254033822b3a9914f 100644 (file)
@@ -348,6 +348,7 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
                 x.text = get_colorpixel(ctext); \
         } while (0)
 
+        config.client.background = get_colorpixel("#000000");
         INIT_COLOR(config.client.focused, "#4c7899", "#285577", "#ffffff");
         INIT_COLOR(config.client.focused_inactive, "#333333", "#5f676a", "#ffffff");
         INIT_COLOR(config.client.unfocused, "#333333", "#222222", "#888888");