i3
config.h
Go to the documentation of this file.
1 /*
2  * vim:ts=4:sw=4:expandtab
3  *
4  * i3 - an improved dynamic tiling window manager
5  * © 2009-2012 Michael Stapelberg and contributors (see also: LICENSE)
6  *
7  * include/config.h: Contains all structs/variables for the configurable
8  * part of i3 as well as functions handling the configuration file (calling
9  * the parser (src/cfgparse.y) with the correct path, switching key bindings
10  * mode).
11  *
12  */
13 #ifndef I3_CONFIG_H
14 #define I3_CONFIG_H
15 
16 #include <stdbool.h>
17 #include "queue.h"
18 #include "i3.h"
19 #include "libi3.h"
20 
21 typedef struct Config Config;
22 typedef struct Barconfig Barconfig;
23 extern char *current_configpath;
24 extern Config config;
25 extern SLIST_HEAD(modes_head, Mode) modes;
26 extern TAILQ_HEAD(barconfig_head, Barconfig) barconfigs;
27 /* defined in src/cfgparse.y */
28 extern bool force_old_config_parser;
29 
35 struct context {
36  bool has_errors;
38 
40  char *line_copy;
41  const char *filename;
42 
44 
45  /* These are the same as in YYLTYPE */
48 };
49 
55 struct Colortriple {
56  uint32_t border;
57  uint32_t background;
58  uint32_t text;
59  uint32_t indicator;
60 };
61 
67 struct Variable {
68  char *key;
69  char *value;
70  char *next_match;
71 
72  SLIST_ENTRY(Variable) variables;
73 };
74 
81 struct Mode {
82  char *name;
83  struct bindings_head *bindings;
84 
85  SLIST_ENTRY(Mode) modes;
86 };
87 
93 struct Config {
94  const char *terminal;
96 
98  const char *restart_state_path;
99 
104 
107 
113 
119 
125 
135 
145 
148 
154 
161 
164 
167 
171 
177 
178  /* Color codes are stored here */
179  struct config_client {
180  uint32_t background;
182  struct Colortriple focused_inactive;
183  struct Colortriple unfocused;
184  struct Colortriple urgent;
185  } client;
186  struct config_bar {
188  struct Colortriple unfocused;
189  struct Colortriple urgent;
190  } bar;
191 
193  enum {
194  /* display (and focus) the popup when it belongs to the fullscreen
195  * window only. */
196  PDF_SMART = 0,
197 
198  /* leave fullscreen mode unconditionally */
199  PDF_LEAVE_FULLSCREEN = 1,
200 
201  /* just ignore the popup, that is, don’t map it */
202  PDF_IGNORE = 2,
203  } popup_during_fullscreen;
204 };
205 
211 struct Barconfig {
214  char *id;
215 
220  char **outputs;
221 
224  char *tray_output;
225 
229  char *socket_path;
230 
232  enum { M_DOCK = 0, M_HIDE = 1 } mode;
233 
235  enum {
236  M_NONE = 0,
237  M_CONTROL = 1,
238  M_SHIFT = 2,
239  M_MOD1 = 3,
240  M_MOD2 = 4,
241  M_MOD3 = 5,
242  M_MOD4 = 6,
243  M_MOD5 = 7
244  } modifier;
245 
247  enum { P_BOTTOM = 0, P_TOP = 1 } position;
248 
253 
257 
259  char *font;
260 
265 
267  bool verbose;
268 
269  struct bar_colors {
270  char *background;
271  char *statusline;
272 
276 
280 
284 
288  } colors;
289 
290  TAILQ_ENTRY(Barconfig) configs;
291 };
292 
300 void load_configuration(xcb_connection_t *conn, const char *override_configfile, bool reload);
301 
306 void translate_keysyms(void);
307 
313 void ungrab_all_keys(xcb_connection_t *conn);
314 
319 void grab_all_keys(xcb_connection_t *conn, bool bind_mode_switch);
320 
325 void switch_mode(const char *new_mode);
326 
332 Binding *get_binding(uint16_t modifiers, bool key_release, xcb_keycode_t keycode);
333 
343 void kill_configerror_nagbar(bool wait_for_it);
344 
345 /* prototype for src/cfgparse.y */
346 void parse_file(const char *f);
347 
348 #endif