Skip to main content

Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

A Wayland client that enumerates capturable toplevels and outputs and drives their capture sessions over ext-image-copy-capture.

Implementations§

Source§

impl Client

Source

pub fn connect() -> Result<Self>

Connect, bind the capture managers, and enumerate windows + outputs.

Source

pub fn toplevels(&self) -> &[Toplevel]

The currently known capturable windows.

Source

pub fn outputs(&self) -> &[Output]

The currently known capturable outputs.

Source

pub fn refresh(&mut self) -> Result<()>

Drain pending Wayland events (new/closed toplevels, etc.) without blocking on a capture, so the source list stays current between capture rounds.

Source

pub fn open_toplevel_session(&mut self, t: &Toplevel) -> Result<SessionId>

Open a persistent capture session for a window. The session and its buffer live until Client::close_session (or the source disappears); re-arm a frame each cycle with [Client::capture].

Source

pub fn open_output_session(&mut self, o: &Output) -> Result<SessionId>

Open a persistent capture session for an output. See Client::open_toplevel_session.

Source

pub fn close_session(&mut self, id: &SessionId)

Tear down a session (e.g. its window closed).

Source

pub fn capture_output_once( &mut self, output: &Output, budget: Duration, ) -> Result<Frame>

One-shot: capture a single frame of output, then tear the session down. Blocks up to budget. For screenshots / timelapse ticks.

Source

pub fn capture_toplevel_once( &mut self, toplevel: &Toplevel, budget: Duration, ) -> Result<Frame>

One-shot: capture a single frame of toplevel, then tear the session down.

Source

pub fn poll( &mut self, budget: Duration, ) -> (Vec<(SessionId, Frame)>, Vec<SessionId>)

Drive all open sessions for up to budget: arm a frame on every idle session, wait for events, and return the frames that became ready (the sources that produced new content). Sessions whose source is static simply keep their frame armed and deliver nothing — which is exactly right, there is nothing new to show.

Also returns the ids of sessions the compositor stopped (e.g. their window closed), so the caller can drop and (if still listed) reopen them.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Client

§

impl !Send for Client

§

impl !Sync for Client

§

impl !UnwindSafe for Client

§

impl Freeze for Client

§

impl Unpin for Client

§

impl UnsafeUnpin for Client

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, S> SimdFrom<T, S> for T
where S: Simd,

Source§

fn simd_from(value: T, _simd: S) -> T

Source§

impl<F, T, S> SimdInto<T, S> for F
where T: SimdFrom<F, S>, S: Simd,

Source§

fn simd_into(self, simd: S) -> T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more