Module ashpd::desktop::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,
    },
    WindowIdentifier,
};

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, &WindowIdentifier::default())
        .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.