Final Release of Version 1.0
This commit is contained in:
parent
434fe1721c
commit
425b746780
34 changed files with 3129 additions and 567 deletions
|
|
@ -71,7 +71,10 @@ fn hyprland_event_socket() -> Result<PathBuf> {
|
|||
.collect();
|
||||
|
||||
match sockets.len() {
|
||||
0 => Err(anyhow!("no Hyprland instance found in {}", hypr_dir.display())),
|
||||
0 => Err(anyhow!(
|
||||
"no Hyprland instance found in {}",
|
||||
hypr_dir.display()
|
||||
)),
|
||||
1 => Ok(sockets.remove(0)),
|
||||
n => {
|
||||
warn!("found {n} Hyprland instances, using first");
|
||||
|
|
|
|||
|
|
@ -1,21 +1,21 @@
|
|||
use anyhow::Result;
|
||||
use async_trait::async_trait;
|
||||
use bread_shared::RawEvent;
|
||||
use tokio::sync::{mpsc, watch, RwLock};
|
||||
use tracing::info;
|
||||
use serde::Serialize;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::{mpsc, watch, RwLock};
|
||||
use tracing::info;
|
||||
|
||||
use crate::core::config::Config;
|
||||
use crate::core::supervisor::spawn_supervised;
|
||||
|
||||
pub mod hyprland;
|
||||
pub mod network;
|
||||
pub mod power;
|
||||
pub mod udev;
|
||||
pub mod network_rtnetlink;
|
||||
pub mod power;
|
||||
pub mod power_upower;
|
||||
pub mod udev;
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
|
|
@ -71,7 +71,7 @@ impl Manager {
|
|||
}
|
||||
|
||||
if self.config.adapters.hyprland.enabled {
|
||||
self.spawn_adapter(hyprland::HyprlandAdapter::default());
|
||||
self.spawn_adapter(hyprland::HyprlandAdapter);
|
||||
}
|
||||
|
||||
if self.config.adapters.power.enabled {
|
||||
|
|
@ -92,7 +92,7 @@ impl Manager {
|
|||
if let Ok(adapter) = rt {
|
||||
self.spawn_adapter(adapter);
|
||||
} else {
|
||||
self.spawn_adapter(network::NetworkAdapter::default());
|
||||
self.spawn_adapter(network::NetworkAdapter);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,14 @@ impl Adapter for RtnetlinkAdapter {
|
|||
"netns_id": netns_id,
|
||||
"netns_fd": netns_fd
|
||||
});
|
||||
let _ = tx.send(RawEvent { source: AdapterSource::Network, kind: kind.to_string(), payload, timestamp: bread_shared::now_unix_ms() }).await;
|
||||
let _ = tx
|
||||
.send(RawEvent {
|
||||
source: AdapterSource::Network,
|
||||
kind: kind.to_string(),
|
||||
payload,
|
||||
timestamp: bread_shared::now_unix_ms(),
|
||||
})
|
||||
.await;
|
||||
}
|
||||
}
|
||||
netlink_packet_core::NetlinkPayload::InnerMessage(RtnlMessage::NewRoute(route)) => {
|
||||
|
|
@ -86,17 +93,32 @@ impl Adapter for RtnetlinkAdapter {
|
|||
"gateway": gateway_ip,
|
||||
"table": route.header.table
|
||||
});
|
||||
let _ = tx.send(RawEvent { source: AdapterSource::Network, kind: "route.default.changed".to_string(), payload, timestamp: bread_shared::now_unix_ms() }).await;
|
||||
let _ = tx
|
||||
.send(RawEvent {
|
||||
source: AdapterSource::Network,
|
||||
kind: "route.default.changed".to_string(),
|
||||
payload,
|
||||
timestamp: bread_shared::now_unix_ms(),
|
||||
})
|
||||
.await;
|
||||
}
|
||||
}
|
||||
netlink_packet_core::NetlinkPayload::InnerMessage(RtnlMessage::NewAddress(addr)) => {
|
||||
netlink_packet_core::NetlinkPayload::InnerMessage(RtnlMessage::NewAddress(
|
||||
addr,
|
||||
)) => {
|
||||
let address = addr.nlas.iter().find_map(|nla| match nla {
|
||||
netlink_packet_route::address::nlas::Nla::Address(bytes) => Some(bytes.clone()),
|
||||
netlink_packet_route::address::nlas::Nla::Local(bytes) => Some(bytes.clone()),
|
||||
netlink_packet_route::address::nlas::Nla::Address(bytes) => {
|
||||
Some(bytes.clone())
|
||||
}
|
||||
netlink_packet_route::address::nlas::Nla::Local(bytes) => {
|
||||
Some(bytes.clone())
|
||||
}
|
||||
_ => None,
|
||||
});
|
||||
let label = addr.nlas.iter().find_map(|nla| match nla {
|
||||
netlink_packet_route::address::nlas::Nla::Label(label) => Some(label.clone()),
|
||||
netlink_packet_route::address::nlas::Nla::Label(label) => {
|
||||
Some(label.clone())
|
||||
}
|
||||
_ => None,
|
||||
});
|
||||
let ip = address.as_deref().and_then(ip_from_bytes);
|
||||
|
|
@ -107,16 +129,31 @@ impl Adapter for RtnetlinkAdapter {
|
|||
"address": ip,
|
||||
"label": label
|
||||
});
|
||||
let _ = tx.send(RawEvent { source: AdapterSource::Network, kind: "address.added".to_string(), payload, timestamp: bread_shared::now_unix_ms() }).await;
|
||||
let _ = tx
|
||||
.send(RawEvent {
|
||||
source: AdapterSource::Network,
|
||||
kind: "address.added".to_string(),
|
||||
payload,
|
||||
timestamp: bread_shared::now_unix_ms(),
|
||||
})
|
||||
.await;
|
||||
}
|
||||
netlink_packet_core::NetlinkPayload::InnerMessage(RtnlMessage::DelAddress(addr)) => {
|
||||
netlink_packet_core::NetlinkPayload::InnerMessage(RtnlMessage::DelAddress(
|
||||
addr,
|
||||
)) => {
|
||||
let address = addr.nlas.iter().find_map(|nla| match nla {
|
||||
netlink_packet_route::address::nlas::Nla::Address(bytes) => Some(bytes.clone()),
|
||||
netlink_packet_route::address::nlas::Nla::Local(bytes) => Some(bytes.clone()),
|
||||
netlink_packet_route::address::nlas::Nla::Address(bytes) => {
|
||||
Some(bytes.clone())
|
||||
}
|
||||
netlink_packet_route::address::nlas::Nla::Local(bytes) => {
|
||||
Some(bytes.clone())
|
||||
}
|
||||
_ => None,
|
||||
});
|
||||
let label = addr.nlas.iter().find_map(|nla| match nla {
|
||||
netlink_packet_route::address::nlas::Nla::Label(label) => Some(label.clone()),
|
||||
netlink_packet_route::address::nlas::Nla::Label(label) => {
|
||||
Some(label.clone())
|
||||
}
|
||||
_ => None,
|
||||
});
|
||||
let ip = address.as_deref().and_then(ip_from_bytes);
|
||||
|
|
@ -127,7 +164,14 @@ impl Adapter for RtnetlinkAdapter {
|
|||
"address": ip,
|
||||
"label": label
|
||||
});
|
||||
let _ = tx.send(RawEvent { source: AdapterSource::Network, kind: "address.removed".to_string(), payload, timestamp: bread_shared::now_unix_ms() }).await;
|
||||
let _ = tx
|
||||
.send(RawEvent {
|
||||
source: AdapterSource::Network,
|
||||
kind: "address.removed".to_string(),
|
||||
payload,
|
||||
timestamp: bread_shared::now_unix_ms(),
|
||||
})
|
||||
.await;
|
||||
}
|
||||
_ => {
|
||||
debug!("unhandled netlink message");
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ use serde_json::json;
|
|||
use std::collections::HashMap;
|
||||
use tokio::sync::mpsc;
|
||||
use tracing::{debug, info};
|
||||
use zbus::{Message, MessageStream};
|
||||
use zbus::zvariant::{OwnedObjectPath, OwnedValue};
|
||||
use zbus::{Message, MessageStream};
|
||||
|
||||
use super::Adapter;
|
||||
|
||||
|
|
|
|||
|
|
@ -165,7 +165,11 @@ fn enumerate_with_udev(subsystems: &[String]) -> Result<Vec<ScannedDevice>> {
|
|||
.or_else(|| dev.sysname().to_str().map(ToString::to_string))
|
||||
.unwrap_or_else(|| "unknown".to_string());
|
||||
let id = dev.syspath().to_string_lossy().to_string();
|
||||
out.push(ScannedDevice { id, name, subsystem });
|
||||
out.push(ScannedDevice {
|
||||
id,
|
||||
name,
|
||||
subsystem,
|
||||
});
|
||||
}
|
||||
|
||||
Ok(out)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue