<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Using Guacamole</title><link rel="stylesheet" type="text/css" href="gug.css" /><meta name="generator" content="DocBook XSL-NS Stylesheets V1.78.1" /><link rel="home" href="index.html" title="Guacamole Manual" /><link rel="up" href="users-guide.html" title="Part I. User's Guide" /><link rel="prev" href="noauth.html" title="Chapter 9. Disabling authentication" /><link rel="next" href="administration.html" title="Chapter 11. Administration" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/>
        </head><body>
            <!-- CONTENT -->

            <div id="page"><div id="content">
        <div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. Using Guacamole</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="noauth.html">Prev</a> </td><th width="60%" align="center">Part I. User's Guide</th><td width="20%" align="right"> <a accesskey="n" href="administration.html">Next</a></td></tr></table><hr /></div><div xml:lang="en" class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="using-guacamole"></a>Chapter 10. Using Guacamole</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="using-guacamole.html#home-screen">Home screen</a></span></dt><dd><dl><dt><span class="section"><a href="using-guacamole.html#user-menu">User menu</a></span></dt></dl></dd><dt><span class="section"><a href="using-guacamole.html#client-screen">Client screen</a></span></dt><dd><dl><dt><span class="section"><a href="using-guacamole.html#guacamole-menu">The Guacamole menu</a></span></dt></dl></dd><dt><span class="section"><a href="using-guacamole.html#using-the-clipboard">Copying/pasting text</a></span></dt><dt><span class="section"><a href="using-guacamole.html#client-user-menu">Disconnecting and navigation</a></span></dt><dt><span class="section"><a href="using-guacamole.html#client-share-menu">Sharing the connection</a></span></dt><dt><span class="section"><a href="using-guacamole.html#file-transfer">Transferring files</a></span></dt><dd><dl><dt><span class="section"><a href="using-guacamole.html#file-browser">Using the file browser</a></span></dt><dt><span class="section"><a href="using-guacamole.html#rdp-virtual-drive">The RDP virtual drive</a></span></dt><dt><span class="section"><a href="using-guacamole.html#guacctl"><span class="command"><strong>guacctl</strong></span> / <span class="command"><strong>guacget</strong></span></a></span></dt></dl></dd><dt><span class="section"><a href="using-guacamole.html#using-the-osk">On-screen keyboard</a></span></dt><dt><span class="section"><a href="using-guacamole.html#scaling-display">Scaling the display</a></span></dt><dt><span class="section"><a href="using-guacamole.html#touch-devices">Mobile or touch devices</a></span></dt><dd><dl><dt><span class="section"><a href="using-guacamole.html#touch-mouse">Mouse emulation</a></span></dt><dt><span class="section"><a href="using-guacamole.html#text-input">Typing without a physical keyboard</a></span></dt></dl></dd><dt><span class="section"><a href="using-guacamole.html#preferences">Changing preferences</a></span></dt><dd><dl><dt><span class="section"><a href="using-guacamole.html#display-language">Display language</a></span></dt><dt><span class="section"><a href="using-guacamole.html#changing-password">Changing your password</a></span></dt><dt><span class="section"><a href="using-guacamole.html#default-input-settings">Default input settings</a></span></dt></dl></dd></dl></div><p><a id="idm140352910295984" class="indexterm"></a>Guacamole provides access to much of the functionality of a desktop from within
        your web browser. Although most people use remote desktop tools only when absolutely
        necessary, we believe that Guacamole must be aimed at becoming a primary means of accessing
        desktops, and the interface is thus intended to be as seamless and unobtrusive as
        possible.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="home-screen"></a>Home screen</h2></div></div></div><p>Once you have successfully logged in, you will be taken to either the Guacamole home
            screen, where all available connections are listed, or directly to a connection, if you
            only have access to one connection.</p><p>The home screen will contain a list of all connections to which you have access, along
            with thumbnails of any recently used or active connections. If you have access to a
            large number of connections and wish to quickly locate a specific connection, you can
            also enter search terms within the "Filter" field to filter the list of connections by
            name.</p><div class="informalfigure"><div class="screenshot"><div class="mediaobject"><img src="images/guacamole-home-screen.png" width="450" /><div class="caption"><p>The Guacamole home screen. The user menu and several recently-used
                            connections are visible, along with one active connection.</p></div></div></div></div><p>Clicking on any connection will open that connection within the current window or tab,
            but multiple connections can be used simultaneously. You can easily navigate back to the
            home screen without disconnecting by using your browsers back button or the "Home"
            button in the Guacamole menu. Each connection you use will remain active until
            explicitly disconnected, or until you navigate away from Guacamole entirely. Active
            connections can be seen as thumbnails updating in real-time on the home screen.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="user-menu"></a>User menu</h3></div></div></div><p>With the exception of the client screen discussed below, all Guacamole screens
                contain a menu in the upper-right corner called the "user menu". This menu displays
                your username and contains several options which depend on your user's level of
                access:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">Home</span></dt><dd><p>Navigates back to the home screen, if you are not already there. If
                            you only have access to one connection, this will be replaced with a
                            link to that connection.</p></dd><dt><span class="term">Settings</span></dt><dd><p>Navigates to the settings interface, which provides access to user
                            preferences such as display language. If you have access to
                            administrative functions, those are found within the settings interface,
                            as well, and are discussed in more detail in <a class="xref" href="administration.html" title="Chapter 11. Administration">Chapter 11, <em>Administration</em></a>.</p></dd><dt><span class="term">Logout</span></dt><dd><p>Logs out of Guacamole completely, closing all current connections and
                            ending the Guacamole session.</p></dd></dl></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="client-screen"></a>Client screen</h2></div></div></div><p>Once you open a connection, you will see a real-time view of the remote display. You
            can interact with this display just as you would your normal desktop. Your mouse and
            keyboard will function as if they were connected directly to the remote machine.</p><div class="informalfigure"><div class="screenshot"><div class="mediaobject"><img src="images/guacamole-client-interface.png" width="540" /><div class="caption"><p>Guacamole client interface, with the Guacamole menu open.</p></div></div></div></div><p>The remote display will take up the entire browser window, with no buttons or menus to
            disturb the view. With the intent of providing a seamless experience, options specific
            to remote desktop are hidden within the Guacamole menu, which can be opened as
            needed.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="guacamole-menu"></a>The Guacamole menu</h3></div></div></div><p>The Guacamole menu is a sidebar which is hidden until explicitly shown. On a
                desktop or other device which has a hardware keyboard, you can show this menu by
                pressing <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>Shift</strong></span>. If you are using a mobile or touchscreen device that lacks a keyboard,
                you can also show the menu by swiping right from the left edge of the screen. To
                hide the menu, you press <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>Shift</strong></span> again or swipe left across the screen.</p><p>The Guacamole menu provides options for:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Navigating back to the home screen</p></li><li class="listitem"><p>Sharing the current connection</p></li><li class="listitem"><p>Reading from (and writing to) the clipboard of the remote
                            desktop</p></li><li class="listitem"><p>Uploading and downloading files</p></li><li class="listitem"><p>Selecting alternative methods of typing or controlling the mouse,
                            particularly for use on mobile or touchscreen devices</p></li><li class="listitem"><p>Zooming in and out of the remote display</p></li><li class="listitem"><p>Disconnecting from the current connection entirely</p></li></ul></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="using-the-clipboard"></a>Copying/pasting text</h2></div></div></div><p><a id="idm140352910396752" class="indexterm"></a>At the top of the Guacamole menu is a text area labeled "clipboard" along
            with some basic instructions:</p><div class="blockquote"><blockquote class="blockquote"><p>Text copied/cut within Guacamole will appear here. Changes to the text below will
                affect the remote clipboard.</p></blockquote></div><p>The text area functions as an interface between the remote clipboard and the local
            clipboard. Text from the local clipboard can be pasted into the text area, causing that
            text to be sent to the clipboard of the remote desktop. Similarly, if you copy or cut
            text within the remote desktop, you will see that text within the text area, and can
            manually copy it into the local clipboard if desired.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="client-user-menu"></a>Disconnecting and navigation</h2></div></div></div><p>When you are done using the current connection, or you wish to navigate elsewhere
            temporarily, options to do so are within the user menu inside the Guacamole menu:</p><div class="informalfigure"><div class="mediaobject"><img src="images/guac-menu-disconnect.png" width="540" /><div class="caption"><p>The user menu within the Guacamole menu.</p></div></div><p>The user menu within the Guacamole menu provides an additional "Disconnect" option
                that allows you to explicitly close the current connection only. Clicking "Logout"
                will also implicitly disconnect all active connections, including the current
                connection.</p><p>Navigating back to the home screen or to the settings screen will not disconnect
                you: your connection will continue running in the background while you change
                settings or initiate another connection, and you can resume any active connection by
                clicking on it within the home screen.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="client-share-menu"></a>Sharing the connection</h2></div></div></div><p>If the Guacamole server is configured to allow connection sharing, and you have been
            granted permission to share the current connection, an additional "Share" menu will
            appear next to your username in the Guacamole menu. Clicking on this menu opens a list
            of options for sharing the current connection.</p><div class="informalfigure"><div class="mediaobject"><img src="images/guac-menu-share.png" width="540" /></div></div><p>Clicking any of the options within the "Share" menu will immediately generate a unique
            share link which can be distributed to anyone, even to users which do not otherwise have
            accounts within the same Guacamole system.</p><div class="informalfigure"><div class="mediaobject"><img src="images/guac-menu-share-link.png" width="540" /></div></div><p>When the link is visited, that user will be given temporary access to your connection,
            restricted according to the sharing option chosen. This access, and the validity of the
            link overall, lasts only until you disconnect. Once the connection is closed, the link
            ceases to be valid, and any users sharing the connection with you will be
            disconnected.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="file-transfer"></a>Transferring files</h2></div></div></div><a id="idm140352909739424" class="indexterm"></a><p>You can transfer files back and forth between your local computer and the remote
            desktop if it is supported by the underlying protocol and enabled on the connection.
            Currently, Guacamole supports file transfer for VNC, RDP, and SSH, using either the
            native file transfer support of the protocol or SFTP.</p><p>Files can be transferred to the remote computer by dragging and dropping the files
            into your browser window, or through using the file browser located in the Guacamole
            menu.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="file-browser"></a>Using the file browser</h3></div></div></div><p>If file transfer is enabled on the connection, you will see one or more filesystem
                devices listed within the Guacamole menu. Clicking on one of the filesystems opens a
                file browser which lists the files and directories within that filesystem.</p><div class="mediaobject"><img src="images/file-browser.png" width="270" /><div class="caption"><p>The file browser within the Guacamole menu.</p></div></div><p>Double-clicking on any directory will change the current location of the file
                browser to that directory, updating the list of files shown as well as the
                "breadcrumbs" at the top of the file browser. Clicking on any of the directory names
                listed in the breadcrumbs will bring you back to that directory, and clicking on the
                drive icon on the far left will bring you all the way back to the root level.</p><p>Downloads are initiated by double-clicking on any file shown, while uploads are
                initiated by clicking the "Upload Files" button. Clicking "Upload Files" will open a
                file browsing dialog where you can choose one or more files from your local
                computer, ultimately uploading the selected files to the directory currently
                displayed within the file browser.</p><p>The state of all file uploads can be observed within the notification dialog that
                appears once an upload begins, and can be cleared once completed by clicking the
                "Clear" button. Downloads are tracked through your browser's own download
                notification system.</p><div class="mediaobject"><img src="images/file-transfers.png" width="270" /><div class="caption"><p>In-progress and completed file transfers.</p></div></div><p>When you are done browsing the filesystem and transferring files, click "Back" to
                return to the Guacamole menu.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="rdp-virtual-drive"></a>The RDP virtual drive</h3></div></div></div><p>RDP provides its own native support for file transfer called "drive redirection"
                or "RDPDR". Guacamole provides support for this mechanism by emulating a virtual
                drive. Typically, this virtual drive will appear as a network drive within the RDP
                session. Files uploaded and downloaded will be preserved within this drive, even
                after disconnecting.</p><div class="mediaobject"><img src="images/guacamole-drive.png" width="450" /><div class="caption"><p>The Guacamole drive within a Windows RDP session.</p></div></div><p>Files can be downloaded from this drive using the file browser in the Guacamole
                menu or using the special "Download" folder within the virtual drive. All files
                dropped into this folder will automatically begin uploading to the client, and thus
                downloading through the browser.</p><div class="mediaobject"><img src="images/guacamole-drive-download.png" width="450" /><div class="caption"><p>The Guacamole drive's "Download" folder.</p></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="guacctl"></a><span class="command"><strong>guacctl</strong></span> / <span class="command"><strong>guacget</strong></span></h3></div></div></div><p><a id="idm140352909715696" class="indexterm"></a><a id="idm140352909714832" class="indexterm"></a><a id="idm140352909713968" class="indexterm"></a><a id="idm140352909712656" class="indexterm"></a>In addition to traditional drag-and-drop and the file browser,
                Guacamole's SSH support can be used with the <span class="command"><strong>guacctl</strong></span> utility. The
                    <span class="command"><strong>guacctl</strong></span> utility is a simple shell script <a class="link" href="https://raw.githubusercontent.com/apache/incubator-guacamole-server/master/bin/guacctl" target="_top">included with Guacamole</a> which allows you to use and configure file
                transfer directly from the command line within the SSH session:</p><div class="informalexample"><pre class="screen"><code class="prompt">$</code> <strong class="userinput"><code>guacctl</code></strong>
<code class="computeroutput">guacctl 0.8.0, Guacamole SSH session control utility.
Usage: guacctl [OPTION] [FILE]...

    -d, --download         download each of the files listed.
    -s, --set-directory    set the destination directory for future uploaded 
                           files.</code>
<code class="prompt">$</code> <strong class="userinput"><code>guacctl -d <em class="replaceable"><code>FILENAME</code></em></code></strong>
<code class="prompt">$</code> <strong class="userinput"><code>guacctl -s <em class="replaceable"><code>DIRECTORY</code></em></code></strong>
$</pre></div><p>For convenience, you may also create a symbolic link or alias to
                    <span class="command"><strong>guacctl</strong></span> called <span class="command"><strong>guacget</strong></span>. When run as
                    <span class="command"><strong>guacget</strong></span>, the utility behaves as if the
                    <code class="option">--download</code> option were supplied and initiates a download for
                each file specified on the command line.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="using-the-osk"></a>On-screen keyboard</h2></div></div></div><p>Certain key combinations are impossible to press within a web application like
            Guacamole because they are reserved by the operating system (<span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>Del</strong></span> or <span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>Tab</strong></span>, for example) or by the web browser. If you press one of these reserved
            combinations, the effect will be observed locally, not remotely, and the remote desktop
            will receive only some of the keys.</p><p>Guacamole provides its own, built-in on-screen keyboard which allows keys to be sent
            to the remote desktop without affecting the local system. If the device you're using
            does not have certain keys which the remote desktop depends on, such as the arrow keys
            or <span class="keycap"><strong>Ctrl</strong></span>, you can use the on-screen keyboard for this, too. You can show
            the on-screen keyboard by selecting the "On-screen keyboard" option from the
            menu.</p><p>Clicking (or tapping) the buttons of the on-screen keyboard has the same effect as
            pressing the same buttons on a real keyboard, except that the operating system and
            browser will not intercept these keypresses; they will only be sent to the remote
            desktop.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="scaling-display"></a>Scaling the display</h2></div></div></div><p><a id="idm140352909693120" class="indexterm"></a>Guacamole will default to shrinking or expanding the remote display to fit
            the browser window exactly, but this is not necessarily ideal. If the remote display is
            much larger than your local display, the screen may be impossible to see or interact
            with. This is especially true for mobile phones, whose screens need to be small enough
            to fit in the average hand.</p><p>You can scale the display on touch devices by using the familiar pinch gesture. Place
            two fingers on the screen and bring them closer together to zoom out or further apart to
            zoom in.</p><p>If your device lacks a touch screen, you can also control the zoom level through the
            menu. The controls for zooming in and out are located at the bottom of the menu. The
            current zoom level is displayed between two "-" and "+" buttons which control the zoom
            level in 10% increments.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="touch-devices"></a>Mobile or touch devices</h2></div></div></div><p>Guacamole is designed to work equally well across all HTML5 browsers, including those
            of mobile devices. It will automatically handle input from a touch screen or a
            traditional mouse (or both, if you happen to have such a gifted computer), and provides
            alternative input methods for devices which lack a physical keyboard.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="touch-mouse"></a>Mouse emulation</h3></div></div></div><p><a id="idm140352909686928" class="indexterm"></a>In the case that your device has a touchscreen and lacks a mouse,
                Guacamole will emulate a mouse for the sake of interacting with remote desktops that
                expect mouse input. By default, Guacamole uses "absolute" mouse emulation. This
                means that the mouse pointer is positioned at the location of each tap on the
                screen.</p><p>In both absolute and relative modes, you can click-and-drag by tapping the screen
                and then quickly placing your finger back down. This gesture only causes the mouse
                button to press down, but does not release it again until you lift your finger back
                up.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="absolute-mouse-emulation"></a>Absolute mode (touchscreen)</h4></div></div></div><p>Absolute mouse emulation is the default as it tends to be what people expect
                    when using a touch device to interact with applications designed for mouse
                    input.</p><p>Each tap on the screen is translated into a left-click at that position.
                    Right-clicking is accomplished through pressing and holding your finger on the
                    screen. If parts of the remote display are off-screen, you can drag your finger
                    around the screen to pan the off-screen parts back into view.</p><p>Although absolute mouse emulation works generally well, a finger makes for a
                    very inaccurate pointing device. To address this, Guacamole also provides
                    "relative" mouse emulation. Relative mouse emulation provides a way to deal with
                    the need for accurate pointer control, when a true pointer device is not
                    present.</p><div class="informalfigure"><div class="mediaobject"><img src="images/touchscreen.png" width="135" /></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="relative-mouse-emulation"></a>Relative mode (touchpad)</h4></div></div></div><p>Guacamole's relative mouse emulation behaves similarly to the touchpad present
                    on most modern laptops. You drag your finger across the display to move the
                    mouse pointer, and tap the display to left-click. The pointer moves relative to
                    the motion of your finger. Right-clicking is accomplished with a two-finger tap,
                    and middle-clicking with a three-finger tap. The mouse scroll wheel can be
                    operated by dragging two fingers up or down.</p><p>Because the relative mouse emulation reserves so many gestures for the
                    different mouse buttons and actions, common touch gestures like panning and
                    pinch-to-zoom will not work while relative mouse emulation is enabled. Instead,
                    the screen will automatically pan to keep the mouse pointer in view, and you can
                    zoom through the buttons in the menu.</p><div class="informalfigure"><div class="mediaobject"><img src="images/touchpad.png" width="135" /></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="text-input"></a>Typing without a physical keyboard</h3></div></div></div><p>Many mobile devices lack a physical keyboard entirely, and instead provide their
                own on-screen keyboards. As these are not true keyboards per se and do not produce
                key presses, Guacamole's text input mode is required for typing on these
                platforms.</p><p>"Text input" allows input of keystrokes based on the input of text. Choosing "Text
                input" tells Guacamole to infer keystrokes by tracking text entered, rather than
                relying on actual key presses. Guacamole will instead determine the combination of
                keypresses necessary to produce the same pattern of input, including
                deletions.</p><p><a id="idm140352908375744" class="indexterm"></a>If you wish to type via an IME (input method editor), such as those
                required for Chinese, Japanese, or Korean, text input mode is required for this as
                well. Such IMEs function through the explicit insertion of text and do not send
                traditional key presses. Using text input mode within Guacamole thus allows you to
                use a locally-installed IME, without requiring the IME to be installed on the remote
                desktop.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="preferences"></a>Changing preferences</h2></div></div></div><p>User preferences can be changed within the settings screen. These preferences are
            stored locally within the browser, so if you use multiple computers to access Guacamole,
            you can have different settings for each location. The settings screen allows users to
            change the language of the Guacamole interface, to change the default input method used
            by Guacamole connections, and to change the default mouse emulation mode for if a touch
            device is used. If you have sufficient permissions, you may also change your password,
            or administer the system.</p><div class="informalfigure"><div class="screenshot"><div class="mediaobject"><img src="images/guacamole-preferences.png" width="540" /><div class="caption"><p>Guacamole preferences screen.</p></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="display-language"></a>Display language</h3></div></div></div><p>The Guacamole interface is currently available in English, Dutch, French, German,
                Italian, and Russian. By default, Guacamole will attempt to determine the
                appropriate display language by checking the language preferences of the browser in
                use. If this fails, or the browser is using a language not yet available within
                Guacamole, English will be used as a fallback.</p><p>If you wish to override the current display language, you can do so by selecting a
                different language within the "Display language" field. The change will take effect
                immediately.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="changing-password"></a>Changing your password</h3></div></div></div><p>System administrators can restrict the ability of individual users to change their
                own passwords, so this section may not always be available. If your account
                    <span class="emphasis"><em>does</em></span> have permission, the preferences screen will contain a
                "Change Password" section.</p><p>To change your password, you must provide your current password, enter the desired
                new password, and click "Update Password". You will remain logged in, and the change
                will affect any future login attempt.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="default-input-settings"></a>Default input settings</h3></div></div></div><p>Guacamole provides multiple keyboard input methods and multiple mouse emulation
                modes. Many of these settings are specifically useful for touch devices, while
                others are aimed mainly at traditional desktop use. By default, Guacamole will use
                the keyboard and mouse modes most commonly preferred by users, but you can change
                these defaults if they do not fit your tastes or your current device.</p><p>The choices available mirror those within the Guacamole menu discussed earlier in
                this chapter, and changing these settings will affect the default values selected
                within the Guacamole menu of future connections.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="noauth.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="users-guide.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="administration.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. Disabling authentication </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 11. Administration</td></tr></table></div>

            </div></div>
        <!-- Google Analytics -->
        <script type="text/javascript">
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          ga('create', 'UA-75289145-1', 'auto');
          ga('send', 'pageview');
        </script>
        </body></html>