8000 GitHub - C-Loftus/atspi: A fast AT-SPI protocol implementation written in pure Rust!
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

C-Loftus/atspi

 
 

Repository files navigation

AT-SPI for Rust

crates.io badge docs.rs badge CI badge Code coverage badge

Higher level, asynchronous, pure Rust AT-SPI2 protocol implementation using zbus.

Part of the Odilia screen reader project.

Design

  • 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.

Feature Flags

  • default: proxies, connection.
  • proxies: enable re-export of the atspi-proxies crate; this allows you to directly communicate with DBus.
  • connection: enable re-export of the atspi-connection crate; this gives some nice abstractions over DBus when receiving only. proxies will still be needed to query information actively.
  • tokio: enable support for the tokio runtime; other runtimes can be used without an integration feature.
  • tracing: enable support for the tracing logger.

D-Bus type validation

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

License

The atspi library is licensed as Apache 2.0 or MIT.

About

A fast AT-SPI protocol implementation written in pure Rust!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.3%
  • Python 0.7%
0