X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fconfig.h;h=b62599936dc9dd3c17fea0453a4ef2ee9f965df9;hb=cd0cd0c3d22d7acba240ca10d8594621cc67ee34;hp=ea1885cc9c1dd0dd56502c3f3bf4921e9fb61721;hpb=ef224cdb988f9d8ba4d98f66f1a38e5fe80ba3cd;p=i3%2Fi3 diff --git a/include/config.h b/include/config.h index ea1885cc..b6259993 100644 --- a/include/config.h +++ b/include/config.h @@ -2,16 +2,15 @@ * vim:ts=4:sw=4:expandtab * * i3 - an improved dynamic tiling window manager - * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE) + * © 2009-2012 Michael Stapelberg and contributors (see also: LICENSE) * * include/config.h: Contains all structs/variables for the configurable * part of i3 as well as functions handling the configuration file (calling - * the parser (src/cfgparse.y) with the correct path, switching key bindings - * mode). + * the parser (src/config_parse.c) with the correct path, switching key + * bindings mode). * */ -#ifndef _CONFIG_H -#define _CONFIG_H +#pragma once #include #include "queue.h" @@ -54,6 +53,7 @@ struct Colortriple { uint32_t border; uint32_t background; uint32_t text; + uint32_t indicator; }; /** @@ -94,9 +94,10 @@ struct Config { char *ipc_socket_path; const char *restart_state_path; - int default_layout; + layout_t default_layout; int container_stack_limit; int container_stack_limit_value; + int default_border_width; /** Default orientation for new containers */ int default_orientation; @@ -107,6 +108,12 @@ struct Config { * It is not planned to add any different focus models. */ bool disable_focus_follows_mouse; + /** Remove borders if they are adjacent to the screen edge. + * This is useful if you are reaching scrollbar on the edge of the + * screen or do not want to waste a single pixel of displayspace. + * By default, this is disabled. */ + adjacent_t hide_edge_borders; + /** By default, a workspace bar is drawn at the bottom of the screen. * If you want to have a more fancy bar, it is recommended to replace * the whole bar by dzen2, for example using the i3-wsbar script which @@ -133,12 +140,22 @@ struct Config { * is fetched once and never updated. */ bool force_xinerama; + /** Overwrites output detection (for testing), see src/fake_outputs.c */ + char *fake_outputs; + /** Automatic workspace back and forth switching. If this is set, a * switch to the currently active workspace will switch to the * previously focused one instead, making it possible to fast toggle * between two workspaces. */ bool workspace_auto_back_and_forth; + /** By default, urgency is cleared immediately when switching to another + * workspace leads to focusing the con with the urgency hint. When having + * multiple windows on that workspace, the user needs to guess which + * application raised the event. To prevent this, the reset of the urgency + * flag can be delayed using an urgency timer. */ + float workspace_urgency_timer; + /** The default border style for new windows. */ border_style_t default_border; @@ -149,6 +166,12 @@ struct Config { * buttons to do things with floating windows (move, resize) */ uint32_t floating_modifier; + /** Maximum and minimum dimensions of a floating window */ + int32_t floating_maximum_width; + int32_t floating_maximum_height; + int32_t floating_minimum_width; + int32_t floating_minimum_height; + /* Color codes are stored here */ struct config_client { uint32_t background; @@ -156,6 +179,7 @@ struct Config { struct Colortriple focused_inactive; struct Colortriple unfocused; struct Colortriple urgent; + struct Colortriple placeholder; } client; struct config_bar { struct Colortriple focused; @@ -165,9 +189,19 @@ struct Config { /** What should happen when a new popup is opened during fullscreen mode */ enum { - PDF_LEAVE_FULLSCREEN = 0, - PDF_IGNORE = 1 + /* display (and focus) the popup when it belongs to the fullscreen + * window only. */ + PDF_SMART = 0, + + /* leave fullscreen mode unconditionally */ + PDF_LEAVE_FULLSCREEN = 1, + + /* just ignore the popup, that is, don’t map it */ + PDF_IGNORE = 2, } popup_during_fullscreen; + + /* The number of currently parsed barconfigs */ + int number_barconfigs; }; /** @@ -195,8 +229,23 @@ struct Barconfig { * root window! */ char *socket_path; - /** Bar display mode (hide unless modifier is pressed or show in dock mode) */ - enum { M_DOCK = 0, M_HIDE = 1 } mode; + /** Bar display mode (hide unless modifier is pressed or show in dock mode or always hide in invisible mode) */ + enum { M_DOCK = 0, M_HIDE = 1, M_INVISIBLE = 2 } mode; + + /* The current hidden_state of the bar, which indicates whether it is hidden or shown */ + enum { S_HIDE = 0, S_SHOW = 1 } hidden_state; + + /** Bar modifier (to show bar when in hide mode). */ + enum { + M_NONE = 0, + M_CONTROL = 1, + M_SHIFT = 2, + M_MOD1 = 3, + M_MOD2 = 4, + M_MOD3 = 5, + M_MOD4 = 6, + M_MOD5 = 7 + } modifier; /** Bar position (bottom by default). */ enum { P_BOTTOM = 0, P_TOP = 1 } position; @@ -218,24 +267,33 @@ struct Barconfig { * zero. */ bool hide_workspace_buttons; + /** Hide mode button? Configuration option is 'binding_mode_indicator no' + * but we invert the bool for the same reason as hide_workspace_buttons.*/ + bool hide_binding_mode_indicator; + /** Enable verbose mode? Useful for debugging purposes. */ bool verbose; struct bar_colors { char *background; char *statusline; + char *separator; - char *focused_workspace_text; + char *focused_workspace_border; char *focused_workspace_bg; + char *focused_workspace_text; - char *active_workspace_text; + char *active_workspace_border; char *active_workspace_bg; + char *active_workspace_text; - char *inactive_workspace_text; + char *inactive_workspace_border; char *inactive_workspace_bg; + char *inactive_workspace_text; - char *urgent_workspace_text; + char *urgent_workspace_border; char *urgent_workspace_bg; + char *urgent_workspace_text; } colors; TAILQ_ENTRY(Barconfig) configs; @@ -254,7 +312,7 @@ void load_configuration(xcb_connection_t *conn, const char *override_configfile, * Translates keysymbols to keycodes for all bindings which use keysyms. * */ -void translate_keysyms(); +void translate_keysyms(void); /** * Ungrabs all keys, to be called before re-grabbing the keys because of a @@ -275,12 +333,18 @@ void grab_all_keys(xcb_connection_t *conn, bool bind_mode_switch); */ void switch_mode(const char *new_mode); +/** + * 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. + * + */void update_barconfig(); + /** * Returns a pointer to the Binding with the specified modifiers and keycode * or NULL if no such binding exists. * */ -Binding *get_binding(uint16_t modifiers, xcb_keycode_t keycode); +Binding *get_binding(uint16_t modifiers, bool key_release, xcb_keycode_t keycode); /** * Kills the configerror i3-nagbar process, if any. @@ -292,8 +356,3 @@ Binding *get_binding(uint16_t modifiers, xcb_keycode_t keycode); * */ void kill_configerror_nagbar(bool wait_for_it); - -/* prototype for src/cfgparse.y */ -void parse_file(const char *f); - -#endif