* vim:ts=4:sw=4:expandtab
*
* i3 - an improved dynamic tiling window manager
+ * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
*
- * © 2009-2010 Michael Stapelberg and contributors
- *
- * See file LICENSE for license information.
- *
- * src/config.c: Contains all functions handling the configuration file (calling
- * the parser (src/cfgparse.y) with the correct path, switching key bindings
- * mode).
+ * config.c: Configuration file (calling the parser (src/cfgparse.y) with the
+ * correct path, switching key bindings mode).
*
*/
+#include "all.h"
/* We need Xlib for XStringToKeysym */
#include <X11/Xlib.h>
-#include "all.h"
-
char *current_configpath = NULL;
Config config;
struct modes_head modes;
xdg_config_home = "~/.config";
xdg_config_home = resolve_tilde(xdg_config_home);
- if (asprintf(&config_path, "%s/i3/config", xdg_config_home) == -1)
- die("asprintf() failed");
+ sasprintf(&config_path, "%s/i3/config", xdg_config_home);
free(xdg_config_home);
if (path_exists(config_path))
char *tok = strtok(buf, ":");
while (tok != NULL) {
tok = resolve_tilde(tok);
- if (asprintf(&config_path, "%s/i3/config", tok) == -1)
- die("asprintf() failed");
+ sasprintf(&config_path, "%s/i3/config", tok);
free(tok);
if (path_exists(config_path)) {
free(buf);
FREE(barconfig->tray_output);
FREE(barconfig->socket_path);
FREE(barconfig->status_command);
+ FREE(barconfig->i3bar_command);
FREE(barconfig->font);
FREE(barconfig->colors.background);
FREE(barconfig->colors.statusline);
TAILQ_FOREACH(ws, workspaces, workspaces)
workspace_set_name(ws, NULL);
#endif
+
+ /* Invalidate pixmap caches in case font or colors changed */
+ Con *con;
+ TAILQ_FOREACH(con, &all_cons, all_cons)
+ FREE(con->deco_render_params);
+
+ /* Get rid of the current font */
+ free_font();
}
SLIST_INIT(&modes);
if (config.font.id == 0) {
ELOG("You did not specify required configuration option \"font\"\n");
config.font = load_font("fixed", true);
+ set_font(&config.font);
+ }
+
+ /* Redraw the currently visible decorations on reload, so that
+ * the possibly new drawing parameters changed. */
+ if (reload) {
+ x_deco_recurse(croot);
+ xcb_flush(conn);
}
#if 0