]> git.sur5r.net Git - i3/i3/blobdiff - include/config.h
Merge branch 'master' into next
[i3/i3] / include / config.h
index 247547511badf91aec916464b4b471a739ab8726..ea1885cc9c1dd0dd56502c3f3bf4921e9fb61721 100644 (file)
@@ -2,10 +2,7 @@
  * vim:ts=4:sw=4:expandtab
  *
  * i3 - an improved dynamic tiling window manager
- *
- * © 2009-2010 Michael Stapelberg and contributors
- *
- * See file LICENSE for license information.
+ * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
  *
  * include/config.h: Contains all structs/variables for the configurable
  * part of i3 as well as functions handling the configuration file (calling
  * mode).
  *
  */
-
 #ifndef _CONFIG_H
 #define _CONFIG_H
 
 #include <stdbool.h>
 #include "queue.h"
 #include "i3.h"
+#include "libi3.h"
 
 typedef struct Config Config;
+typedef struct Barconfig Barconfig;
 extern char *current_configpath;
 extern Config config;
 extern SLIST_HEAD(modes_head, Mode) modes;
+extern TAILQ_HEAD(barconfig_head, Barconfig) barconfigs;
 
 /**
  * Used during the config file lexing/parsing to keep the state of the lexer
@@ -33,6 +32,7 @@ extern SLIST_HEAD(modes_head, Mode) modes;
  */
 struct context {
     bool has_errors;
+    bool has_warnings;
 
     int line_number;
     char *line_copy;
@@ -170,6 +170,77 @@ 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_DOCK = 0, M_HIDE = 1 } mode;
+
+    /** Bar position (bottom by default). */
+    enum { P_BOTTOM = 0, P_TOP = 1 } position;
+
+    /** Command that should be run to execute i3bar, give a full path if i3bar is not
+     * in your $PATH.
+     * By default just 'i3bar' is executed. */
+    char *i3bar_command;
+
+    /** 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;
+
+    TAILQ_ENTRY(Barconfig) configs;
+};
+
 /**
  * Reads the configuration from ~/.i3/config or /etc/i3/config if not found.
  *