diff --git a/main.c b/main.c index 9453557364ade5f1e0f570ba83e613b0685044e8..fff831bd126e9932c53051e9d2ea27f29e05446f 100644 --- a/main.c +++ b/main.c @@ -1,9 +1,17 @@ #include +#include #include #include "glitch.h" WindowManager wm = {0}; + +void handle_signal(int signal) { + wm.running = 0; + wm.restart = 1; + printf("running: %d\n", wm.running); + log_message(stderr, LOG_DEBUG, "Signal received: %d", signal); +} static void* expose_timer_thread(void* arg) { (void)arg; @@ -48,6 +56,10 @@ log_message(stderr, LOG_ERROR, "failed to create timer thread"); } else { pthread_detach(timer_tid); } + + // SIGUSR1 is used for restarting the window manager. + // kill -s SIGUSR1 $(pidof glitch) + signal(SIGUSR1, handle_signal); wm.running = 1; while(wm.running) {