]> git.sur5r.net Git - i3/i3/blobdiff - i3bar/src/config.c
Add support for a custom separator symbol
[i3/i3] / i3bar / src / config.c
index 809b1ab4cfbec09840f919f3ae0bf42ab2e1efac..a83ca0aabdd59979b060633cc3009be11d9690b7 100644 (file)
@@ -38,7 +38,7 @@ static int config_map_key_cb(void *params_, const unsigned char *keyVal, size_t
 }
 
 /*
- * Parse a null-value (current_workspace)
+ * Parse a null value (current_workspace)
  *
  */
 static int config_null_cb(void *params_) {
@@ -112,6 +112,20 @@ static int config_string_cb(void *params_, const unsigned char *val, size_t _len
         return 1;
     }
 
+    if (!strcmp(cur_key, "wheel_up_cmd")) {
+        DLOG("wheel_up_cmd = %.*s\n", len, val);
+        FREE(config.wheel_up_cmd);
+        sasprintf(&config.wheel_up_cmd, "%.*s", len, val);
+        return 1;
+    }
+
+    if (!strcmp(cur_key, "wheel_down_cmd")) {
+        DLOG("wheel_down_cmd = %.*s\n", len, val);
+        FREE(config.wheel_down_cmd);
+        sasprintf(&config.wheel_down_cmd, "%.*s", len, val);
+        return 1;
+    }
+
     if (!strcmp(cur_key, "position")) {
         DLOG("position = %.*s\n", len, val);
         config.position = (len == 3 && !strncmp((const char *)val, "top", strlen("top")) ? POS_TOP : POS_BOT);
@@ -130,6 +144,13 @@ static int config_string_cb(void *params_, const unsigned char *val, size_t _len
         return 1;
     }
 
+    if (!strcmp(cur_key, "separator_symbol")) {
+        DLOG("separator = %.*s\n", len, val);
+        I3STRING_FREE(config.separator_symbol);
+        config.separator_symbol = i3string_from_utf8_with_length((const char *)val, len);
+        return 1;
+    }
+
     if (!strcmp(cur_key, "outputs")) {
         DLOG("+output %.*s\n", len, val);
         int new_num_outputs = config.num_outputs + 1;
@@ -217,7 +238,7 @@ static yajl_callbacks outputs_callbacks = {
 };
 
 /*
- * Start parsing the received bar configuration json-string
+ * Start parsing the received bar configuration JSON string
  *
  */
 void parse_config_json(char *json) {
@@ -233,7 +254,7 @@ void parse_config_json(char *json) {
             break;
         case yajl_status_client_canceled:
         case yajl_status_error:
-            ELOG("Could not parse config-reply!\n");
+            ELOG("Could not parse config reply!\n");
             exit(EXIT_FAILURE);
             break;
     }
@@ -246,9 +267,9 @@ void parse_config_json(char *json) {
  *
  */
 void free_colors(struct xcb_color_strings_t *colors) {
-#define FREE_COLOR(x)        \
-    do {                     \
-        FREE(colors->x);     \
+#define FREE_COLOR(x)    \
+    do {                 \
+        FREE(colors->x); \
     } while (0)
     FREE_COLOR(bar_fg);
     FREE_COLOR(bar_bg);