e3913093b6
The hidden_state and mode of each i3bar instance can now be controlled from within i3. Therefore, two new i3 command were introduced: _ bar hidden_state show|hide|toggle [<bar_id>] show: always show the bar hide: normal hide mode toggle: toggle between show and hide (individually for each bar) _ bar mode dock|hide|invisible|toggle [<bar_id>] hide,dock: like before invisible: always keep the bar hidden toggle: toggle between dock and hide (individually for each bar) This patch introduces a hidden_state ("hidden_state hide|show") in the barconfig, which indicates the current hidden_state of each i3bar instance. It only affects the bar when in hide mode. Additionally, a new invisible mode was introduced. In order to change the hidden_state or mode of the bar from i3, a barconfig-update event was introduced, for which a bar can subscribe and the bar then gets notified about the currently set hidden_state and mode in its barconfig. For convenience, an id field ("id <bar_id>") was added to the barconfig, where one can set the desired id for the corresponding bar. If the id is not specified, i3 will deterministically choose an id; otherwise, with the previous random approach for finding a new id, which is actually not shared with i3bar, as it would determine its id on startup, the event-subscription would be destroyed on reload. Still, this issue remains when manually changing the bar_id in the config and then reloading. fixes #833, #651
81 lines
3.4 KiB
C
81 lines
3.4 KiB
C
/*
|
||
* vim:ts=4:sw=4:expandtab
|
||
*
|
||
* i3 - an improved dynamic tiling window manager
|
||
* © 2009-2012 Michael Stapelberg and contributors (see also: LICENSE)
|
||
*
|
||
* config_directives.h: all config storing functions (see config_parser.c)
|
||
*
|
||
*/
|
||
#ifndef I3_CONFIG_DIRECTIVES_H
|
||
#define I3_CONFIG_DIRECTIVES_H
|
||
|
||
#include "config_parser.h"
|
||
|
||
/** The beginning of the prototype for every cfg_ function. */
|
||
#define I3_CFG Match *current_match, struct ConfigResult *result
|
||
|
||
/* Defines a configuration function, that is, anything that can be called by
|
||
* using 'call cfg_foo()' in parser-specs/.*.spec. Useful so that we don’t need
|
||
* to repeat the definition all the time. */
|
||
#define CFGFUN(name, ...) \
|
||
void cfg_ ## name (I3_CFG, ## __VA_ARGS__ )
|
||
|
||
/* The following functions are called by the config parser, see
|
||
* parser-specs/config.spec. They get the parsed parameters and store them in
|
||
* our data structures, e.g. cfg_font gets a font name and stores it in
|
||
* config.font.
|
||
*
|
||
* Since they are so similar, individual comments were omitted. */
|
||
|
||
CFGFUN(criteria_init, int _state);
|
||
CFGFUN(criteria_add, const char *ctype, const char *cvalue);
|
||
CFGFUN(criteria_pop_state);
|
||
|
||
CFGFUN(font, const char *font);
|
||
CFGFUN(exec, const char *exectype, const char *no_startup_id, const char *command);
|
||
CFGFUN(for_window, const char *command);
|
||
CFGFUN(floating_minimum_size, const long width, const long height);
|
||
CFGFUN(floating_maximum_size, const long width, const long height);
|
||
CFGFUN(default_orientation, const char *orientation);
|
||
CFGFUN(workspace_layout, const char *layout);
|
||
CFGFUN(workspace_back_and_forth, const char *value);
|
||
CFGFUN(focus_follows_mouse, const char *value);
|
||
CFGFUN(force_focus_wrapping, const char *value);
|
||
CFGFUN(force_xinerama, const char *value);
|
||
CFGFUN(fake_outputs, const char *outputs);
|
||
CFGFUN(force_display_urgency_hint, const long duration_ms);
|
||
CFGFUN(hide_edge_borders, const char *borders);
|
||
CFGFUN(assign, const char *workspace);
|
||
CFGFUN(ipc_socket, const char *path);
|
||
CFGFUN(restart_state, const char *path);
|
||
CFGFUN(popup_during_fullscreen, const char *value);
|
||
CFGFUN(color, const char *colorclass, const char *border, const char *background, const char *text, const char *indicator);
|
||
CFGFUN(color_single, const char *colorclass, const char *color);
|
||
CFGFUN(floating_modifier, const char *modifiers);
|
||
CFGFUN(new_window, const char *windowtype, const char *border, const long width);
|
||
CFGFUN(workspace, const char *workspace, const char *output);
|
||
CFGFUN(binding, const char *bindtype, const char *modifiers, const char *key, const char *release, const char *command);
|
||
|
||
CFGFUN(enter_mode, const char *mode);
|
||
CFGFUN(mode_binding, const char *bindtype, const char *modifiers, const char *key, const char *release, const char *command);
|
||
|
||
CFGFUN(bar_font, const char *font);
|
||
CFGFUN(bar_mode, const char *mode);
|
||
CFGFUN(bar_hidden_state, const char *hidden_state);
|
||
CFGFUN(bar_id, const char *bar_id);
|
||
CFGFUN(bar_output, const char *output);
|
||
CFGFUN(bar_verbose, const char *verbose);
|
||
CFGFUN(bar_modifier, const char *modifier);
|
||
CFGFUN(bar_position, const char *position);
|
||
CFGFUN(bar_i3bar_command, const char *i3bar_command);
|
||
CFGFUN(bar_color, const char *colorclass, const char *border, const char *background, const char *text);
|
||
CFGFUN(bar_socket_path, const char *socket_path);
|
||
CFGFUN(bar_tray_output, const char *output);
|
||
CFGFUN(bar_color_single, const char *colorclass, const char *color);
|
||
CFGFUN(bar_status_command, const char *command);
|
||
CFGFUN(bar_workspace_buttons, const char *value);
|
||
CFGFUN(bar_finish);
|
||
|
||
#endif
|