aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index cb58910e..3ec8b323 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -13,9 +13,9 @@ mod niri;
mod pw_utils;
mod utils;
-use std::env;
use std::ffi::OsString;
use std::path::PathBuf;
+use std::{env, mem};
use clap::Parser;
use config::Config;
@@ -57,7 +57,7 @@ fn main() {
let _client = tracy_client::Client::start();
- let config = match Config::load(cli.config).context("error loading config") {
+ let mut config = match Config::load(cli.config).context("error loading config") {
Ok(config) => config,
Err(err) => {
warn!("{err:?}");
@@ -65,6 +65,7 @@ fn main() {
}
};
animation::ANIMATION_SLOWDOWN.store(config.debug.animation_slowdown, Ordering::Relaxed);
+ let spawn_at_startup = mem::take(&mut config.spawn_at_startup);
let mut event_loop = EventLoop::try_new().unwrap();
let mut display = Display::new().unwrap();
@@ -76,10 +77,17 @@ fn main() {
);
let mut data = LoopData { display, state };
+ // Spawn commands from cli and auto-start.
if let Some((command, args)) = cli.command.split_first() {
spawn(command, args);
}
+ for elem in spawn_at_startup {
+ if let Some((command, args)) = elem.command.split_first() {
+ spawn(command, args);
+ }
+ }
+
event_loop
.run(None, &mut data, move |data| {
let _span = tracy_client::span!("loop callback");