Allow multiple tray_output directives.

This patch introduces the possibility to specify the tray_output directive
multiple times. All values will be used by i3bar, in the order they are
given.

This way, a single bar configuration can be used for several machines with
internal output names "eDP1" and "LVDS-0" by specifying tray_output for both.
Any external output (e.g., "DP-0") will still not receive the tray. The same
effect can be achieved by using "primary", but forces the user to couple the
tray display to the primary output which may not be desirable behavior.

relates to #555
This commit is contained in:
Ingo Bürk
2015-10-16 11:34:19 +02:00
parent beb89e64b4
commit bc250b26a0
9 changed files with 200 additions and 107 deletions

View File

@ -248,9 +248,10 @@ struct Barconfig {
* simplicity (since we store just strings). */
char **outputs;
/** Output on which the tray should be shown. The special value of 'no'
* disables the tray (its enabled by default). */
char *tray_output;
/* List of outputs on which the tray is allowed to be shown, in order.
* The special value "none" disables it (per default, it will be shown) and
* the special value "primary" enabled it on the primary output. */
TAILQ_HEAD(tray_outputs_head, tray_output_t) tray_outputs;
/* Padding around the tray icons. */
int tray_padding;
@ -366,6 +367,12 @@ struct Barbinding {
TAILQ_ENTRY(Barbinding) bindings;
};
struct tray_output_t {
char *output;
TAILQ_ENTRY(tray_output_t) tray_outputs;
};
/**
* Finds the configuration file to use (either the one specified by
* override_configpath), the users one or the system default) and calls