ashpd 0.2.0-alpha-4

XDG portals wrapper in Rust using zbus
docs.rs failed to build ashpd-0.2.0-alpha-4
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build: ashpd-0.8.1

ASHPD

docs crates.io CI

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

Examples

Ask the compositor to pick a color

use ashpd::desktop::screenshot::ScreenshotProxy;
use ashpd::WindowIdentifier;

async fn run() -> ashpd::Result<()> {
    let connection = zbus::azync::Connection::session().await?;
    let proxy = ScreenshotProxy::new(&connection).await?;

    let color = proxy.pick_color(&WindowIdentifier::default()).await?;
    println!("({}, {}, {})", color.red(), color.green(), color.blue());
    Ok(())
}

Start a PipeWire stream from the user's camera

use ashpd::desktop::camera::CameraProxy;

pub async fn run() -> ashpd::Result<()> {
    let connection = zbus::azync::Connection::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(())
}

Optional features

Feature Description
feature_gtk3 Implement From<Color> for gdk3::RGBA
Provides WindowIdentifier::from_window that takes a IsA<gdk3::Window>
feature_gtk4 Implement From<Color> for gdk4::RGBA
Provides WindowIdentifier::from_native that takes a IsA<gtk4::Native>
feature_pipewire Provides ashpd::desktop::camera::pipewire_node_id that helps you retrieve the PipeWire Node ID to use with the file descriptor returned by the camera portal