mirror of
https://codeberg.org/icewind/shortcutd.git
synced 2026-06-03 09:14:07 +02:00
updates
This commit is contained in:
parent
22cd9700bb
commit
d4ce62a42c
19 changed files with 2724 additions and 1988 deletions
1215
server/Cargo.lock
generated
Normal file
1215
server/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -5,21 +5,19 @@ authors = ["Robin Appelman <robin@icewind.nl>"]
|
|||
edition = "2021"
|
||||
description = "shortcutd server"
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://github.com/icewind1991/shortcutd"
|
||||
repository = "https://codeberg.org/icewind/shortcutd"
|
||||
|
||||
[[bin]]
|
||||
name = "shortcutd"
|
||||
path = "src/server.rs"
|
||||
|
||||
[dependencies]
|
||||
main_error = "0.1.0"
|
||||
glob = "0.3.0"
|
||||
evdev-shortcut = "0.1.4"
|
||||
tokio = { version = "1.28.2", features = ["macros", "rt-multi-thread"] }
|
||||
futures = "0.3.28"
|
||||
zbus = { version = "3.13.1", features = ["tokio"], default-features = false }
|
||||
tracing = "0.1.37"
|
||||
tracing-subscriber = "0.3.17"
|
||||
|
||||
[dev-dependencies]
|
||||
test-case = "3.1.0"
|
||||
main_error = "0.1.2"
|
||||
glob = "0.3.2"
|
||||
evdev-shortcut = "0.1.5"
|
||||
tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] }
|
||||
futures = "0.3.31"
|
||||
zbus = { version = "5.7.1", features = ["tokio"], default-features = false }
|
||||
zbus_macros = "5.7.1"
|
||||
tracing = "0.1.41"
|
||||
tracing-subscriber = "0.3.19"
|
||||
|
|
|
|||
|
|
@ -3,9 +3,11 @@ use futures::stream::StreamExt;
|
|||
use glob::GlobError;
|
||||
use main_error::MainError;
|
||||
use std::path::PathBuf;
|
||||
use std::pin::pin;
|
||||
use tracing::{error, info};
|
||||
use zbus::export::futures_util::pin_mut;
|
||||
use zbus::{dbus_interface, fdo, ConnectionBuilder, ObjectServer, SignalContext};
|
||||
use zbus::conn::Builder;
|
||||
use zbus::{fdo, object_server::SignalEmitter, ObjectServer};
|
||||
use zbus_macros::interface;
|
||||
|
||||
struct Register {
|
||||
listener: ShortcutListener,
|
||||
|
|
@ -14,7 +16,7 @@ struct Register {
|
|||
|
||||
const MAX_BARE: usize = 3;
|
||||
|
||||
#[dbus_interface(name = "nl.icewind.shortcutd")]
|
||||
#[interface(name = "nl.icewind.shortcutd")]
|
||||
impl Register {
|
||||
async fn register(
|
||||
&mut self,
|
||||
|
|
@ -48,10 +50,10 @@ impl Register {
|
|||
|
||||
struct ShortcutSignal;
|
||||
|
||||
#[dbus_interface(name = "nl.icewind.shortcutd")]
|
||||
#[interface(name = "nl.icewind.shortcutd")]
|
||||
impl ShortcutSignal {
|
||||
#[dbus_interface(signal)]
|
||||
async fn triggered(signal_ctxt: &SignalContext<'_>, pressed: bool) -> zbus::Result<()>;
|
||||
#[zbus(signal)]
|
||||
async fn triggered(signal_context: &SignalEmitter<'_>, pressed: bool) -> zbus::Result<()>;
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
|
|
@ -61,13 +63,13 @@ async fn main() -> Result<(), MainError> {
|
|||
glob::glob("/dev/input/by-id/*-kbd")?.collect::<Result<Vec<PathBuf>, GlobError>>()?;
|
||||
|
||||
let listener = ShortcutListener::new();
|
||||
let shortcut_events = listener.listen(&devices)?;
|
||||
let mut shortcut_events = pin!(listener.listen(&devices)?);
|
||||
|
||||
let bus = Register {
|
||||
listener,
|
||||
bare_count: 0,
|
||||
};
|
||||
let conn = ConnectionBuilder::system()
|
||||
let conn = Builder::system()
|
||||
.map_err(|e| {
|
||||
error!(error = ?e, "error while connecting to dbus system socket");
|
||||
e
|
||||
|
|
@ -83,13 +85,12 @@ async fn main() -> Result<(), MainError> {
|
|||
|
||||
let server = conn.object_server();
|
||||
|
||||
pin_mut!(shortcut_events);
|
||||
while let Some(event) = shortcut_events.next().await {
|
||||
let event: ShortcutEvent = event;
|
||||
let identifier = format!("/{}", event.shortcut.identifier());
|
||||
if let Ok(signal_interface) = server.interface::<_, ShortcutSignal>(identifier).await {
|
||||
if let Err(e) = ShortcutSignal::triggered(
|
||||
signal_interface.signal_context(),
|
||||
signal_interface.signal_emitter(),
|
||||
event.state == ShortcutState::Pressed,
|
||||
)
|
||||
.await
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue