2 #define I3__FILE__ "config.c" 14 #include <xkbcommon/xkbcommon.h> 27 DLOG(
"Ungrabbing all keys\n");
28 xcb_ungrab_key(conn, XCB_GRAB_ANY,
root, XCB_BUTTON_MASK_ANY);
51 die(
"Unable to find the configuration file (looked at " 52 "~/.i3/config, $XDG_CONFIG_HOME/i3/config, " SYSCONFDIR
"/i3/config and $XDG_CONFIG_DIRS/i3/config)");
55 LOG(
"Parsing configfile %s\n", path);
60 if (!use_nagbar &&
bindings == NULL) {
129 TAILQ_REMOVE(&(barconfig->tray_outputs), tray_output, tray_outputs);
167 workspace_set_name(ws, NULL);
193 #define REQUIRED_OPTION(name) \ 194 if (config.name == NULL) \ 195 die("You did not specify required configuration option " #name "\n"); 198 memset(&config, 0,
sizeof(config));
201 #define INIT_COLOR(x, cborder, cbackground, ctext, cindicator) \ 203 x.border = draw_util_hex_to_color(cborder); \ 204 x.background = draw_util_hex_to_color(cbackground); \ 205 x.text = draw_util_hex_to_color(ctext); \ 206 x.indicator = draw_util_hex_to_color(cindicator); \ 207 x.child_border = draw_util_hex_to_color(cbackground); \ 212 "#522702",
"#522702",
"#ffffff",
"#a6907d");
214 "#522702",
"#361a01",
"#ffffff",
"#a6907d");
216 "#522702",
"#361a01",
"#999999",
"#a6907d");
218 "#666666",
"#a6907d",
"#ce0000",
"#a6907d");
222 "#e53b27",
"#e53b27",
"#ffffff",
"#f19b90");
224 "#e53b27",
"#902519",
"#ffffff",
"#f19b90");
226 "#e53b27",
"#902519",
"#999999",
"#f19b90");
228 "#e53b27",
"#f19b90",
"#ce0000",
"#f19b90");
232 "#d05f03",
"#d05f03",
"#ffffff",
"#daa67e");
234 "#d05f03",
"#7b3702",
"#ffffff",
"#daa67e");
236 "#d05f03",
"#7b3702",
"#999999",
"#daa67e");
238 "#d05f03",
"#daa67e",
"#ce0000",
"#daa67e");
242 "#999b00",
"#999b00",
"#ffffff",
"#cacb7c");
244 "#999b00",
"#666700",
"#ffffff",
"#cacb7c");
246 "#999b00",
"#666700",
"#999999",
"#cacb7c");
248 "#999b00",
"#cacb7c",
"#ce0000",
"#cacb7c");
252 "#04af5b",
"#04af5b",
"#ffffff",
"#7dd5aa");
254 "#04af5b",
"#02713b",
"#ffffff",
"#7dd5aa");
256 "#04af5b",
"#02713b",
"#999999",
"#7dd5aa");
258 "#04af5b",
"#7dd5aa",
"#ce0000",
"#7dd5aa");
262 "#8c959f",
"#8c959f",
"#ffffff",
"#c3c8cd");
264 "#8c959f",
"#676d75",
"#ffffff",
"#c3c8cd");
266 "#8c959f",
"#676d75",
"#999999",
"#c3c8cd");
268 "#8c959f",
"#c3c8cd",
"#ce0000",
"#c3c8cd");
272 "#3384d6",
"#3384d6",
"#ffffff",
"#95bee8");
274 "#3384d6",
"#1f5082",
"#ffffff",
"#95bee8");
276 "#3384d6",
"#1f5082",
"#999999",
"#95bee8");
278 "#3384d6",
"#95bee8",
"#ce0000",
"#95bee8");
282 "#8f5cbe",
"#8f5cbe",
"#ffffff",
"#c6abdd");
284 "#8f5cbe",
"#5c3e78",
"#ffffff",
"#c6abdd");
286 "#8f5cbe",
"#5c3e78",
"#999999",
"#c6abdd");
288 "#8f5cbe",
"#c6abdd",
"#ce0000",
"#c6abdd");
292 "#595959",
"#595959",
"#ffffff",
"#a3a3a3");
294 "#595959",
"#3a3a3a",
"#ffffff",
"#a3a3a3");
296 "#595959",
"#3a3a3a",
"#999999",
"#a3a3a3");
298 "#595959",
"#a3a3a3",
"#ce0000",
"#a3a3a3");
302 "#000000",
"#0c0c0c",
"#ffffff",
"#000000");
337 if (config.
font.
type == FONT_TYPE_NONE) {
338 ELOG(
"You did not specify required configuration option \"font\"\n");
354 if (ws->name != NULL) {
357 if (ws->text_width == 0)
359 config.
font, ws->name, ws->name_len);
363 workspace_set_name(ws, NULL);
struct Colortriple focused
#define TAILQ_REMOVE(head, elm, field)
struct deco_render_params * deco_render_params
Cache for the decoration rendering.
bool show_marks
Specifies whether or not marks should be displayed in the window decoration.
int default_orientation
Default orientation for new containers.
struct assignments_head assignments
A 'Con' represents everything from the X11 root window down to a single X11 window.
char * restart_state_path
The configuration file can contain multiple sets of bindings.
void * scalloc(size_t num, size_t size)
Safe-wrapper around calloc which exits if malloc returns NULL (meaning that there is no more memory a...
Match match
the criteria to check if a window matches
Defines a mouse command to be executed instead of the default behavior when clicking on the non-statu...
char * socket_path
Path to the i3 IPC socket.
char * urgent_workspace_bg
border_style_t default_border
The default border style for new windows.
struct barconfig_head barconfigs
void ipc_send_barconfig_update_event(Barconfig *barconfig)
For the barconfig update events, we send the serialized barconfig.
struct Colortriple focused_inactive
Holds a keybinding, consisting of a keycode combined with modifiers and the command which is executed...
char * binding_mode_border
int num_outputs
Number of outputs in the outputs array.
#define TAILQ_FIRST(head)
char * focused_workspace_border
struct Colortriple focused
char * get_config_path(const char *override_configpath, bool use_system_paths)
Get the path of the first configuration file found.
char * inactive_workspace_bg
char * sstrdup(const char *str)
Safe-wrapper around strdup which exits if malloc returns NULL (meaning that there is no more memory a...
void switch_mode(const char *new_mode)
Switches the key bindings to the given mode, if the mode exists.
struct bindings_head * bindings
struct Colortriple unfocused
color_t draw_util_hex_to_color(const char *color)
Parses the given color in hex format to an internal color representation.
#define INIT_COLOR(x, cborder, cbackground, ctext, cindicator)
An Assignment makes specific windows go to a specific workspace/output or run a command for that wind...
void match_free(Match *match)
Frees the given match.
enum Font::@23 type
The type of font.
char * id
Automatically generated ID for this bar config.
int predict_text_width(i3String *text)
Predict the text width in pixels for the given text.
struct Colortriple unfocused
struct Barconfig::bar_colors colors
char * i3bar_command
Command that should be run to execute i3bar, give a full path if i3bar is not in your $PATH...
enum Assignment::@18 type
type of this assignment:
#define TAILQ_HEAD_INITIALIZER(head)
char * urgent_workspace_text
int default_floating_border_width
#define TAILQ_EMPTY(head)
#define SLIST_FIRST(head)
void grab_all_keys(xcb_connection_t *conn)
Grab the bound keys (tell X to send us keypress events for those keycodes)
char * focused_workspace_text
char * urgent_workspace_border
#define SLIST_INSERT_HEAD(head, elm, field)
char * status_command
Command that should be run to get a statusline, for example 'i3status'.
char * inactive_workspace_border
xcb_connection_t * conn
XCB connection and root screen.
char * font
Font specification for all text rendered on the bar.
#define SLIST_REMOVE(head, elm, type, field)
char * command
The command which is to be executed for this button.
border_style_t default_floating_border
The default border style for new floating windows.
i3Font load_font(const char *pattern, const bool fallback)
Loads a font for usage, also getting its height.
char * focused_background
Holds part of the configuration (the part which is not already in dedicated structures in include/dat...
char * current_configpath
char * inactive_workspace_text
struct Colortriple urgent
void load_configuration(xcb_connection_t *conn, const char *override_configpath, bool reload)
Reads the configuration from ~/.i3/config or /etc/i3/config if not found.
void update_barconfig()
Sends the current bar configuration as an event to all barconfig_update listeners.
void binding_free(Binding *bind)
Frees the binding.
union Assignment::@19 dest
destination workspace/command, depending on the type
float workspace_urgency_timer
By default, urgency is cleared immediately when switching to another workspace leads to focusing the ...
char * fake_outputs
Overwrites output detection (for testing), see src/fake_outputs.c.
struct Colortriple urgent
struct Config::config_client client[QUBE_NUM_LABELS]
char * focused_statusline
struct all_cons_head all_cons
char * focused_workspace_bg
int logical_px(const int logical)
Convert a logical amount of pixels (e.g.
#define SLIST_EMPTY(head)
struct Colortriple placeholder
struct Config::config_bar bar
char * active_workspace_bg
void x_deco_recurse(Con *con)
Recursively calls x_draw_decoration.
void free_font(void)
Frees the resources taken by the current font.
bool parse_file(const char *f, bool use_nagbar)
Parses the given file by first replacing the variables, then calling parse_config and launching i3-na...
void translate_keysyms(void)
Translates keysymbols to keycodes for all bindings which use keysyms.
void regrab_all_buttons(xcb_connection_t *conn)
Release the button grabs on all managed windows and regrab them, reevaluating which buttons need to b...
struct bindings_head * bindings
char ** outputs
Outputs on which this bar should show up on.
bool parse_configuration(const char *override_configpath, bool use_nagbar)
Finds the configuration file to use (either the one specified by override_configpath), the user’s one or the system default) and calls parse_file().
void set_font(i3Font *font)
Defines the font to be used for the forthcoming calls.
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...
char * active_workspace_text
#define TAILQ_FOREACH(var, head, field)
Holds the status bar configuration (i3bar).
char * active_workspace_border