aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.rs16
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,