ashpd::desktop

Module screencast

Source
Expand description

Start a screencast session and get the PipeWire remote of it.

§Examples

How to create a screen cast session & start it. The portal is currently useless without PipeWire & Rust support.

use ashpd::desktop::{
    screencast::{CursorMode, Screencast, SourceType},
    PersistMode,
};

async fn run() -> ashpd::Result<()> {
    let proxy = Screencast::new().await?;
    let session = proxy.create_session().await?;
    proxy
        .select_sources(
            &session,
            CursorMode::Metadata,
            SourceType::Monitor | SourceType::Window,
            true,
            None,
            PersistMode::DoNot,
        )
        .await?;

    let response = proxy.start(&session, None).await?.response()?;
    response.streams().iter().for_each(|stream| {
        println!("node id: {}", stream.pipe_wire_node_id());
        println!("size: {:?}", stream.size());
        println!("position: {:?}", stream.position());
    });
    Ok(())
}

Structs§

Enums§

  • A bit flag for the possible cursor modes.
  • A bit flag for the available sources to record.

Traits§