mod listeners; mod manager; mod socket; use anyhow::{Context, Result}; fn main() -> Result<()> { // let systemd know we're ready let _ = libsystemd::daemon::notify(false, &[libsystemd::daemon::NotifyState::Ready])?; // debug stuff tracing_subscriber::fmt() .with_max_level(tracing::Level::DEBUG) .init(); let span = tracing::span!(tracing::Level::DEBUG, "main"); let _ = span.enter(); // spawn socket listener for niri event stream let (event_tx, event_rx) = smol::channel::unbounded(); smol::spawn(listeners::event_listener(event_tx)).detach(); // spawn socket listener for ipc let (ipc_tx, ipc_rx) = smol::channel::unbounded(); smol::spawn(listeners::ipc_listener(ipc_tx)).detach(); // begin managing niri tags smol::block_on(async { let niri_tag = manager::NiriTag::new() .await .context("Initialising niri tag manager") .unwrap(); niri_tag.manage_tags(event_rx, ipc_rx).await }) }