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§
- The interface lets sandboxed applications create screen cast sessions.
- A PipeWire stream.
- A response to a
Screencast::start
request.
Enums§
- A bit flag for the possible cursor modes.
- A bit flag for the available sources to record.
Traits§
- Defines which portals session can be used in a screen-cast.