diff --git a/swaybar/bar.c b/swaybar/bar.c index f4dd4405d..231c1ad7a 100644 --- a/swaybar/bar.c +++ b/swaybar/bar.c @@ -413,10 +413,6 @@ bool bar_setup(struct swaybar *bar, const char *socket_path) { if (!ipc_initialize(bar)) { return false; } - if (bar->config->status_command) { - bar->status = status_line_init(bar->config->status_command); - bar->status->bar = bar; - } bar->display = wl_display_connect(NULL); if (!bar->display) { @@ -445,6 +441,11 @@ bool bar_setup(struct swaybar *bar, const char *socket_path) { assert(pointer->cursor_surface); } + if (bar->config->status_command) { + bar->status = status_line_init(bar->config->status_command); + bar->status->bar = bar; + } + #if HAVE_TRAY if (!bar->config->tray_hidden) { bar->tray = create_tray(bar); diff --git a/swaybar/status_line.c b/swaybar/status_line.c index fb9271f82..71ceb1d04 100644 --- a/swaybar/status_line.c +++ b/swaybar/status_line.c @@ -1,4 +1,5 @@ #define _POSIX_C_SOURCE 200809L +#include #include #include #include @@ -153,6 +154,8 @@ struct status_line *status_line_init(char *cmd) { exit(1); } + assert(!getenv("WAYLAND_SOCKET") && "display must be initialized before " + " starting `status-command`; WAYLAND_SOCKET should not be set"); status->pid = fork(); if (status->pid == 0) { dup2(pipe_read_fd[1], STDOUT_FILENO);