31 lines
1015 B
Rust
31 lines
1015 B
Rust
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
|
|
})
|
|
}
|