package term import "core:sync" import "core:sys/linux" intterm_called: bool sigint_sigterm_handler :: proc "c" (sig: linux.Signal) { sync.atomic_store(&intterm_called, true) } sigwinch_handler :: proc "c" (sig: linux.Signal) { // TODO: implement terminal resize } install_signal_handlers :: proc() { intterm_action := linux.Sig_Action { handler = sigint_sigterm_handler, } winch_action := linux.Sig_Action { handler = sigwinch_handler, } linux.rt_sigaction(.SIGINT, &intterm_action, nil) linux.rt_sigaction(.SIGTERM, &intterm_action, nil) linux.rt_sigaction(.SIGWINCH, &winch_action, nil) } should_quit :: proc() -> bool { return sync.atomic_load(&intterm_called) }