35个版本
0.9.1 | 2024年7月14日 |
---|---|
0.8.1 | 2024年3月16日 |
0.6.7 | 2023年10月18日 |
0.4.0 | 2023年3月24日 |
0.1.0 | 2020年9月14日 |
#26 在 GUI
146,693 每月下载量
用于 90 个Crate (12直接)
410KB
7K SLoC
ASHPD
ASHPD,即Aperture Science Handheld Portal Device的缩写,是Rust和zbus对XDG portals DBus接口的包装器。该库旨在提供一种简单的方式来与根据规范定义的各种门户进行交互。它提供了对C库https://github.com/flatpak/libportal的替代方案。
示例
请求合成器选择颜色
use ashpd::desktop::Color;
async fn run() -> ashpd::Result<()> {
let color = Color::pick().send().await?.response()?;
println!("({}, {}, {})", color.red(), color.green(), color.blue());
Ok(())
}
从用户的摄像头启动PipeWire流
use ashpd::desktop::camera::Camera;
pub async fn run() -> ashpd::Result<()> {
let camera = Camera::new().await?;
if camera.is_present().await? {
camera.request_access().await?;
let remote_fd = camera.open_pipe_wire_remote().await?;
// pass the remote fd to GStreamer for example
}
Ok(())
}
可选功能
功能 | 描述 | 默认 |
---|---|---|
tracing | 使用tracing 库记录各种调试信息 |
否 |
tokio | 在zbus依赖项上启用tokio运行时 | 否 |
async-std | 启用async-std运行时的使用 | 是 |
glib | 使所有枚举推导出glib::Enum 。目前尚不支持标志 |
否 |
gtk4 | 为gdk4::RGBA 实现WindowIdentifier::from_native ,它接受一个IsA<gtk4::Native> |
否 |
gtk4_wayland | 提供了只支持 Wayland 后端的 WindowIdentifier::from_native 函数 |
否 |
gtk4_x11 | 提供了只支持 X11 后端的 WindowIdentifier::from_native 函数 |
否 |
pipewire | 提供了 ashpd::desktop::camera::pipewire_streams ,帮助你检索与检索到的文件描述符关联的各种相机流 |
否 |
raw_handle | 为 raw-window-handle crate 提供了 WindowIdentifier::from_raw_handle 和 WindowIdentifier::as_raw_handle 函数 |
否 |
wayland | 为 wayland-client crate 提供了 WindowIdentifier::from_wayland 函数 |
否 |
演示
该库附带了一个使用 GTK 4 Rust 绑定 构建的 演示,预览了大多数门户。它被视为门户的测试用例(从分销商的角度来看),同时也是开发人员查看哪些门户存在以及如何使用 ASHPD 将它们集成到其应用程序中的途径。
依赖关系
~7–21MB
~344K SLoC