Struct WaylandClipboard
pub struct WaylandClipboard { /* private fields */ }Expand description
wl_data_device + zwp_primary_selection_device_v1 on the app’s own
Wayland connection.
Built on smithay-clipboard, which runs the selection protocol on a
dedicated event queue over the existing connection. Sharing the
connection is the point: the compositor gates set_selection on keyboard
focus, and only the connection that owns the focused surface has it. A
second, separate connection would be a different client, would never hold
focus, and every copy from it would be refused.
Implementations§
§impl WaylandClipboard
impl WaylandClipboard
pub unsafe fn new(display_ptr: *mut c_void) -> WaylandClipboard
pub unsafe fn new(display_ptr: *mut c_void) -> WaylandClipboard
Attach to the wl_display behind display_ptr.
§Safety
display_ptr must be a live wl_display * that outlives the returned
value. In practice it comes from winit’s display handle and lives as
long as the event loop, which outlives every widget that could copy.
Trait Implementations§
§impl ClipboardBackend for WaylandClipboard
impl ClipboardBackend for WaylandClipboard
§fn request_text(&self, target: ClipboardTarget) -> Receiver<Option<String>>
fn request_text(&self, target: ClipboardTarget) -> Receiver<Option<String>>
Request text for an explicit paste. A native transfer may finish after
this call returns; the backend must wake its owner when it answers.
No answer may substitute text from an older selection or focus owner.
§fn set_text(&self, target: ClipboardTarget, text: &str) -> bool
fn set_text(&self, target: ClipboardTarget, text: &str) -> bool
Take ownership of
target and offer text on it. Returns false if
the backend could not.§fn text(&self, target: ClipboardTarget) -> Option<String>
fn text(&self, target: ClipboardTarget) -> Option<String>
Read
target as UTF-8. None when it is empty, unavailable, or holds
something that is not text.§fn set_image(&self, width: usize, height: usize, rgba: &[u8]) -> bool
fn set_image(&self, width: usize, height: usize, rgba: &[u8]) -> bool
Offer an RGBA8 image on the clipboard. Optional: the default refuses,
which is appropriate for backends that only carry text.
§fn rich_text(&self) -> Option<RichTextOffer>
fn rich_text(&self) -> Option<RichTextOffer>
Read HTML and its plain fallback from one Ctrl+V clipboard offer.
Optional: unsupported backends return
None without reading plain text.
A successful read consumes event-scoped offers; use the captured plain
fallback if decoding refuses the HTML. Never reread to recover a stale
selection, a permission refusal, or an active composition.§fn image(&self) -> Option<ClipboardImage>
fn image(&self) -> Option<ClipboardImage>
The image on the Ctrl+V clipboard, when it holds one: a screenshot,
an image copied in a viewer or a browser. Optional: the default reads
none, which is right for backends that only carry text.
Offer
text only where other processes can read it. Returns false
rather than keeping it in a buffer private to this process, so a
secret is never reported as copied when it was not. The default is
set_text, right for a backend that only reaches a
shared clipboard.§impl Drop for WaylandClipboard
impl Drop for WaylandClipboard
Auto Trait Implementations§
impl !Freeze for WaylandClipboard
impl RefUnwindSafe for WaylandClipboard
impl Send for WaylandClipboard
impl Sync for WaylandClipboard
impl Unpin for WaylandClipboard
impl UnsafeUnpin for WaylandClipboard
impl UnwindSafe for WaylandClipboard
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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.§fn as_any(&self) -> &(dyn Any + 'static)
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.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more