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日

#26GUI

Download history 20780/week @ 2024-05-04 25791/week @ 2024-05-11 23285/week @ 2024-05-18 22270/week @ 2024-05-25 22738/week @ 2024-06-01 20277/week @ 2024-06-08 22635/week @ 2024-06-15 23177/week @ 2024-06-22 24185/week @ 2024-06-29 28875/week @ 2024-07-06 32440/week @ 2024-07-13 31521/week @ 2024-07-20 31979/week @ 2024-07-27 37482/week @ 2024-08-03 39181/week @ 2024-08-10 33629/week @ 2024-08-17

146,693 每月下载量
用于 90 个Crate (12直接)

MIT 许可证

410KB
7K SLoC

ASHPD

docs crates.io CI

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_handleWindowIdentifier::as_raw_handle 函数
wayland wayland-client crate 提供了 WindowIdentifier::from_wayland 函数

演示

该库附带了一个使用 GTK 4 Rust 绑定 构建的 演示,预览了大多数门户。它被视为门户的测试用例(从分销商的角度来看),同时也是开发人员查看哪些门户存在以及如何使用 ASHPD 将它们集成到其应用程序中的途径。

依赖关系

~7–21MB
~344K SLoC