diff options
| author | sodiboo <git@sodi.boo> | 2025-07-13 15:44:51 +0200 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-07-14 13:16:10 +0300 |
| commit | 22e43193e05ad49e2c3a34a0755ce41bc0c880a0 (patch) | |
| tree | 93f687a756555fad1a4c2ed028b110b6feea3dde /src | |
| parent | 7a2379ad35a8ff9297379dfa61f6d62d35050bad (diff) | |
| download | niri-22e43193e05ad49e2c3a34a0755ce41bc0c880a0.tar.gz niri-22e43193e05ad49e2c3a34a0755ce41bc0c880a0.tar.bz2 niri-22e43193e05ad49e2c3a34a0755ce41bc0c880a0.zip | |
handle `SIGINT`, `SIGTERM`, `SIGHUP`
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs index 25e6d153..d036c2a8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,7 @@ use std::path::{Path, PathBuf}; use std::process::Command; use std::{env, mem}; +use calloop::signals::{Signal, Signals}; use calloop::EventLoop; use clap::{CommandFactory, Parser}; use clap_complete::Shell; @@ -192,8 +193,21 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { store_and_increase_nofile_rlimit(); + // Create the main event loop. + let mut event_loop = EventLoop::<State>::try_new().unwrap(); + + // Handle Ctrl+C and other signals. + event_loop + .handle() + .insert_source( + Signals::new(&[Signal::SIGINT, Signal::SIGTERM, Signal::SIGHUP]).unwrap(), + |_, _, state| { + state.niri.stop_signal.stop(); + }, + ) + .unwrap(); + // Create the compositor. - let mut event_loop = EventLoop::try_new().unwrap(); let display = Display::new().unwrap(); let mut state = State::new( config, |
