Get desktop application:
View/edit binary Protocol Buffers messages
### 022 - Application Image This message, which must originate from the server on the same stream as the corresponding `021 - Fetch Application Image` message, sends the requested image data to the client.
Required. Must be a complete PNG file and less than 1048576 bytes. Either restriction may be lifted or in the future.
### Application Image Format Distinguishes between different images associated with an application.
Used in:
,A roughly 400x200 image for display in a list of applications.
### 012 - Application List This message, which must originate from the server on the same stream as a corresponding `011 - List Applications` message, indicates the list of available applications to launch as sessions.
Used in:
Required. Must be unique.
A list of path components, used to group applications for display.
If set, the image can be fetched with a `021 - Fetch Application Image` message.
### 030 - Attach This message, which must originate from the client on a new stream, requests that the server attach the client to the named session. Upon receipt of this request, the server must either refuse the attachment with an `001 - Error` message, or send an `031 - Attached` message on the same stream and start sending video and audio packets to the client. Ommitted fields indicate that the server should choose the parameters. The server may choose to reject the attachment for any reason, including but not limited to: - The output parameters, such as resolution or codec, are invalid or not supported. - The server already has a client attached to that session, and wishes to limit the number of attachments (or doesn't support multiple attachments). - The authentication so far provided doesn't grant the client access to that session with that attachment type.
Required.
Required.
Must be in the range 1-10.
### 031 - Attached This message, which must originate from the server on the same stream as the original `030 - Attach` message, indicates that the server accepts the client and will begin streaming with the client's requested parameters. The parameters must match the parameters sent in the original `030 - Attach` message, or represent the server-chosen default if they were ommitted.
Required.
Required.
Required.
Required.
Required.
Required.
Required.
Required.
Required.
### Attachment type This refers to the manner of attachment.
Used in:
### Audio channels This defines a map of channels to speaker positions.
Used in:
,Used in:
### 056 - Audio Chunk This message, which must originate from the server as a datagram or on the same stream as the original `030 - Attach` message, contains a part of an audio packet.
Required unless sent on the same stream as the original attach message.
Required. Represents the ordering of packets in a stream and the association of packets to an audio stream.
Required unless an FEC scheme is used. Taken together, these represent the placement of a chunk within a packet. If `fec_metadata` is set, both these fields must be unset.
Contains FEC metadata to locate the chunk within the overall packet.
Required. A millisecond timestamp with an arbitrary epoch, used to synchronize audio and video streams.
Required. The chunk of the audio packet, or, if an FEC scheme is used, a single symbol from the stream of symbols.
### Audio codec This refers to the codec used for an audio stream.
Used in:
,### 035 - Detach This message, which must originate from the client on the stream where the original `030 - Attach` message was sent, indicates that the client wishes to detach and end streaming. Upon receipt of this message, the server must stop streaming frames or accepting input on the attachment stream.
(message has no fields)
### 019 - End Session This message, which must originate from the client on a new stream, requests that the server end the named session and detach all clients. If a server chooses to comply, it should send `001 - Error` messages to all other attached clients (with ERR_SESSION_ENDED_BY_CLIENT), and an `020 - Session Ended` message on this stream. Otherwise, it should send an `001 - Error` message on this stream.
Required.
### 001 - Error This message may be sent by a server or client at any time on any stream.
Required.
Used in:
Used to indicate an unrecoverable error on the server.
Used to indicate a protocol violation.
Used to indicate that the server refuses to launch a session.
Used to indicate the session update couldn't be applied.
Used to indicate that the server refuses to allow the client to attach to the session.
Used to indicate that the session has ended.
Used for several session operations.
Used to indicate a failed authentication attempt or ignored challenge.
Used to indicate missing or insufficient credentials on another request.
Required.
Required.
### FEC Scheme Indicates a Forward Error Correction scheme used to protect packets, and contains any data needed to locate a chunk within a packet. Definitions for the concepts can be found in RFCs 3452 and 5052.
Used in:
,Required. Indicates the scheme used.
Required. Contains the scheme-specific serialized Payload ID.
Required. Contains the scheme-specific serialized Object Transmission Information (OTI).
Used in:
Uses the RaptorQ scheme defined in RFC 6630.
### 021 - Fetch Application Image This message, which must originate from the client on a new stream, requests image metadata for an application. The Server must respond with either an `022 - Application Image` message or an `001 - Error` message on the same stream.
Required.
Required.
### Gamepad A gamepad ID and metadata.
Used in:
, ,Required.
Required.
Used in:
### 070 - Gamepad Available This message, which must originate from the client on the same stream as the original `030 - Attach` message, indicates that a gamepad is available on the client.
Required. The ID should remain stable if the gamepad is unplugged and replugged.
### 073 - Gamepad Input This message, which must originate from the client on the same stream as the original `030 - Attach` message, indicates input from a gamepad button.
Required.
Required.
Required
Used in:
X on a DualShock/DualSense, A on an Xbox gamepad, and B on a Nintendo gamepad.
The right and left shoulder buttons, usually called L1 and R1.
The left and right joystick buttons, usually called L3 and R3.
Assorted buttons on the face of the gamepad.
Occasionally, gamepads will have another two buttons next to the NESW buttons.
Very rarely, gamepads will have another set of buttons rather than triggers.
Used in:
### 072 - Gamepad Motion This message, which must originate from the client on the same stream as the original `030 - Attach` message, indicates movement on a joystick or trigger.
Required.
Required.
Required, with a value from -1.0 (towards the top of the gamepad) to 1.0 (towards the bottom of the gamepad). Zero always represents the resting position, and triggers will therefore usually range from 0.0 to 1.0 (fully pressed).
Used in:
The left and right joysticks on a standard two-stick gamepad.
The soft triggers on a standard two-stick gamepad, usually called L2 and R2.
### 071 - Gamepad Unavailable This message, which must originate from the client on the same stream as the original `030 - Attach` message, indicates that a gamepad is no longer available, for example because it was unplugged.
Required.
### 032 - Keep Alive This message, which must originate from the client on the stream where the original `030 - Attach` message was sent, indicates that the client is still attached. The server may take the absence of a regular `Keep Alive` message to indicate that the client has gone away should be considered detached.
(message has no fields)
### 060 - Keyboard Input This message, which must originate from the client on the same stream as the original `030 - Attach` message, represents keyboard input from the user.
Required. The physical key that was pressed.
Required.
A unicode code point for text input, required unless the keypress would not result in a character. This may be completely unrelated to the physical key, depending on the software keyboard layout on the client side.
These map to the keycodes from the W3C "UI Events" specification. It represents the key location, irrespective of keyboard layout or character output. Media and remote control keys are omitted. https://w3c.github.io/uievents-code/#code-value-tables
Used in:
Used in:
### 013 - Launch Session This message, which must originate from the client on a new stream, requests that the server launch the application specified by `id`. The id should match the id of an application returned by `012 - Application List`. The server must either launch a session, replying with `014 - Session Launched` once the session has started and is available to attach, or send an `001 - Error` message on the same stream indicating why it refuses to do so.
Required; must match the id of an application returned in "12 - Application List".
Required.
Any gamepads that should be available at the start of the session. This is sometimes important for applications that don't correctly support hotplugged devices. These gamepads should be considered permanently connected, and GamepadUnavailable events should be ignored for them.
### 011 - List Applications This message, which must originate from the client on a new stream, requests a list of available applications to launch as sessions. The server must either respond with an `012 - Application List` message or an `001 - Error` message on the same stream.
(message has no fields)
### 017 - List Sessions This message, which must originate from the client on a new stream, requests a list of attachable sessions. The server must respond with either `018 - Session List` or an `001 - Error` on the same stream.
(message has no fields)
### 067 - Lock Pointer This message, which must originate from the server on the same stream as the original `030 - Attach` message, indicates that the pointer should be locked to the given location. The coordinates should be in the space defined by the `streaming_resolution` field of the `030 - Attach` message.
### Pixel Scale Represents a rational number, used in the context of HiDPI displays. Fractions less than one are not allowed. For example, a pixel density of 1.5 would be represented as 3/2.
Used in:
Required.
Required.
### 061 - Pointer Entered This message, which must be sent by the client on the same stream as the original `030 - Attach` message, indicates that the Pointer has entered the window area.
(message has no fields)
### 064 - Pointer Input This message, which must be sent by the client on the same stream as the original `030 - Attach` message, indicates a Pointer button event.
Required.
Required.
Required.
Required.
Used in:
Used in:
### 062 - Pointer Left This message, which must be sent by the client on the same stream as the original `030 - Attach` message, indicates that the Pointer has left the window area.
(message has no fields)
### 063 - Pointer Motion This message, which must be sent by the client on the same stream as the original `030 - Attach` message, indicates that the Pointer has moved to a new position. The coordinates should be in the space defined by the `streaming_resolution` field of the `030 - Attach` message.
Required.
Required.
### 065 - Pointer Scroll This message, which must be sent by the client on the same stream as the original `030 - Attach` message, indicates that the user has scrolled, either using the mouse wheel, a touchpad, or some other mechanism. The scroll_type determines how the values of x and y are interpreted. `CONTINUOUS` indicates a vector in pixels, in the coordinate space defined by the `resolution` parameter of the `VirtualDisplayParams` set on the session. Discrete indicates individual steps, for example on a clicky scroll wheel. In both cases, positive values indicate that the scrolled content should move right and down, revealing more content to the top and left.
Used in:
### 069 - Relative Pointer Motion This message, which must originate from the client on the same stream as the original `030 - Attach` message, indicates that the Pointer has moved. The vector should be in the space defined by the `streaming_resolution` field of the `030 - Attach` message.
Required.
Required.
### 068 - Release Pointer This message, which must originate from the server on the same stream as the original `030 - Attach` message, indicates the pointer should be no longer be locked.
(message has no fields)
### 052 - Request Video Refresh This message, which must be sent by the client on the same stream as the original `030 - Attach` message, requests that the server perform an IDR refresh in the current video stream as soon as possible. The server should send stream headers and a full keyframe as soon as possible, unless the indicated stream is ended or restarted.
### 020 - Session Ended. This message, which must originate from the server on the same stream as the corresponding `019 - End Session` message, confirms that the session has been ended.
(message has no fields)
### 014 - Session Launched This message, which must originate from the server on the same stream as the corresponding `013 - Launch Session` message, indicates that the session has successfully launched and may be attached.
Required.
Required. Must include at least the `render_resolution` specified in the corresponding `013 - Launch Session` message.
### 018 - Session List This message, which must originate from the server on the same stream as the corresponding `017 - List Sessions` request, indicates a list of attachable sessions to the client.
Used in:
Required.
Required.
Required.
Required.
Required. Must include at least the `render_resolution` of the session.
Required if any were set in the original `013 - Launch Session` event.
### 033 - Session Parameters Changed This message, which must originate from the server on the same stream as the original `030 - Attach` message, indicates that the parameters of the attached session have changed. If `reattach_required` is set to true, the client should consider the attachment to be ended and reattach with new parameters.
Required. Must include at least the `render_resolution` of the session.
### 016 - Session Updated This message, which must originate from the server on the same stream as the corresponding `015 - Update Session` message, indicates that the requested update was successfully applied.
(message has no fields)
### Size, Extent A `Size` is a width, height tuple, mainly used to describe areas. An `Extent` includes a starting position. The coordinate space depends on where these structs are used, but should always be oriented with [0, 0] in the top left position.
Used in:
, , , , ,Required.
Required.
### Timestamp Represents an instant independent of time zone or local calendar, represented as the sum of seconds and nanoseconds since the UNIX epoch of January 1st, 1970.
Used in:
Required.
Required.
### 066 - Update Cursor This message, which must be sent by the server on the same stream as the original `030 - Attach` message, indicates that the cursor image has changed and the client should use the new one when the cursor is over the window.
Required.
The cursor image, encoded as a PNG file. If set, the client should use this and use the icon field solely as a fallback.
Relates to the image, if set.
Corresponds to the W3C UI specification. https://www.w3.org/TR/css-ui-3/#cursor
Used in:
### 015 - Update Session This message, which must originate from the client on a new stream, requests that the server update the parameters of a running session. An ommitted value indicates that the existing setting should remain. The server must respond with either `016 - Session Updated` or `001 - Error` on the same stream.
Required.
### 051 - Video Chunk This message, which must originate from the server as a datagram or on the same stream as the original `030 - Attach` message, contains a part of a video packet. Much of the metadata associated with the chunk applies to all chunks of a given packet, but must be repeated on each chunk such that a client receiving the first (potentially out-of-order) chunk has sufficient information to deal with it.
Required unless sent on the same stream as the original attach message.
Required. Represents the ordering of packets in a stream and the association of packets to a video stream.
Required unless an FEC scheme is used. Taken together, these represent the placement of a chunk within a packet. If `fec_metadata` is set, both these fields must be unset.
If the encoder is using hierarchical coding (sometimes called SVC), this field indicates the layer that the packet belongs to.
Contains FEC metadata to locate the chunk within the overall packet.
Required. A millisecond timestamp with an arbitrary epoch, used to synchronize audio and video streams.
Required. The chunk of the video packet, or, if an FEC scheme is used, a single symbol from the stream of symbols.
### Video codec This refers to the codec used for a video stream.
Used in:
,### Video profile This refers to the profile used for a video stream. Profiles are fully defined in the output section, below.
Used in:
,### Virtual Output Params Represents the configuration of a virtual display, which is required to launch a session.
Used in:
, , ,Required.
Required.
Required.