Higher level, asynchronous, pure Rust AT-SPI2 protocol implementation using zbus.
Part of the Odilia screen reader project.
- Fully documented, with
#[deny(missing_docs)]
- Or at least, it will be by 1.0
- Fully safe, with
#[deny(unsafe_code)]
- Fantastic code style with
#[deny(clippy:all, clippy::pedantic, clippy::cargo)]
This crate makes use of the
zbus crate for
dbus communication.
We use the asynchronous zbus API, so to use atspi, you will need to run an async executer like
tokio or
async-std.
The async-io
and tokio
features are exposed and will be passed through to zbus.
Atspi is used to send and receive data to and from applications. Sender and recipient need to agree on the shape of the data type for fruitful communication. Our best bet is to keep our types in sync with the protocol descriptions.
We employ zbus-lockstep to match types against those defined in the AT-SPI2 protocol descriptions.
Not all types can be validated (easily) with zbus_lockstep because types may not exist in the protocol descriptions, for example because they are deprecated (but still in use) or we have chosen a different representation.
A (partial) review of type validation may be found here
The atspi
library is licensed as Apache 2.0 or MIT.