diff --git a/Cargo.toml b/Cargo.toml index 779d137..b1b4efe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ members = [ "accounts-zbus", "bluez", "cosmic-settings-daemon", + "fprint", "geoclue2", "hostname1", "locale1", diff --git a/fprint/Cargo.toml b/fprint/Cargo.toml new file mode 100644 index 0000000..7c7da6f --- /dev/null +++ b/fprint/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "fprint-zbus" +version = "0.1.0" +description = "dbus bindings for net.reactivated.Fprint with zbus" +repository = "https://github.com/pop-os/dbus-settings-bindings" +edition = "2021" +license = "MPL-2.0" +categories = ["os::linux-apis"] +keywords = ["dbus", "fprint", "zbus", "freedesktop"] + +[dependencies] +zbus = "4.2.1" diff --git a/fprint/src/lib.rs b/fprint/src/lib.rs new file mode 100644 index 0000000..25836c7 --- /dev/null +++ b/fprint/src/lib.rs @@ -0,0 +1,66 @@ +// Copyright 2025 Titouan Real +// SPDX-License-Identifier: MPL-2.0 + +use zbus::proxy; + +#[proxy( + interface = "net.reactivated.Fprint.Manager", + default_service = "net.reactivated.Fprint", + default_path = "/net/reactivated/Fprint/Manager" +)] +pub trait FprintManager { + fn get_default_device(&self) -> zbus::Result; + + fn get_devices(&self) -> zbus::Result>; +} + +#[proxy( + interface = "net.reactivated.Fprint.Device", + default_service = "net.reactivated.Fprint", + assume_defaults = true +)] +pub trait FprintDevice { + fn claim(&self, username: &str) -> zbus::Result<()>; + + fn delete_enrolled_finger(&self, finger_name: &str) -> zbus::Result<()>; + + fn delete_enrolled_fingers(&self, username: &str) -> zbus::Result<()>; + + fn delete_enrolled_fingers2(&self) -> zbus::Result<()>; + + fn enroll_start(&self, finger_name: &str) -> zbus::Result<()>; + + fn enroll_stop(&self) -> zbus::Result<()>; + + fn list_enrolled_fingers(&self, username: &str) -> zbus::Result>; + + fn release(&self) -> zbus::Result<()>; + + fn verify_start(&self, finger_name: &str) -> zbus::Result<()>; + + fn verify_stop(&self) -> zbus::Result<()>; + + #[zbus(signal)] + fn enroll_status(&self, result: &str, done: bool) -> zbus::Result<()>; + + #[zbus(signal)] + fn verify_finger_selected(&self, finger_name: &str) -> zbus::Result<()>; + + #[zbus(signal)] + fn verify_status(&self, result: &str, done: bool) -> zbus::Result<()>; + + #[zbus(property, name = "finger-needed")] + fn finger_needed(&self) -> zbus::Result; + + #[zbus(property, name = "finger-present")] + fn finger_present(&self) -> zbus::Result; + + #[zbus(property, name = "name")] + fn name(&self) -> zbus::Result; + + #[zbus(property, name = "num-enroll-stages")] + fn num_enroll_stages(&self) -> zbus::Result; + + #[zbus(property, name = "scan-type")] + fn scan_type(&self) -> zbus::Result; +}