diff --git a/sway/main.c b/sway/main.c index 6e3f6b67..6e2f16db 100644 --- a/sway/main.c +++ b/sway/main.c @@ -31,10 +31,16 @@ static int exit_value = 0; struct sway_server server = {0}; void sway_terminate(int exit_code) { - terminate_request = true; - exit_value = exit_code; - ipc_event_shutdown("exit"); - wl_display_terminate(server.wl_display); + if (!server.wl_display) { + // Running as IPC client + exit(exit_code); + } else { + // Running as server + terminate_request = true; + exit_value = exit_code; + ipc_event_shutdown("exit"); + wl_display_terminate(server.wl_display); + } } void sig_handler(int signal) {