i3
Macros | Functions | Variables
config.c File Reference
#include "all.h"
#include <X11/Xlib.h>
Include dependency graph for config.c:

Go to the source code of this file.

Macros

#define I3__FILE__   "config.c"
 
#define GRAB_KEY(modifier)
 
#define REQUIRED_OPTION(name)
 
#define INIT_COLOR(x, cborder, cbackground, ctext, cindicator)
 

Functions

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 configuration file reload. More...
 
static void grab_keycode_for_binding (xcb_connection_t *conn, Binding *bind, uint32_t keycode)
 
Bindingget_binding (uint16_t modifiers, bool key_release, xcb_keycode_t keycode)
 Returns a pointer to the Binding with the specified modifiers and keycode or NULL if no such binding exists. More...
 
void translate_keysyms (void)
 Translates keysymbols to keycodes for all bindings which use keysyms. More...
 
void grab_all_keys (xcb_connection_t *conn, bool bind_mode_switch)
 Grab the bound keys (tell X to send us keypress events for those keycodes) More...
 
void switch_mode (const char *new_mode)
 Switches the key bindings to the given mode, if the mode exists. More...
 
void update_barconfig ()
 Sends the current bar configuration as an event to all barconfig_update listeners. More...
 
static char * get_config_path (const char *override_configpath)
 
static void parse_configuration (const char *override_configpath)
 
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. More...
 

Variables

char * current_configpath = NULL
 
Config config
 
struct modes_head modes
 
struct barconfig_head barconfigs = TAILQ_HEAD_INITIALIZER(barconfigs)
 

Macro Definition Documentation

#define GRAB_KEY (   modifier)
Value:
do { \
xcb_grab_key(conn, 0, root, modifier, keycode, \
XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC); \
} while (0)

Referenced by grab_keycode_for_binding().

#define I3__FILE__   "config.c"

Definition at line 2 of file config.c.

#define INIT_COLOR (   x,
  cborder,
  cbackground,
  ctext,
  cindicator 
)
Value:
do { \
x.border = get_colorpixel(cborder); \
x.background = get_colorpixel(cbackground); \
x.text = get_colorpixel(ctext); \
x.indicator = get_colorpixel(cindicator); \
} while (0)

Referenced by load_configuration().

#define REQUIRED_OPTION (   name)
Value:
if (config.name == NULL) \
die("You did not specify required configuration option " #name "\n");

Function Documentation

Binding* get_binding ( uint16_t  modifiers,
bool  key_release,
xcb_keycode_t  keycode 
)

Returns a pointer to the Binding with the specified modifiers and keycode or NULL if no such binding exists.

Definition at line 58 of file config.c.

References bindings, Binding::keycode, Binding::mods, Binding::number_keycodes, Binding::release, Binding::symbol, TAILQ_END, TAILQ_FOREACH, and Binding::translated_to.

Referenced by handle_key_press().

static char* get_config_path ( const char *  override_configpath)
static

Definition at line 264 of file config.c.

References die, path_exists(), resolve_tilde(), sasprintf(), and sstrdup().

Referenced by parse_configuration().

Here is the call graph for this function:

void grab_all_keys ( xcb_connection_t *  conn,
bool  bind_mode_switch 
)

Grab the bound keys (tell X to send us keypress events for those keycodes)

Definition at line 164 of file config.c.

References BIND_MODE_SWITCH, bindings, grab_keycode_for_binding(), Binding::keycode, Binding::mods, Binding::number_keycodes, TAILQ_FOREACH, and Binding::translated_to.

Referenced by handle_mapping_notify(), load_configuration(), main(), switch_mode(), and xkb_got_event().

Here is the call graph for this function:

static void grab_keycode_for_binding ( xcb_connection_t *  conn,
Binding bind,
uint32_t  keycode 
)
static

Definition at line 33 of file config.c.

References BIND_MODE_SWITCH, DLOG, GRAB_KEY, Binding::mods, and xcb_numlock_mask.

Referenced by grab_all_keys().

void load_configuration ( xcb_connection_t *  conn,
const char *  override_configfile,
bool  reload 
)

Reads the configuration from ~/.i3/config or /etc/i3/config if not found.

If you specify override_configpath, only this path is used to look for a configuration file.

Definition at line 342 of file config.c.

References Assignment::A_COMMAND, Assignment::A_TO_OUTPUT, Assignment::A_TO_WORKSPACE, Barconfig::bar_colors::active_workspace_bg, Barconfig::bar_colors::active_workspace_border, Barconfig::bar_colors::active_workspace_text, all_cons, assignments, Config::config_client::background, Barconfig::bar_colors::background, Config::bar, barconfigs, bindings, Mode::bindings, BS_NORMAL, Config::client, Barconfig::colors, Binding::command, Assignment::command, croot, Con::deco_render_params, Config::default_border, Config::default_border_width, Config::default_floating_border, Config::default_orientation, Assignment::dest, ELOG, Config::config_bar::focused, Config::config_client::focused, Config::config_client::focused_inactive, Barconfig::bar_colors::focused_workspace_bg, Barconfig::bar_colors::focused_workspace_border, Barconfig::bar_colors::focused_workspace_text, Config::font, Barconfig::font, FREE, free_font(), get_colorpixel(), grab_all_keys(), Barconfig::i3bar_command, Barconfig::id, Barconfig::bar_colors::inactive_workspace_bg, Barconfig::bar_colors::inactive_workspace_border, Barconfig::bar_colors::inactive_workspace_text, INIT_COLOR, load_font(), Assignment::match, match_free(), modes, Mode::name, NO_ORIENTATION, Barconfig::num_outputs, Assignment::output, Barconfig::outputs, parse_configuration(), predict_text_width(), scalloc(), set_font(), SLIST_EMPTY, SLIST_FIRST, SLIST_INIT, SLIST_INSERT_HEAD, SLIST_REMOVE, Barconfig::socket_path, sstrdup(), Barconfig::status_command, Barconfig::bar_colors::statusline, TAILQ_EMPTY, TAILQ_FIRST, TAILQ_FOREACH, TAILQ_INIT, TAILQ_REMOVE, translate_keysyms(), Binding::translated_to, Barconfig::tray_output, Font::type, Assignment::type, Config::config_bar::unfocused, Config::config_client::unfocused, ungrab_all_keys(), Config::config_client::urgent, Config::config_bar::urgent, Barconfig::bar_colors::urgent_workspace_bg, Barconfig::bar_colors::urgent_workspace_border, Barconfig::bar_colors::urgent_workspace_text, Assignment::workspace, Config::workspace_urgency_timer, and x_deco_recurse().

Referenced by cmd_reload(), and main().

Here is the call graph for this function:

static void parse_configuration ( const char *  override_configpath)
static

Definition at line 330 of file config.c.

References current_configpath, FREE, get_config_path(), LOG, and parse_file().

Referenced by load_configuration().

Here is the call graph for this function:

void switch_mode ( const char *  new_mode)

Switches the key bindings to the given mode, if the mode exists.

Definition at line 187 of file config.c.

References bindings, Mode::bindings, conn, ELOG, FREE, grab_all_keys(), ipc_send_event(), LOG, modes, Mode::name, sasprintf(), SLIST_FOREACH, translate_keysyms(), and ungrab_all_keys().

Referenced by cmd_mode().

Here is the call graph for this function:

void translate_keysyms ( void  )

Translates keysymbols to keycodes for all bindings which use keysyms.

Definition at line 115 of file config.c.

References BIND_MODE_SWITCH, bindings, conn, DLOG, ELOG, FREE, Binding::keycode, keysyms, Binding::mods, Binding::number_keycodes, srealloc(), Binding::symbol, TAILQ_FOREACH, and Binding::translated_to.

Referenced by handle_mapping_notify(), load_configuration(), main(), switch_mode(), and xkb_got_event().

Here is the call graph for this function:

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 configuration file reload.

Definition at line 28 of file config.c.

References DLOG, and root.

Referenced by handle_mapping_notify(), load_configuration(), switch_mode(), and xkb_got_event().

void update_barconfig ( )

Sends the current bar configuration as an event to all barconfig_update listeners.

This update mechnism currently only includes the hidden_state and the mode in the config.

Definition at line 218 of file config.c.

References barconfigs, FREE, Barconfig::hidden_state, Barconfig::id, ipc_send_event(), Barconfig::mode, sasprintf(), and TAILQ_FOREACH.

Referenced by cmd_bar(), and cmd_reload().

Here is the call graph for this function:

Variable Documentation

struct barconfig_head barconfigs = TAILQ_HEAD_INITIALIZER(barconfigs)
Config config
char* current_configpath = NULL

Definition at line 18 of file config.c.

Referenced by parse_configuration(), and x_set_i3_atoms().

struct modes_head modes

Definition at line 20 of file config.c.

Referenced by CFGFUN(), load_configuration(), and switch_mode().