add a data structure for 'bar' configuration

This commit is contained in:
Michael Stapelberg 2011-10-12 22:52:55 +01:00
parent f26a344dfa
commit 4898f78e5e
2 changed files with 69 additions and 0 deletions

View File

@ -22,9 +22,11 @@
#include "i3.h" #include "i3.h"
typedef struct Config Config; typedef struct Config Config;
typedef struct Barconfig Barconfig;
extern char *current_configpath; extern char *current_configpath;
extern Config config; extern Config config;
extern SLIST_HEAD(modes_head, Mode) modes; 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 * Used during the config file lexing/parsing to keep the state of the lexer
@ -170,6 +172,72 @@ struct Config {
} popup_during_fullscreen; } 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 (its 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. * Reads the configuration from ~/.i3/config or /etc/i3/config if not found.
* *

View File

@ -21,6 +21,7 @@
char *current_configpath = NULL; char *current_configpath = NULL;
Config config; Config config;
struct modes_head modes; struct modes_head modes;
struct barconfig_head barconfigs;
/** /**
* Ungrabs all keys, to be called before re-grabbing the keys because of a * Ungrabs all keys, to be called before re-grabbing the keys because of a