migration from exec i3bar to bar config: i3 substitutes exec with a bar block, shows nagbar
This commit is contained in:
parent
d7eba46de5
commit
753d67fb64
|
@ -173,7 +173,7 @@ static int handle_expose(xcb_connection_t *conn, xcb_expose_event_t *event) {
|
|||
line_width = 1;
|
||||
for (int c = 0; c < buttoncnt; c++) {
|
||||
/* TODO: make w = text extents of the label */
|
||||
w = 90;
|
||||
w = 100;
|
||||
y -= 30;
|
||||
xcb_change_gc_single(conn, pixmap_gc, XCB_GC_FOREGROUND, color_button_background);
|
||||
close = (xcb_rectangle_t){ y - w - (2 * line_width), 2, w + (2 * line_width), rect.height - 6 };
|
||||
|
|
|
@ -35,6 +35,7 @@ extern TAILQ_HEAD(barconfig_head, Barconfig) barconfigs;
|
|||
*/
|
||||
struct context {
|
||||
bool has_errors;
|
||||
bool has_warnings;
|
||||
|
||||
int line_number;
|
||||
char *line_copy;
|
||||
|
|
|
@ -286,13 +286,17 @@ static void start_configerror_nagbar(const char *config_path) {
|
|||
exit(1);
|
||||
char *argv[] = {
|
||||
NULL, /* will be replaced by the executable path */
|
||||
"-t",
|
||||
(context->has_errors ? "error" : "warning"),
|
||||
"-m",
|
||||
"You have an error in your i3 config file!",
|
||||
(context->has_errors ?
|
||||
"You have an error in your i3 config file!" :
|
||||
"Your config is outdated. Please fix the warnings to make sure everything works."),
|
||||
"-b",
|
||||
"edit config",
|
||||
editaction,
|
||||
(errorfilename ? "-b" : NULL),
|
||||
"show errors",
|
||||
(context->has_errors ? "show errors" : "show warnings"),
|
||||
pageraction,
|
||||
NULL
|
||||
};
|
||||
|
@ -390,6 +394,31 @@ static void check_for_duplicate_bindings(struct context *context) {
|
|||
}
|
||||
}
|
||||
|
||||
static void migrate_i3bar_exec(struct Autostart *exec) {
|
||||
ELOG("**********************************************************************\n");
|
||||
ELOG("IGNORING exec command: %s\n", exec->command);
|
||||
ELOG("It contains \"i3bar\". Since i3 v4.1, i3bar will be automatically started\n");
|
||||
ELOG("for each 'bar' configuration block in your i3 config. Please remove the exec\n");
|
||||
ELOG("line and add the following to your i3 config:\n");
|
||||
ELOG("\n");
|
||||
ELOG(" bar {\n");
|
||||
ELOG(" status_command i3status\n");
|
||||
ELOG(" }\n");
|
||||
ELOG("**********************************************************************\n");
|
||||
|
||||
/* Generate a dummy bar configuration */
|
||||
Barconfig *bar_config = scalloc(sizeof(Barconfig));
|
||||
/* The hard-coded ID is not a problem. It does not conflict with the
|
||||
* auto-generated bar IDs and having multiple hard-coded IDs is irrelevant
|
||||
* – they all just contain status_command = i3status */
|
||||
bar_config->id = sstrdup("migrate-bar");
|
||||
bar_config->status_command = sstrdup("i3status");
|
||||
TAILQ_INSERT_TAIL(&barconfigs, bar_config, configs);
|
||||
|
||||
/* Trigger an i3-nagbar */
|
||||
context->has_warnings = true;
|
||||
}
|
||||
|
||||
void parse_file(const char *f) {
|
||||
SLIST_HEAD(variables_head, Variable) variables = SLIST_HEAD_INITIALIZER(&variables);
|
||||
int fd, ret, read_bytes = 0;
|
||||
|
@ -553,7 +582,31 @@ void parse_file(const char *f) {
|
|||
|
||||
check_for_duplicate_bindings(context);
|
||||
|
||||
if (context->has_errors) {
|
||||
/* XXX: The following code will be removed in i3 v4.3 (three releases from
|
||||
* now, as of 2011-10-22) */
|
||||
/* Check for any exec or exec_always lines starting i3bar. We remove these
|
||||
* and add a bar block instead. Additionally, a i3-nagbar warning (not an
|
||||
* error) will be displayed so that users update their config file. */
|
||||
struct Autostart *exec, *next;
|
||||
for (exec = TAILQ_FIRST(&autostarts); exec; ) {
|
||||
next = TAILQ_NEXT(exec, autostarts);
|
||||
if (strstr(exec->command, "i3bar") != NULL) {
|
||||
migrate_i3bar_exec(exec);
|
||||
TAILQ_REMOVE(&autostarts, exec, autostarts);
|
||||
}
|
||||
exec = next;
|
||||
}
|
||||
|
||||
for (exec = TAILQ_FIRST(&autostarts_always); exec; ) {
|
||||
next = TAILQ_NEXT(exec, autostarts_always);
|
||||
if (strstr(exec->command, "i3bar") != NULL) {
|
||||
migrate_i3bar_exec(exec);
|
||||
TAILQ_REMOVE(&autostarts_always, exec, autostarts_always);
|
||||
}
|
||||
exec = next;
|
||||
}
|
||||
|
||||
if (context->has_errors || context->has_warnings) {
|
||||
start_configerror_nagbar(f);
|
||||
}
|
||||
|
||||
|
@ -1356,7 +1409,7 @@ assign:
|
|||
ELOG("You are using the old assign syntax (without criteria). "
|
||||
"Please see the User's Guide for the new syntax and fix "
|
||||
"your config file.\n");
|
||||
context->has_errors = true;
|
||||
context->has_warnings = true;
|
||||
printf("assignment of %s to *%s*\n", $2, $3);
|
||||
char *workspace = $3;
|
||||
char *criteria = $2;
|
||||
|
|
Loading…
Reference in New Issue