From 4898f78e5e3bd786e55a290ade1afe75db0bb31f Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Wed, 12 Oct 2011 22:52:55 +0100 Subject: [PATCH] add a data structure for 'bar' configuration --- include/config.h | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ src/config.c | 1 + 2 files changed, 69 insertions(+) diff --git a/include/config.h b/include/config.h index 24754751..200d393f 100644 --- a/include/config.h +++ b/include/config.h @@ -22,9 +22,11 @@ #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. * diff --git a/src/config.c b/src/config.c index c979d8cd..3ea18258 100644 --- a/src/config.c +++ b/src/config.c @@ -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 -- 2.39.5