Implement new "i3bar_command" option for bar.

This allows you to specify an alternate path to the i3bar binary.
The userguide docu is included.
This commit is contained in:
Jan-Erik Rediger 2011-11-24 21:53:29 +01:00 committed by Michael Stapelberg
parent 0e6d1909b8
commit f23d675de9
6 changed files with 43 additions and 2 deletions

View File

@ -796,6 +796,28 @@ bar {
} }
--------------------------- ---------------------------
=== i3bar command
By default i3 will just pass +i3bar+ and let your shell handle the execution,
searching your +$PATH+ for a correct version.
If you have a different +i3bar+ somewhere or the binary is not in your +$PATH+ you can
tell i3 what to execute.
The specified command will be passed to +sh -c+, so you can use globbing and
have to have correct quoting etc.
*Syntax*:
----------------------
i3bar_command command
----------------------
*Example*:
-------------------------------------------------
bar {
i3bar_command /home/user/bin/i3bar
}
-------------------------------------------------
=== Statusline command === Statusline command
i3bar can run a program and display every line of its +stdout+ output on the i3bar can run a program and display every line of its +stdout+ output on the

View File

@ -201,6 +201,11 @@ struct Barconfig {
/** Bar position (bottom by default). */ /** Bar position (bottom by default). */
enum { P_BOTTOM = 0, P_TOP = 1 } position; enum { P_BOTTOM = 0, P_TOP = 1 } position;
/** Command that should be run to execute i3bar, give a full path if i3bar is not
* in your $PATH.
* By default just 'i3bar' is executed. */
char *i3bar_command;
/** Command that should be run to get a statusline, for example 'i3status'. /** Command that should be run to get a statusline, for example 'i3status'.
* Will be passed to the shell. */ * Will be passed to the shell. */
char *status_command; char *status_command;

View File

@ -102,6 +102,7 @@ EOL (\r?\n)
<BAR_POSITION>bottom { yy_pop_state(); return TOK_BAR_BOTTOM; } <BAR_POSITION>bottom { yy_pop_state(); return TOK_BAR_BOTTOM; }
<BAR_POSITION>top { yy_pop_state(); return TOK_BAR_TOP; } <BAR_POSITION>top { yy_pop_state(); return TOK_BAR_TOP; }
<BAR>status_command { WS_STRING; return TOK_BAR_STATUS_COMMAND; } <BAR>status_command { WS_STRING; return TOK_BAR_STATUS_COMMAND; }
<BAR>i3bar_command { WS_STRING; return TOK_BAR_I3BAR_COMMAND; }
<BAR>font { WS_STRING; return TOK_BAR_FONT; } <BAR>font { WS_STRING; return TOK_BAR_FONT; }
<BAR>workspace_buttons { return TOK_BAR_WORKSPACE_BUTTONS; } <BAR>workspace_buttons { return TOK_BAR_WORKSPACE_BUTTONS; }
<BAR>verbose { return TOK_BAR_VERBOSE; } <BAR>verbose { return TOK_BAR_VERBOSE; }

View File

@ -705,6 +705,7 @@ void parse_file(const char *f) {
%token TOK_BAR_BOTTOM "bottom" %token TOK_BAR_BOTTOM "bottom"
%token TOK_BAR_TOP "top" %token TOK_BAR_TOP "top"
%token TOK_BAR_STATUS_COMMAND "status_command" %token TOK_BAR_STATUS_COMMAND "status_command"
%token TOK_BAR_I3BAR_COMMAND "i3bar_command"
%token TOK_BAR_FONT "font (bar)" %token TOK_BAR_FONT "font (bar)"
%token TOK_BAR_WORKSPACE_BUTTONS "workspace_buttons" %token TOK_BAR_WORKSPACE_BUTTONS "workspace_buttons"
%token TOK_BAR_VERBOSE "verbose" %token TOK_BAR_VERBOSE "verbose"
@ -1029,6 +1030,7 @@ barlines:
barline: barline:
comment comment
| bar_status_command | bar_status_command
| bar_i3bar_command
| bar_output | bar_output
| bar_tray_output | bar_tray_output
| bar_position | bar_position
@ -1055,6 +1057,15 @@ bar_status_command:
} }
; ;
bar_i3bar_command:
TOK_BAR_I3BAR_COMMAND STR
{
DLOG("should add i3bar_command %s\n", $2);
FREE(current_bar.i3bar_command);
current_bar.i3bar_command = $2;
}
;
bar_output: bar_output:
TOK_BAR_OUTPUT STR TOK_BAR_OUTPUT STR
{ {

View File

@ -299,6 +299,7 @@ void load_configuration(xcb_connection_t *conn, const char *override_configpath,
FREE(barconfig->tray_output); FREE(barconfig->tray_output);
FREE(barconfig->socket_path); FREE(barconfig->socket_path);
FREE(barconfig->status_command); FREE(barconfig->status_command);
FREE(barconfig->i3bar_command);
FREE(barconfig->font); FREE(barconfig->font);
FREE(barconfig->colors.background); FREE(barconfig->colors.background);
FREE(barconfig->colors.statusline); FREE(barconfig->colors.statusline);

View File

@ -689,7 +689,8 @@ int main(int argc, char *argv[]) {
Barconfig *barconfig; Barconfig *barconfig;
TAILQ_FOREACH(barconfig, &barconfigs, configs) { TAILQ_FOREACH(barconfig, &barconfigs, configs) {
char *command = NULL; char *command = NULL;
sasprintf(&command, "i3bar --bar_id=%s --socket=\"%s\"", sasprintf(&command, "%s --bar_id=%s --socket=\"%s\"",
barconfig->i3bar_command ? barconfig->i3bar_command : "i3bar",
barconfig->id, current_socketpath); barconfig->id, current_socketpath);
LOG("Starting bar process: %s\n", command); LOG("Starting bar process: %s\n", command);
start_application(command, true); start_application(command, true);