• Main Page
  • Data Structures
  • Files
  • File List
  • Globals

include/config.h

Go to the documentation of this file.
00001 /*
00002  * vim:ts=8:expandtab
00003  *
00004  * i3 - an improved dynamic tiling window manager
00005  *
00006  * © 2009-2010 Michael Stapelberg and contributors
00007  *
00008  * See file LICENSE for license information.
00009  *
00010  * include/config.h: Contains all structs/variables for the configurable
00011  * part of i3 as well as functions handling the configuration file (calling
00012  * the parser (src/cfgparse.y) with the correct path, switching key bindings
00013  * mode).
00014  *
00015  */
00016 
00017 #ifndef _CONFIG_H
00018 #define _CONFIG_H
00019 
00020 #include <stdbool.h>
00021 #include "queue.h"
00022 #include "i3.h"
00023 
00024 typedef struct Config Config;
00025 extern Config config;
00026 extern SLIST_HEAD(modes_head, Mode) modes;
00027 
00033 struct context {
00034         int line_number;
00035         char *line_copy;
00036         const char *filename;
00037 
00038         /* These are the same as in YYLTYPE */
00039         int first_column;
00040         int last_column;
00041 };
00042 
00048 struct Colortriple {
00049         uint32_t border;
00050         uint32_t background;
00051         uint32_t text;
00052 };
00053 
00059 struct Variable {
00060         char *key;
00061         char *value;
00062         char *next_match;
00063 
00064         SLIST_ENTRY(Variable) variables;
00065 };
00066 
00073 struct Mode {
00074         char *name;
00075         struct bindings_head *bindings;
00076 
00077         SLIST_ENTRY(Mode) modes;
00078 };
00079 
00085 struct Config {
00086         const char *terminal;
00087         const char *font;
00088 
00089         const char *ipc_socket_path;
00090 
00091         int container_mode;
00092         int container_stack_limit;
00093         int container_stack_limit_value;
00094 
00099         bool disable_focus_follows_mouse;
00100 
00105         bool disable_workspace_bar;
00106 
00107         const char *default_border;
00108 
00111         uint32_t floating_modifier;
00112 
00113         /* Color codes are stored here */
00114         struct config_client {
00115                 struct Colortriple focused;
00116                 struct Colortriple focused_inactive;
00117                 struct Colortriple unfocused;
00118                 struct Colortriple urgent;
00119         } client;
00120         struct config_bar {
00121                 struct Colortriple focused;
00122                 struct Colortriple unfocused;
00123                 struct Colortriple urgent;
00124         } bar;
00125 };
00126 
00131 char *glob_path(const char *path);
00132 
00137 bool path_exists(const char *path);
00138 
00146 void load_configuration(xcb_connection_t *conn, const char *override_configfile, bool reload);
00147 
00152 void translate_keysyms();
00153 
00159 void ungrab_all_keys(xcb_connection_t *conn);
00160 
00165 void grab_all_keys(xcb_connection_t *conn, bool bind_mode_switch);
00166 
00171 void switch_mode(xcb_connection_t *conn, const char *new_mode);
00172 
00178 Binding *get_binding(uint16_t modifiers, xcb_keycode_t keycode);
00179 
00180 /* prototype for src/cfgparse.y */
00181 void parse_file(const char *f);
00182 
00183 #endif

Generated on Mon Aug 22 2011 for i3 by  doxygen 1.7.1