1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//! ASHPD, acronym of Aperture Science Handheld Portal Device is a Rust & [zbus](https://gitlab.freedesktop.org/dbus/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](https://flatpak.github.io/xdg-desktop-portal/portal-docs.html).
//!
//! It provides an alternative to the C library <https://github.com/flatpak/libportal>.
//!
//! # Examples
//!
//! 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(())
//! }
//! ```
//!
//! For a tour of the various portals, see the ASHPD demo application.
//!
//! # Optional features
//!
//! | Feature | Description |
//! | --- | ----------- |
//! | feature_gtk3 | Implement From<[Color](desktop::screenshot::Color)> for [`gdk3::RGBA`](https://gtk-rs.org/gtk3-rs/stable/latest/docs/gdk/struct.RGBA.html) |
//! | | Provides `WindowIdentifier::from_window` that takes a [`IsA<gdk3::Window>`](https://gtk-rs.org/gtk3-rs/stable/latest/docs/gdk/struct.Window.html) |
//! | feature_gtk4 | Implement From<[Color](desktop::screenshot::Color)> for [`gdk4::RGBA`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gdk4/struct.RGBA.html) |
//! | | Provides `WindowIdentifier::from_root` that takes a [`IsA<gtk4::Root>`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.Root.html) |
compile_error!;
/// Interact with the user's desktop such as taking a screenshot, setting a
/// background or querying the user's location.
/// Interact with the documents store or transfer files across apps.
pub use WindowIdentifier;
/// Spawn commands outside the sandbox or monitor if the running application has
/// received an update & install it.
pub use enumflags2;
pub use zbus;
pub use zvariant;
/// Check whether the application is running inside a sandbox.
///
/// **Note** The check is very stupid as is for now.
pub use Error;