i3
configuration.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 Michael Stapelberg and contributors (see also: LICENSE)
6 *
7 * include/configuration.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/config_parse.c) with the correct path, switching key
10 * bindings mode).
11 *
12 */
13#pragma once
14
15#include "libi3.h"
16
17#include <stdbool.h>
18#include "queue.h"
19#include "i3.h"
20
21typedef struct Config Config;
22typedef struct Barconfig Barconfig;
23extern char *current_configpath;
24extern char *current_config;
25extern Config config;
26extern SLIST_HEAD(modes_head, Mode) modes;
27extern TAILQ_HEAD(barconfig_head, Barconfig) barconfigs;
28
34struct context {
37
39 char *line_copy;
40 const char *filename;
41
43
44 /* These are the same as in YYLTYPE */
47};
48
60};
61
67struct Variable {
68 char *key;
69 char *value;
71
74};
75
82struct Mode {
83 char *name;
85 struct bindings_head *bindings;
86
89};
90
96struct Config {
97 const char *terminal;
99
102
108
111
117
127
133
139
158
168
171
174
180
187
189 enum {
190 /* Focus if the target workspace is visible, set urgency hint otherwise. */
192 /* Always set the urgency hint. */
194 /* Always focus the window. */
196 /* Ignore the request (no focus, no urgency hint). */
197 FOWA_NONE
198 } focus_on_window_activation;
199
203
205 enum {
208 ALIGN_RIGHT
209 } title_align;
210
213
216
220
226
227 /* Color codes are stored here */
231 struct Colortriple focused_inactive;
232 struct Colortriple unfocused;
233 struct Colortriple urgent;
234 struct Colortriple placeholder;
236 struct config_bar {
238 struct Colortriple unfocused;
239 struct Colortriple urgent;
240 } bar;
241
243 enum {
244 /* display (and focus) the popup when it belongs to the fullscreen
245 * window only. */
246 PDF_SMART = 0,
247
248 /* leave fullscreen mode unconditionally */
249 PDF_LEAVE_FULLSCREEN = 1,
250
251 /* just ignore the popup, that is, don’t map it */
252 PDF_IGNORE = 2,
253 } popup_during_fullscreen;
254
255 /* The number of currently parsed barconfigs */
257};
258
264struct Barconfig {
267 char *id;
268
273 char **outputs;
274
275 /* List of outputs on which the tray is allowed to be shown, in order.
276 * The special value "none" disables it (per default, it will be shown) and
277 * the special value "primary" enabled it on the primary output. */
278 TAILQ_HEAD(tray_outputs_head, tray_output_t)
279 tray_outputs;
280
281 /* Padding around the tray icons. */
282 int tray_padding;
283
287 char *socket_path;
288
290 enum { M_DOCK = 0,
291 M_HIDE = 1,
292 M_INVISIBLE = 2 } mode;
293
294 /* The current hidden_state of the bar, which indicates whether it is hidden or shown */
295 enum { S_HIDE = 0,
296 S_SHOW = 1 } hidden_state;
297
299 uint32_t modifier;
300
301 TAILQ_HEAD(bar_bindings_head, Barbinding)
302 bar_bindings;
303
305 enum { P_BOTTOM = 0,
306 P_TOP = 1 } position;
307
312
316
318 char *font;
319
322
327
330
334
338
342
345
346 struct bar_colors {
350
354
358
362
366
370
374 } colors;
375
377 configs;
378};
379
388
390 char *command;
391
394
397};
398
400 char *output;
401
403 tray_outputs;
404};
405
406typedef enum {
411
423bool load_configuration(const char *override_configfile, config_load_t load_type);
424
430void ungrab_all_keys(xcb_connection_t *conn);
431
436void update_barconfig(void);
struct Con * focused
Definition: tree.c:13
void update_barconfig(void)
Sends the current bar configuration as an event to all barconfig_update listeners.
Definition: config.c:35
bool load_configuration(const char *override_configpath, config_load_t load_type)
(Re-)loads the configuration file (sets useful defaults before).
Definition: config.c:174
struct barconfig_head barconfigs
Definition: config.c:19
struct modes_head modes
Definition: config.c:18
void ungrab_all_keys(xcb_connection_t *conn)
Ungrabs all keys, to be called before re-grabbing the keys because of a mapping_notify event or a con...
Definition: config.c:26
xcb_connection_t * conn
XCB connection and root screen.
Definition: main.c:44
struct bindings_head * bindings
Definition: main.c:74
#define TAILQ_HEAD(name, type)
Definition: queue.h:318
#define SLIST_ENTRY(type)
Definition: queue.h:101
#define SLIST_HEAD(name, type)
Definition: queue.h:93
#define TAILQ_ENTRY(type)
Definition: queue.h:327
hide_edge_borders_mode_t
Definition: data.h:81
warping_t
Mouse pointer warping modes.
Definition: data.h:133
layout_t
Container layouts.
Definition: data.h:93
focus_wrapping_t
Focus wrapping modes.
Definition: data.h:141
border_style_t
Definition: data.h:64
#define QUBE_NUM_LABELS
Definition: data.h:163
Config config
Definition: config.c:17
config_load_t
@ C_VALIDATE
@ C_RELOAD
@ C_LOAD
char * current_configpath
Definition: config.c:15
char * current_config
Definition: config.c:16
Used during the config file lexing/parsing to keep the state of the lexer in order to provide useful ...
Definition: configuration.h:34
char * line_copy
Definition: configuration.h:39
bool has_warnings
Definition: configuration.h:36
int last_column
Definition: configuration.h:46
int line_number
Definition: configuration.h:38
int first_column
Definition: configuration.h:45
bool has_errors
Definition: configuration.h:35
const char * filename
Definition: configuration.h:40
char * compact_error
Definition: configuration.h:42
Part of the struct Config.
Definition: configuration.h:54
color_t border
Definition: configuration.h:55
color_t child_border
Definition: configuration.h:59
color_t indicator
Definition: configuration.h:58
color_t background
Definition: configuration.h:56
color_t text
Definition: configuration.h:57
Holds a user-assigned variable for parsing the configuration file.
Definition: configuration.h:67
char * key
Definition: configuration.h:68
char * next_match
Definition: configuration.h:70
char * value
Definition: configuration.h:69
The configuration file can contain multiple sets of bindings.
Definition: configuration.h:82
char * name
Definition: configuration.h:83
struct bindings_head * bindings
Definition: configuration.h:85
bool pango_markup
Definition: configuration.h:84
Holds part of the configuration (the part which is not already in dedicated structures in include/dat...
Definition: configuration.h:96
int container_stack_limit_value
focus_wrapping_t focus_wrapping
When focus wrapping is enabled (the default), attempting to move focus past the edge of the screen (i...
char * restart_state_path
bool workspace_auto_back_and_forth
Automatic workspace back and forth switching.
int32_t floating_minimum_width
int default_border_width
i3Font font
Definition: configuration.h:98
hide_edge_borders_mode_t hide_edge_borders
Remove borders if they are adjacent to the screen edge.
int32_t floating_minimum_height
const char * terminal
Definition: configuration.h:97
@ ALIGN_CENTER
bool disable_focus_follows_mouse
By default, focus follows mouse.
warping_t mouse_warping
By default, when switching focus to a window on a different output (e.g.
char * fake_outputs
Overwrites output detection (for testing), see src/fake_outputs.c.
int default_floating_border_width
int default_orientation
Default orientation for new containers.
uint32_t floating_modifier
The modifier which needs to be pressed in combination with your mouse buttons to do things with float...
char * ipc_socket_path
bool show_marks
Specifies whether or not marks should be displayed in the window decoration.
float workspace_urgency_timer
By default, urgency is cleared immediately when switching to another workspace leads to focusing the ...
int container_stack_limit
bool disable_randr15
Don’t use RandR 1.5 for querying outputs.
int32_t floating_maximum_width
Maximum and minimum dimensions of a floating window.
bool force_xinerama
By default, use the RandR API for multi-monitor setups.
int32_t floating_maximum_height
border_style_t default_border
The default border style for new windows.
bool disable_workspace_bar
By default, a workspace bar is drawn at the bottom of the screen.
layout_t default_layout
border_style_t default_floating_border
The default border style for new floating windows.
int number_barconfigs
Holds the status bar configuration (i3bar).
bool hide_workspace_buttons
Hide workspace buttons? Configuration option is 'workspace_buttons no' but we invert the bool to get ...
char * separator_symbol
A custom separator to use instead of a vertical line.
int workspace_min_width
The minimal width for workspace buttons.
uint32_t modifier
Bar modifier (to show bar when in hide mode).
char * i3bar_command
Command that should be run to execute i3bar, give a full path if i3bar is not in your $PATH.
int num_outputs
Number of outputs in the outputs array.
char * font
Font specification for all text rendered on the bar.
char * id
Automatically generated ID for this bar config.
bool hide_binding_mode_indicator
Hide mode button? Configuration option is 'binding_mode_indicator no' but we invert the bool for the ...
char * status_command
Command that should be run to get a statusline, for example 'i3status'.
bool strip_workspace_numbers
Strip workspace numbers? Configuration option is 'strip_workspace_numbers yes'.
bool strip_workspace_name
Strip workspace name? Configuration option is 'strip_workspace_name yes'.
char ** outputs
Outputs on which this bar should show up on.
bool verbose
Enable verbose mode? Useful for debugging purposes.
Defines a mouse command to be executed instead of the default behavior when clicking on the non-statu...
bool release
If true, the command will be executed after the button is released.
int input_code
The button to be used (e.g., 1 for "button1").
char * command
The command which is to be executed for this button.
Data structure for cached font information:
Definition: libi3.h:58
Definition: libi3.h:413