Enum FloatingSurfaceClientMessage
pub enum FloatingSurfaceClientMessage {
Show 19 variants
ActionMarkers {
markers: Vec<PaintedActionMarker>,
},
MoveDeviceDisplay {
request: u64,
placement: DeviceDisplayMove,
},
DeviceShellOutcome {
request: u64,
result: Result<Value, String>,
},
AllowHostShell,
OpenCaptureStudio {
mode: CaptureStudioProtocolMode,
},
Present {
request: FloatingSurfaceProtocolRequest,
},
UpdateRegion {
id: String,
region: [f64; 4],
},
SurfaceGeometry {
id: String,
rect: [f64; 4],
content_rect: [f64; 4],
input_rect: Option<[f64; 4]>,
},
SourceCleared {
id: String,
},
DestinationPresented {
id: String,
},
Suspend {
id: String,
rect: [f64; 4],
content_rect: [f64; 4],
},
Dismiss {
id: String,
},
SetCaptureProtection {
protected: bool,
generation: Option<u64>,
},
PaintStream {
payload: String,
page: [f64; 4],
scale: f64,
},
PaintCapable,
OpenTabBeside {
target: Option<String>,
background: bool,
instance: Option<u64>,
},
CloseTab {
instance: Option<u64>,
},
ReopenClosedTab,
PlaceNextWindowBeside {
background: bool,
instance: Option<u64>,
},
}Expand description
App → shell lifecycle. Suspend is the reversible half of an attached
↔ desktop handoff: the authenticated native surface and its renderer stay
warm while its pixels return to the app. Dismiss is deliberately
permanent and reserved for hang-up, navigation-end, or an explicit close.
Variants§
ActionMarkers
Complete primary-surface marker inventory from a successfully presented SDK frame. The host resolves surface and room from launch custody.
Fields
markers: Vec<PaintedActionMarker>MoveDeviceDisplay
A typed Settings request on the existing authenticated app connection.
DeviceShellOutcome
Bounded response to a trusted owner operation on this same connection.
AllowHostShell
Terminal asks for the existing host-shell permission prompt.
OpenCaptureStudio
Ask the trusted session shell to show its ordinary user-confirmed
chooser. This shares the same authenticated channel as floating
surfaces so a separately hosted app and an embedded app have identical
PiP UX.
Fields
Present
Fields
request: FloatingSurfaceProtocolRequestUpdateRegion
SurfaceGeometry
Live desktop placement of an app-owned secondary surface. The shell clamps it to the combined output before presentation.
Fields
SourceCleared
The primary window has presented a frame with the transferred pixels removed. The shell may now move its proxy/native surface away from the source rect without ever exposing two copies.
DestinationPresented
The primary app window has presented the first frame containing the reattached surface. Until this arrives, the compositor keeps a frozen copy of the last desktop-owned pixels in exactly the same place, so hiding the native secondary can never expose a blank transfer frame.
Suspend
Dismiss
SetCaptureProtection
Withhold every window of this app from captures — screenshots, recordings, screen sharing, remote viewers — or stop doing so. The local display is unaffected. The shell applies it to windows mapped later too, and drops it when this connection closes.
PaintStream
One frame of the page this app’s window shows, as a paint stream
(tilo_paint_stream::wire::Payload, base64): the session shares it
with web members as a display list they draw, instead of as video.
page is where the page sits in the window, in logical pixels, and
scale the window’s buffer scale, so the session can place input.
Sent only while the shell has asked for it (FloatingSurfaceHostMessage::PaintKeyframe).
PaintCapable
This app can stream its window’s page (sent once): the shell may ask
it to with FloatingSurfaceHostMessage::PaintKeyframe.
OpenTabBeside
Open another instance of this app as a desktop tab right after this
app’s own tab (see crate::shell_tabs). target is a URI the app’s
manifest declares, or None for an empty instance. instance is the
record instance the shell launched this process for; the shell only
uses it to find a tab that already shows this same app.
CloseTab
Close this app’s own tab through the desktop’s tab lifecycle.
ReopenClosedTab
Reopen the workspace’s most recently closed tab.
PlaceNextWindowBeside
The next window this app maps lands as a tab right after this one.
Trait Implementations§
§impl Clone for FloatingSurfaceClientMessage
impl Clone for FloatingSurfaceClientMessage
§fn clone(&self) -> FloatingSurfaceClientMessage
fn clone(&self) -> FloatingSurfaceClientMessage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for FloatingSurfaceClientMessage
impl Debug for FloatingSurfaceClientMessage
§impl<'de> Deserialize<'de> for FloatingSurfaceClientMessage
impl<'de> Deserialize<'de> for FloatingSurfaceClientMessage
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<FloatingSurfaceClientMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<FloatingSurfaceClientMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl PartialEq for FloatingSurfaceClientMessage
impl PartialEq for FloatingSurfaceClientMessage
§fn eq(&self, other: &FloatingSurfaceClientMessage) -> bool
fn eq(&self, other: &FloatingSurfaceClientMessage) -> bool
self and other values to be equal, and is used by ==.§impl Serialize for FloatingSurfaceClientMessage
impl Serialize for FloatingSurfaceClientMessage
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for FloatingSurfaceClientMessage
Auto Trait Implementations§
impl Freeze for FloatingSurfaceClientMessage
impl RefUnwindSafe for FloatingSurfaceClientMessage
impl Send for FloatingSurfaceClientMessage
impl Sync for FloatingSurfaceClientMessage
impl Unpin for FloatingSurfaceClientMessage
impl UnsafeUnpin for FloatingSurfaceClientMessage
impl UnwindSafe for FloatingSurfaceClientMessage
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
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>
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)
&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)
&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>
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>
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