--- a/include/labwc.h +++ b/include/labwc.h @@ -162,6 +162,7 @@ struct wlr_compositor *compositor; struct wl_event_source *sighup_source; + struct wl_event_source *sigusr1_source; struct wl_event_source *sigint_source; struct wl_event_source *sigterm_source; struct wl_event_source *sigchld_source; --- a/src/server.c +++ b/src/server.c @@ -119,6 +119,15 @@ } static int +handle_sigusr1(int signal, void *data) +{ + struct server *server = data; + + cursor_set_visible(&server->seat, false); + return 0; +} + +static int handle_sigterm(int signal, void *data) { struct wl_display *display = data; @@ -440,6 +449,8 @@ /* Catch signals */ server->sighup_source = wl_event_loop_add_signal( server->wl_event_loop, SIGHUP, handle_sighup, server); + server->sigusr1_source = wl_event_loop_add_signal( + server->wl_event_loop, SIGUSR1, handle_sigusr1, server); server->sigint_source = wl_event_loop_add_signal( server->wl_event_loop, SIGINT, handle_sigterm, server->wl_display); server->sigterm_source = wl_event_loop_add_signal( @@ -770,6 +781,7 @@ desktop_entry_finish(server); #endif wl_event_source_remove(server->sighup_source); + wl_event_source_remove(server->sigusr1_source); wl_event_source_remove(server->sigint_source); wl_event_source_remove(server->sigterm_source); wl_event_source_remove(server->sigchld_source);