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(())
}

An example on how to connect with Pipewire can be found here.

Structs§

Screencast
The interface lets sandboxed applications create screen cast sessions.
Stream
A PipeWire stream.
StreamBuilderbackend
A builder-pattern type to construct a PipeWire stream Stream.
Streams
A response to a Screencast::start request.
StreamsBuilderbackend
A builder-pattern type to construct a response to a Screencast::start request.

Enums§

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

Traits§

HasScreencastSession
Defines which portals session can be used in a screen-cast.