Remote-Viewer(1)

πŸ’– NAME πŸ’–

Okay bestie, this is Remote-Viewer(1) from the Virtualization Support manual, and it's giving simple remote desktop client. That's the whole name, no cap: remote-viewer β€” a simple remote desktop client. 🫢

✨ SYNOPSIS ✨

remote-viewer [OPTIONS] -- [URI]

πŸ¦‹ DESCRIPTION πŸ¦‹

remote-viewer is a simple remote display client. The supported protocols are SPICE and VNC. Periodt.

Starting remote-viewer without URI will open a simple dialog with an entry and a list of previously successfully accessed URI. Very β€œwe remembered your last connections” of it. πŸ’…

The URI can also point to a connection settings file, see the CONNECTION FILE section for a description of the format.

If URI is -, then remote-viewer will read the standard input as a connection settings file and attempt to connect using it. So yes, stdin is lowkey a valid vibe here. 😭

In some circumstances the viewer may need to grab the mouse pointer. The default key sequence for releasing the grab is Ctrl_L+Alt_L, however, this can be overridden using the --hotkeys argument documented below. Important mouse-grab lore. πŸ–±οΈ

πŸ’… OPTIONS πŸ’…

The following options are accepted when running remote-viewer β€” yes, all the slay buttons:

  • -h, --help β€” Display command line help summary
  • -V, --version β€” Display program version number
  • -v, --verbose β€” Display information about the connection
  • -z PCT, --zoom=PCT β€” Zoom level of the display window in percentage. Range 10-400.
  • -f, --full-screen β€” Start with the windows maximized to fullscreen.

If supported, the remote display will be reconfigured to match the physical client monitor configuration, by enabling or disabling extra monitors as necessary. This is currently implemented by the Spice backend only and can be disabled by the --auto-resize arguemnt.

To specify which client monitors are used in fullscreen mode, see the CONFIGURATION section below.

  • --auto-resize <always|never> β€” Controls whether it is permitted to attempt to resize the remote framebuffer to match the local window size. This currently defaults to on, but note that not all servers will support this.
  • -t TITLE, --title TITLE β€” Set the window title to TITLE
  • -s, --shared β€” Permitted a shared session with multiple clients
  • --cursor auto|local β€” Control how the mouse cursor is rendered. auto is the default behaviour, which will honour the behaviour requested by the remote server. This may involve the server remote rendering the cursor into the framebuffer, or sending the cursor details to the client to render. local overrides this default to request that the local desktop cursor is always rendered regardless of what the server requests. The latter is rarely needed, but can be used if the server has a bad configuration that results in its own cursor being hidden.
  • --debug β€” Print debugging information
  • -H HOTKEYS, --hotkeys HOTKEYS β€” Set global hotkey bindings. By default, keyboard shortcuts only work when the guest display widget does not have focus. Any actions specified in HOTKEYS will be effective even when the guest display widget has input focus. The format for HOTKEYS is <action1>=<key1>[+<key2>][,<action2>=<key3>[+<key4>]]. Key-names are case-insensitive. Valid actions are: toggle-fullscreen, release-cursor, zoom-in, zoom-out, zoom-reset, secure-attention, usb-device-reset, smartcard-insert and smartcard-remove. The secure-attention action sends a secure attention sequence (Ctrl+Alt+Del) to the guest. Examples:
--hotkeys=toggle-fullscreen=shift+f11,release-cursor=shift+f12

--hotkeys=release-cursor=ctrl+alt

Note that hotkeys for which no binding is given are disabled. Although the hotkeys specified here are handled by the client, it is still possible to send these key combinations to the guest via a menu item.

  • -K, --keymap β€” Remap and/or block supplied keypresses to the host. All key identifiers are case-sensitive and follow the naming convention as defined in gdkkeysyms.h without the GDK_KEY_ prefix.

Running the application with --debug will display keypress symbols in the following way:

"Key pressed was keycode='0x63', gdk_keyname='c'"
"Key pressed was keycode='0xffeb', gdk_keyname='Super_L'"

The format for supplying a keymap is:

<srcKeySym1>=[<destKeySym1>][+<destKeySym2][,<srckeySym2>=[<destKeySym1]

To block a keypress simply assign an empty parameter to the srcKeySym.

Example:

--keymap=Super_L=,Alt_L=,1=Shift_L+F1,2=Shift_L+F2

This will block the Super_L (typically Windows Key) and ALT_L keypresses and remap key 1 to Shift F1, 2 to Shift F2.

  • -k, --kiosk β€” Start in kiosk mode. In this mode, the application will start in fullscreen with minimal UI. It will prevent the user from quitting or performing any interaction outside of usage of the remote desktop session.
⚠️ Note that it can't offer a complete secure solution by itself. Your kiosk system must have additional configuration and security settings to lock down the OS. In particular, you must configure or disable the window manager, limit the session capabilities, use some restart/watchdog mechanism, disable VT switching etc.
  • --kiosk-quit <never|on-disconnect> β€” By default, when kiosk mode is enabled, virt-viewer will remain open when the connection to the remote server is terminated. By setting kiosk-quit option to on-disconnect value, virt-viewer will quit instead.

πŸŽ€ HOTKEY πŸŽ€

A key binding combination is described by a series of key strings separated by + that must be pressed together in order to activate the associated action.

It must be composed of modifiers (shift, ctrl or alt) and a non-modifier key. For example, shift+f11. That's the whole hotkey recipe. ✨

πŸ’Ύ CONNECTION FILE πŸ’Ύ

okay so a remote-viewer connection file is straight-up INI format, and it NEEDS a [virt-viewer] group plus the type key β€” mandatory, no cap πŸ’…

πŸ§ͺ Example πŸ§ͺ

open a file with this inside and remote-viewer will pop into fullscreen and connect to host betsiboka over the SPICE protocol β€” slay:

[virt-viewer]
type=spice
host=betsiboka
port=5900
fullscreen=1

πŸ”‘ Key list πŸ”‘

here's the whole roster, bestie, in order, no skips:

  • "version" (string) β€” if the remote-viewer version number isn't greater than or equal to the required version, an error gets raised with the expected version 😭

the accepted version format is a list of integers separated by .. it can be followed by a dash - and an additional build number with the same format.

version comparison works by comparing each integer from the list one by one. if any component isn't a number, the version comparison fails and treats the two versions as the same β€” yes, literally that.

  • "versions" (osid:version list) β€” this is a list of osid:version couples separated by ;. osid is an arbitrary string, and version is a version number in the same format as the version field. a given couple means remote-viewer builds matching the given osid (fedora22, debian7, ...) must be at least version version. for consistency, it's recommended to use libosinfo OS shortids as the osid ✨
  • "newer-version-url" (string) β€” if specified, this field is a URL that gets displayed to the user when a version check fails.
  • "type" (string, mandatory) β€” the session type, either "spice", "vnc" or "ovirt". mandatory mandatory mandatory, bestie.
  • "unix-path" (string) β€” the server to connect to, using a Unix socket path. supported with spice, since 8.0 🫢
this option is incompatible with "host", "port" and "tls-port" β€” do not mix them, fr fr.
  • "host" (string) β€” the server host to connect to.
  • "port" (integer) β€” the server port to connect to.
  • "tls-port" (integer) β€” the server TLS/SSL port to connect to.
  • "username" (string) β€” the username for the session authentication.
  • "password" (string) β€” the password for the session authentication.
  • "disable-channels" (string list) β€” the list of session channels to disable.

the current SPICE channels are: main, display, inputs, cursor, playback, record, smartcard, usbredir.

  • "tls-ciphers" (string) β€” set the cipher list to use for the secure connection, in textual OpenSSL cipher list format. (see ciphers(1))
  • "title" (string) β€” string to present in the window title.
  • "fullscreen" (boolean) β€” opens the client windows in fullscreen.
  • "ca" (string) β€” CA certificate in PEM format (using "\n" to separate the lines). this will be used to verify the SSL certificate used for SPICE TLS sessions.
  • "host-subject" (string) β€” verify the certificate subject matches with the given subject.
  • "toggle-fullscreen" (hotkey string) β€” key binding for entering and leaving fullscreen mode. (see HOTKEY for the description of the expected string πŸ’…)
  • "release-cursor" (hotkey string) β€” key binding for releasing cursor grab. (see HOTKEY for the description of the expected string)
  • "zoom-in" (hotkey string) β€” key binding for zooming in and enlarging client window size. (see HOTKEY for the description of the expected string)
  • "zoom-out" (hotkey string) β€” key binding for zooming out and reducing client window size. (see HOTKEY for the description of the expected string)
  • "zoom-reset" (hotkey string) β€” key binding for resetting zoom and client window size. (see HOTKEY for the description of the expected string)
  • "smartcard-insert" (hotkey string) β€” key binding for inserting emulated smartcard. (see HOTKEY for the description of the expected string)
  • "smartcard-remove" (hotkey string) β€” key binding for removing emulated smartcard. (see HOTKEY for the description of the expected string)
  • "color-depth" (integer) β€” set the color depth of the guest display (16 or 32).
  • "disable-effects" (string list) β€” a list of desktop effects to disable in the remote guest.

the effects that can be disabled with SPICE are: wallpaper, font-smooth, animation or all.

  • "enable-smartcard" (boolean) β€” set to 1 to enable client smartcard redirection.
  • "enable-usbredir" (boolean) β€” set to 1 to enable client USB device redirection.
  • "enable-usb-autoshare" (boolean) β€” set to 1 to enable client USB devices auto-sharing.
  • "usb-filter" (string) β€” set a string specifying a filter to use to determine which USB devices to autoconnect when plugged in. a filter consists of one or more rules, where each rule has the form of:
"class,vendor,product,version,allow"

use -1 for class/vendor/product/version to accept any value.

and the rules themselves are concatenated like this:

"rule1|rule2|rule3"
  • "usb-redirect-on-connect" (string) β€” set a string specifying a filter to determine which USB devices, that are already plugged in, to redirect on connect once the Spice connection is established. see usb-filter for the format.
  • "secure-channels" (string list) β€” the list of session channels to secure.

the current SPICE channels are: main, display, inputs, cursor, playback, record, smartcard, usbredir.

  • "delete-this-file" (boolean) β€” set to 1 for the client to remove this connection file (if it can't, it will fail silently πŸ™ˆ).
  • "proxy" (string) β€” a proxy URL to tunnel the connection through.

at the time of writing this documentation, the only supported proxy method with Spice is HTTP CONNECT.

for example, to tunnel the connection through foobar host HTTP proxy on port 8080, use the value "http://foobar:8080".

🧑 oVirt Support 🧑

the connection file can also carry some oVirt-specific options when oVirt support is compiled in. these options are used to interact with the oVirt REST API. this is currently only used in order to show a menu allowing you to change the CD image being used by the virtual machine from the remote-viewer user interface. these options go in an optional [ovirt] group πŸ’–

  • "host" (string, mandatory) β€” the oVirt instance to connect to. this corresponds to the hostname one would connect to access the oVirt user or admin portal.
  • "vm-guid" (string, mandatory) β€” GUID of the oVirt virtual machine to connect to.
  • "jsessionid" (string) β€” value to set the jsessionid cookie to. with oVirt 3.6, setting this authentication cookie to a valid value will allow you to interact with the oVirt REST API without being asked for credentials.
  • "sso-token" (string) β€” value to set the Authorization header to. with oVirt 4.0 or newer, setting this authentication header to a valid value will allow you to interact with the oVirt REST API without being asked for credentials.
  • "ca" (string) β€” CA certificate in PEM format (using "\n" to separate the lines). this will be used to validate the certificate used for the oVirt REST https session remote-viewer will establish.

βš™οΈ CONFIGURATION βš™οΈ

a small number of configuration options can be controlled by editing the settings file located in the user configuration directory:

<USER-CONFIG-DIR>/virt-viewer/settings

this file is a text file in INI format, with application options in the [virt-viewer] group and per-guest options in a group identified by the guest's UUID. the application options should not be edited manually β€” hands off, bestie πŸ’… there is also a special [fallback] group which specifies options for all guests that don't have an explicit group.

for each guest, the initial fullscreen monitor configuration can be specified by using the monitor-mapping key. this configuration only takes effect when the -f/--full-screen option is specified.

the value of this key is a list of mappings between a guest display and a client monitor. each mapping is separated by a semicolon character, and the mappings have the format <GUEST-DISPLAY-ID>:<CLIENT-MONITOR-ID>.

for example, to map guest displays 1 and 2 to client monitors 2 and 3 for the guest with a UUID of e4591275-d9d3-4a44-a18b-ef2fbc8ac3e2, use:

[e4591275-d9d3-4a44-a18b-ef2fbc8ac3e2]
monitor-mapping=1:2;2:3
the monitor-mapping must contain ids of all displays from 1 to the last desired display id, e.g. "monitor-mapping=3:3" is invalid because mappings for displays 1 and 2 are not specified. not me forgetting the middle displays 😭

configuration key share-clipboard contains a boolean value. if it's "true", then clipboard is shared with guests if clipboard sharing is supported by the used protocol. cute, useful, iconic ✨


🌈 EXAMPLES 🌈

to connect to SPICE server on host "makai" with port 5900:

remote-viewer spice://makai:5900

to connect to VNC server on host "tsingy" with port 5900:

remote-viewer vnc://tsingy:5900

to connect to a virtual machine named "toliara" on an oVirt server at example.org:

remote-viewer ovirt://[username@]example.org/toliara

πŸ› BUGS πŸ›

report bugs to https://gitlab.com/virt-viewer/virt-viewer/-/issues β€” the maintainers will appreciate the receipts, bestie 🫢


Copyright (C) 2012-2020 Red Hat, Inc., and various contributors.

this is free software. you may redistribute copies of it under the terms of the GNU General Public License https://www.gnu.org/licenses/gpl-2.0.html. there is NO WARRANTY, to the extent permitted by law. periodt.


πŸ”— SEE ALSO πŸ”—


okay that's the whole page, bestie πŸ’– β€” source/version Virt-Viewer 11.0, date 2025-05-23, page Remote-Viewer(1). slay ✨

πŸ“¦ where this page comes from