Add SIGUSR1 to restart the window manager

Author Mitja Felicijan <mitja.felicijan@gmail.com> 2026-01-25 01:26:21 +0100
Committer Mitja Felicijan <mitja.felicijan@gmail.com> 2026-01-25 01:26:21 +0100
Commit b1b86d7e54e037a83850eb45df801b29b0ea1fbf (patch)
-rw-r--r-- main.c 12
1 files changed, 12 insertions, 0 deletions
diff --git a/main.c b/main.c
1
#include <pthread.h>
1
#include <pthread.h>
  
2
#include <signal.h>
2
#include <unistd.h>
3
#include <unistd.h>
3
  
4
  
4
#include "glitch.h"
5
#include "glitch.h"
5
  
6
  
6
WindowManager wm = {0};
7
WindowManager wm = {0};
  
8
  
  
9
void handle_signal(int signal) {
  
10
	wm.running = 0;
  
11
	wm.restart = 1;
  
12
	printf("running: %d\n", wm.running);
  
13
	log_message(stderr, LOG_DEBUG, "Signal received: %d", signal);
  
14
}
7
  
15
  
8
static void* expose_timer_thread(void* arg) {
16
static void* expose_timer_thread(void* arg) {
9
	(void)arg;
17
	(void)arg;
...
48
	} else {
56
	} else {
49
		pthread_detach(timer_tid);
57
		pthread_detach(timer_tid);
50
	}
58
	}
  
59
  
  
60
	// SIGUSR1 is used for restarting the window manager.
  
61
	// kill -s SIGUSR1 $(pidof glitch)
  
62
	signal(SIGUSR1, handle_signal);
51
  
63
  
52
	wm.running = 1;
64
	wm.running = 1;
53
	while(wm.running) {
65
	while(wm.running) {
...