Starting with version 3.1, the flexVDI clients for Windows, Linux and Mac OS have been unified into the flexVDI Desktop Client. It is a complete rewrite of the client code, that focuses on portability and uniformity. This client provides a common experience across all the supported platforms, both in terms of visual aspect and features. Besides, its new architecture allows to keep up with the most recent versions of the Spice Client library, with added stability and performance.
You can download the flexVDI Desktop Client 3.1 from our web page, as usual. Besides, we have made this new rewrite completely open source. You can find the source code in our GitHub repository.
The installation process depends on the platform:
The first time you run the flexVDI Desktop Client, you will see the following window:
The main window of the flexVDI Desktop Client consist of some common elements and a form widget in the main body of the window that changes depending on the situation. The common elements are:
The current form widget will change with the user actions, as it evolves through the authentication process until the desired desktop is selected. When you start the client for the first time, no flexVDI platform is configured yet, so the application takes you directly to the settings form.
In the settings form, you can set:
Click on "save settings" once you have configured them, or "discard changes" if you want to revert anything you changed. You can come back to the settings form at any time pushing the cog wheel button on the upper-right corner of the window, or pressing F3 on your keyboard.
If this is your first time trying out flexVDI, we encourage you to test our demo platform: connect to manager.flexvdi.com, port 443, and log in with user flexvdi and any password.
When a flexVDI platform address is set, the application navigates to the login form:
This form shows an input for the username, another for the password and a login button. But before you can write anything, the client will connect with the platform and identify itself using its Terminal ID. If the platform decides that your terminal does not require authentication, the application will skip this step. Otherwise, you can write your credentials and push the login button (or just hit enter).
Finally, the application navigates to the desktop selection form:
The client presents the list of possible desktops that the platform has offered. You can select one by clicking on it and then pushing the "connect" button, or just double-clicking on it. You can also navigate the list with the up and down arrow keys, or search for a desktop by typing its name. Finally, you can also go back to the login form with the "back" button. If the platform offers just one possible desktop, this step is skipped and the application jumps directly to connect with the desktop.
The flexVDI Desktop Client shows some status and error messages just under the main window's title bar. These are some examples:
When the client connects to a virtual desktop, the main window disappears and the desktop presentation window is shown. It consists of just a toolbar and the desktop area:
The toolbar contains the following actions:
When in fullscreen mode, only the desktop area is visible all the time. The toolbar slides down from the screen top edge (bottom edge in Mac OS) when you move the mouse pointer near it:
Besides, the "Go fullscreen" action is replaced with these other actions:
Some of the buttons in the toolbar are not visible under the following circumstances:
FlexVDI Client supports clipboard sharing with virtual desktops when the flexVDI Guest Tools are installed in the guest. Both copying from and pasting into the guest is supported, and can be disabled independently by the platform. By default, clipboard sharing is automatic, so you can just press Ctrl+C in the virtual desktop and Ctrl+V in the physical desktop, and the contents of the clipboard will be transferred automatically. If you do not want this to happen, or it is working erratically (this may happen if you have a clipboard manager installed in either side), automatic clipboard sharing can be disabled with a configuration flag, which are discussed later in this document. In that case, the copy and paste buttons are shown in the toolbar so that you can decide when to share the clipboard.
Clipboard sharing only supports certain basic types of data, like text and images. Copying whole files or directories is not supported, for that operation see the "File drag'n'drop" and "Shared folder" features later in this document.
When the desktop presentation window is the active window, most keystrokes are sent to the virtual desktop. In particular, the Alt, Ctrl and Windows keys are inhibited in the client desktop so that the user has a better immersive experience in the virtual desktop. So combinations like Alt+Tab, Alt+F4, and other shortcuts are passed to the virtual desktop, and do not make the flexVDI Desktop Client lose the focus in the client desktop.
However, some key combinations cannot be captured. They are not sent to the virtual desktop and take effect in the client computer. These special key combinations are different in each platform. For instance, Ctrl+Alt+Supr cannot be captured in all platforms, Ctrl+Alt+F1 to F12 cannot be captured in Linux and Ctrl+L cannot be captured in Windows. These key combinations are provided in the "Send key combinations" dropdown so that they can be sent to the virtual desktop without affecting the client desktop.
The flexVDI Desktop Client is capable of redirecting USB devices from the client computer to the virtual desktop, in those platforms where this feature is supported:
To redirect a USB device, click on the "Share USB devices" dropdown in the toolbar and select the proper device:
The list shows with a checkbox which devices are already redirected, and how many can be redirected at the same time (in the example, there are 4 free slots). The flexVDI Desktop Client makes its best to identify the devices, but when no descriptive name is available, the Vendor ID and Product ID are provided.
The client can be configured to redirect some devices automatically on startup or on plug-in. More on this in the Advanced configuration section, later.
Printers configured in the client's computer can be redirected to the virtual desktop. For this feature to work, the flexVDI Guest Tools must be installed in the virtual desktop. When a printer is redirected, a "proxy" printer is created in the virtual desktop with the same name as the redirected one. Any document sent to the proxy printer will appear in the real printer. The proxy printer uses a default driver with the most common features (color/b&w, duplex printing, paper quality, etc), but any vendor-specific features will not be available. If you need any of these features, you can send your documents to the special printer "flexVDI PDF Printer". These documents will be rendered to a PDF file and opened in your client computer with your default PDF viewer. From there, you can print the document with the vendor-specific driver.
The flexVDI Desktop Client remembers which printers you had redirected when you last closed it. These printers are redirected again when you reconnect to your virtual desktop.
Mouse pointer integration is not possible when the Spice guest tools are not installed in the virtual desktop, or the guest agent is not running (during the virtual desktop boot process, for instance). In that case, the mouse pointer must be grabbed by the client in order to control the mouse pointer of the virtual desktop. You can do this by simply clicking on the desktop area. The mouse pointer is then used exclusively by the flexVDI Desktop Client, and it must be ungrabbed in order to use it with other applications. This is done with a special key combination, which is Left Ctrl+F9 by default. More on this in the Advanced configuration section, later.
When connecting to a Linux guest, you can drag files and drop them on the client's window area. As a result, the file is transferred to the Downloads folder of the guest's desktop, and that folder is shown with the default file browser.
When connecting to a Windows guest, the files dropped on the client's window area are copied to the desktop.
Besides the basic configuration that can be set in the settings form, the flexVDI Desktop Client admits several other options through a configuration file. This file has the following default path on each platform:
The configuration file follows the classic INI file format. Four sections are accepted: General, Session, Devices and Layout. Any unknown section or option is silently ignored. Keys are case-sensitive, and they can have a string, integer or boolean value. Boolean values can be either "true" or "false", in lower-case; anything else is an error. Finally, some keys accept lists of values. In that case, they are written as a semicolon-separated list of values.
This is an example of a common configuration file. Unless said otherwise, keys not appearing in the file have a default value of "", 0 or false, respectively.
[General] terminal-id=c8:60:00:6a:a7:75 host=manager.flexvdi.com [Session] fullscreen=true [Devices] share-printer=Printer1;Printer2;Printer3 |
The Layout section is a bit special. It is used to remember the size and position of the desktop presentation window, so that it appears in the same way on the next reconnection.
Options in the General section include connection and auto-login options:
The flexVDI Desktop Client writes all log messages to a file in the following path:
Logging can be configured with the log-level option, in the General section. The log level is configured with a comma-separated list of "domain:level" values, where "domain" is a logging domain and "level" is an integer number from 0 (log just errors) to 5 (log everything). Most common domains are "flexvdi", "GSpice", "GTK" and "GLib". If domain is not provided, the level is applied to any domain not configured otherwise. The default value is "3", so messages in any domain are logged up to level 3 (warnings and errors). These are some examples of log level configuration:
# Log all debug messages in any domain log-level=5 # Log debug messages in domain "flexvdi", normal messages in any other log-level=flexvdi:5,3 # Log debug messages in domain "GSpice", info messages in "flexvdi" and warnings in any other log-level=GSpice:5,flexvdi:4,2 |
If you ever need to send the flexVDI Client log files to the support team, always use the following logging configuration:
|
Session options are those that apply to a certain desktop connection:
You can share a folder of your computer with the guest using the shared-folder option. For this feature to work, you need to configure the guest in the following way:
spice-webdavd
package.http://localhost:9843
. On Windows, a network-connected drive will appear automatically when the spice-webdavd service is started. On Linux, most desktop file browsers will open the location webdav://localhost:9843
.Device options are those that apply to device redirection:
You can configure which USB devices are redirected automatically when the client connects to the virtual desktop and when a new device is plugged in the client computer. This is done with two sets of filters. Each set is a pipe(|)-separated list of filters in the form "class,vendor,product,version,allow", where "class", "vendor", "product" and "version" are device properties and "allow" can be 1 or 0. Device properties are hexadecimal numbers, with the 0x prefix, and a value of -1 means "any" for all of them. Devices that match those properties are filtered in if "allow" is 1, and filtered out if "allow" is 0.
These are some examples of USB redirection filters:
# filter out HID (class 0x03) USB devices and allow anything else 0x03,-1,-1,-1,0|-1,-1,-1,-1,1 # allow only the device with Vendor ID 0x045e and Product ID 0x028e (a Microsoft XBOX USB controller) -1,0x045e,0x028e,-1,1|-1,-1,-1,-1,0 |
You can provide all the previous options in the command line. Options that appear in the command line take precedence over the ones in the configuration file. All of them are passed as --option-name, followed by an argument in the case of string and integer options. For boolean options, --option-name sets the option to true and --no-option-name sets it to false. Most common options also have a short version, with only one leading dash and one letter. Besides, you can provide the following options only in the command line:
You can also connect to any virtual desktop using the Spice protocol if you pass a Spice URI as the last parameter of the command line. A Spice URI has the form spice://host?port=XXX&password=YYYY
, where XXX is the port where the Spice server is listening for connections, and YYYY is the Spice password for that virtual desktop.
This is the full help message shown with the --help-all option:
Usage: flexvdi-client [OPTION...] [Spice URI] flexVDI Client is a Virtual Desktop client for flexVDI platforms. It can also be used as a generic Spice client providing a Spice URI on the command line. Help Options: -?, --help Show help options --help-all Show all help options --help-gapplication Show GApplication options --help-gtk Show GTK+ Options --help-gst Show GStreamer Options --help-device Show device options --help-session Show session options GApplication options --gapplication-service Enter GApplication service mode (use from D-Bus service files) GTK+ Options --class=CLASS Program class as used by the window manager --name=NAME Program name as used by the window manager --gdk-debug=FLAGS GDK debugging flags to set --gdk-no-debug=FLAGS GDK debugging flags to unset --gtk-module=MODULES Load additional GTK+ modules --g-fatal-warnings Make all warnings fatal --gtk-debug=FLAGS GTK+ debugging flags to set --gtk-no-debug=FLAGS GTK+ debugging flags to unset GStreamer Options --gst-version Print the GStreamer version --gst-fatal-warnings Make all warnings fatal --gst-debug-help Print available debug categories and exit --gst-debug-level=LEVEL Default debug level from 1 (only error) to 9 (anything) or 0 for no output --gst-debug=LIST Comma-separated list of category_name:level pairs to set specific levels for the individual categories. Example: GST_AUTOPLUG:5,GST_ELEMENT_*:3 --gst-debug-no-color Disable colored debugging output --gst-debug-color-mode Changes coloring mode of the debug log. Possible modes: off, on, disable, auto, unix --gst-debug-disable Disable debugging --gst-plugin-spew Enable verbose plugin loading diagnostics --gst-plugin-path=PATHS Colon-separated paths containing plugins --gst-plugin-load=PLUGINS Comma-separated list of plugins to preload in addition to the list stored in environment variable GST_PLUGIN_PATH --gst-disable-segtrap Disable trapping of segmentation faults during plugin loading --gst-disable-registry-update Disable updating the registry --gst-disable-registry-fork Disable spawning a helper process while scanning the registry Device options --usbredir-auto-redirect-filter=<filter-string> Filter selecting USB devices to be auto-redirected when plugged in --usbredir-redirect-on-connect=<filter-string> Filter selecting USB devices to redirect on connect --flexvdi-serial-port=<device,speed,mode> Add serial port redirection. Can appear multiple times. Example: /dev/ttyS0,9600,8N1 -P, --share-printer=<printer_name> Share a client's printer with the virtual desktop. Can appear multiple times Session options -f, --fullscreen Show desktop in fullscreen mode --inactivity-timeout=<seconds> Close the client after a certain time of inactivity --flexvdi-disable-printing Disable printing support --auto-clipboard Automatically share clipboard between guest and client --auto-usbredir Automatically redirect newly connected USB devices --grab-mouse Grab mouse in server mode --grab-sequence Key sequence to release mouse grab (default Shift_L+F12) --resize-guest Resize guest display to match window size --disable-power-actions Disable reset/poweroff guest actions --disable-usbredir Disable USB device redirection --preferred-compression=<auto-glz,auto-lz,quic,glz,lz,lz4,off> Preferred image compression algorithm --shared-folder Shared directory with the guest --shared-folder-ro Shared directory with the guest is readonly --toolbar-edge=<top,bottom,left,right> Window edge where toolbar is shown (default top) Application Options: -h, --host=<hostname or IP> Connection host address -p, --port=<port number> Connection port (default 443) --proxy-uri=<uri> Use this URI to connect through a proxy server (default use system settings) -u, --username=<user name> User name -w, --password=<password> Password -d, --desktop=<desktop name> Desktop name to connect to --terminal-id=<terminal ID> Use a given Terminal ID instead of calculating it automatically --kiosk Enable kiosk mode -v, --log-level=<[domain:]level,...> Log level for each domain, or for all messages if domain is ommited. 0 = ERROR, 5 = DEBUG -V, --version Show version and exit -c, --config-file=<file name> Alternative configuration file name --display=DISPLAY X display to use |