ASHPD, acronym of Aperture Science Handheld Portal Device is a Rust & zbus wrapper of the XDG portals DBus interfaces. The library aims to provide an easy way to interact with the various portals defined per the specifications. It provides an alternative to the C library https://github.com/flatpak/libportal
Ask the compositor to pick a color
```rust,no_run use ashpd::desktop::screenshot::ScreenshotProxy;
async fn run() -> Result<(), ashpd::Error> { let connection = zbus::azync::Connection::new_session().await?; let proxy = ScreenshotProxy::new(&connection).await?;
let color = proxy.pick_color(Default::default()).await?;
println!("({}, {}, {})", color.red(), color.green(), color.blue());
Ok(())
} ```
Start a PipeWire stream from the user's camera
```rust,no_run use ashpd::desktop::camera::CameraProxy;
pub async fn run() -> Result<(), ashpd::Error> { let connection = zbus::azync::Connection::new_session().await?; let proxy = CameraProxy::new(&connection).await?;
if proxy.is_camera_present().await? {
proxy.access_camera().await?;
let remote_fd = proxy.open_pipe_wire_remote().await?;
// pass the remote fd to GStreamer for example
}
Ok(())
} ```
| Feature | Description |
| --- | ----------- |
| featuregtk3 | Implement From<Color>
for gdk3::RGBA
|
| | Provides WindowIdentifier::from_window
that takes a IsA<gdk3::Window>
|
| featuregtk4 | Implement From<Color>
for gdk4::RGBA
|
| | Provides WindowIdentifier::from_root
that takes a IsA<gtk4::Root>
|