X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=include%2Fconfig.h;h=b62599936dc9dd3c17fea0453a4ef2ee9f965df9;hb=cd0cd0c3d22d7acba240ca10d8594621cc67ee34;hp=680830fd06e3846b36383e4c23c0f903defbcb51;hpb=ed2bcc15e384be99225a247435f6cff678e64f0c;p=i3%2Fi3 diff --git a/include/config.h b/include/config.h index 680830fd..b6259993 100644 --- a/include/config.h +++ b/include/config.h @@ -6,12 +6,11 @@ * * 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" @@ -95,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; @@ -108,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 @@ -134,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; @@ -150,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; @@ -157,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; @@ -166,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; }; /** @@ -196,8 +229,11 @@ 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 { @@ -231,12 +267,17 @@ 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_border; char *focused_workspace_bg; @@ -271,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 @@ -292,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. @@ -309,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