]> git.sur5r.net Git - i3/i3/commitdiff
add a data structure for 'bar' configuration
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 12 Oct 2011 21:52:55 +0000 (22:52 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 18 Oct 2011 18:05:49 +0000 (19:05 +0100)
include/config.h
src/config.c

index 247547511badf91aec916464b4b471a739ab8726..200d393f3420f1995a559e23302600aefa26bc34 100644 (file)
 #include "i3.h"
 
 typedef struct Config Config;
+typedef struct Barconfig Barconfig;
 extern char *current_configpath;
 extern Config config;
 extern SLIST_HEAD(modes_head, Mode) modes;
+extern SLIST_HEAD(barconfig_head, Barconfig) barconfigs;
 
 /**
  * Used during the config file lexing/parsing to keep the state of the lexer
@@ -170,6 +172,72 @@ struct Config {
     } popup_during_fullscreen;
 };
 
+/**
+ * Holds the status bar configuration (i3bar). One of these structures is
+ * created for each 'bar' block in the config.
+ *
+ */
+struct Barconfig {
+    /** Automatically generated ID for this bar config. Used by the bar process
+     * to request a specific configuration. */
+    char *id;
+
+    /** Number of outputs in the outputs array */
+    int num_outputs;
+    /** Outputs on which this bar should show up on. We use an array for
+     * simplicity (since we store just strings). */
+    char **outputs;
+
+    /** Output on which the tray should be shown. The special value of 'no'
+     * disables the tray (it’s enabled by default). */
+    char *tray_output;
+
+    /** Path to the i3 IPC socket. This option is discouraged since programs
+     * can find out the path by looking for the I3_SOCKET_PATH property on the
+     * root window! */
+    char *socket_path;
+
+    /** Bar display mode (hide unless modifier is pressed or show in dock mode) */
+    enum { M_HIDE = 0, M_DOCK = 1 } mode;
+
+    /** Bar position (bottom by default). */
+    enum { P_BOTTOM = 0, P_TOP = 1 } position;
+
+    /** Command that should be run to get a statusline, for example 'i3status'.
+     * Will be passed to the shell. */
+    char *status_command;
+
+    /** Font specification for all text rendered on the bar. */
+    char *font;
+
+    /** Hide workspace buttons? Configuration option is 'workspace_buttons no'
+     * but we invert the bool to get the correct default when initializing with
+     * zero. */
+    bool hide_workspace_buttons;
+
+    /** Enable verbose mode? Useful for debugging purposes. */
+    bool verbose;
+
+    struct bar_colors {
+        char *background;
+        char *statusline;
+
+        char *focused_workspace_text;
+        char *focused_workspace_bg;
+
+        char *active_workspace_text;
+        char *active_workspace_bg;
+
+        char *inactive_workspace_text;
+        char *inactive_workspace_bg;
+
+        char *urgent_workspace_text;
+        char *urgent_workspace_bg;
+    } colors;
+
+    SLIST_ENTRY(Barconfig) configs;
+};
+
 /**
  * Reads the configuration from ~/.i3/config or /etc/i3/config if not found.
  *
index c979d8cdbfcc83ec5bda074a375611688aec4beb..3ea18258a4e7ea3b9f38595b7daeae89a60a9ebb 100644 (file)
@@ -21,6 +21,7 @@
 char *current_configpath = NULL;
 Config config;
 struct modes_head modes;
+struct barconfig_head barconfigs;
 
 /**
  * Ungrabs all keys, to be called before re-grabbing the keys because of a