<?xml version="1.0" encoding="UTF-8"?>

<chapter xml:id="using-guacamole" 
    xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en"
    xmlns:xi="http://www.w3.org/2001/XInclude">

    <title>Using Guacamole</title>
    <para><indexterm>
            <primary>interacting</primary>
        </indexterm>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.</para>
    <section xml:id="home-screen">
        <title>Home screen</title>
        <para>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.</para>
        <para>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.</para>
        <informalfigure>
            <screenshot>
                <mediaobject>
                    <imageobject>
                        <imagedata fileref="images/guacamole-home-screen.png" format="PNG"
                            contentwidth="5in"/>
                    </imageobject>
                    <caption>
                        <para>The Guacamole home screen. The user menu and several recently-used
                            connections are visible, along with one active connection.</para>
                    </caption>
                </mediaobject>
            </screenshot>
        </informalfigure>
        <para>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.</para>
        <section xml:id="user-menu">
            <title>User menu</title>
            <para>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:</para>
            <variablelist>
                <varlistentry>
                    <term>Home</term>
                    <listitem>
                        <para>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.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term>Settings</term>
                    <listitem>
                        <para>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 <xref
                                linkend="administration"/>.</para>
                    </listitem>
                </varlistentry>
                <varlistentry>
                    <term>Logout</term>
                    <listitem>
                        <para>Logs out of Guacamole completely, closing all current connections and
                            ending the Guacamole session.</para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </section>
    </section>
    <section xml:id="client-screen">
        <title>Client screen</title>
        <para>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.</para>
        <informalfigure>
            <screenshot>
                <mediaobject>
                    <imageobject>
                        <imagedata fileref="images/guacamole-client-interface.png" format="PNG"
                            contentwidth="6in"/>
                    </imageobject>
                    <caption>
                        <para>Guacamole client interface, with the Guacamole menu open.</para>
                    </caption>
                </mediaobject>
            </screenshot>
        </informalfigure>
        <para>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.</para>
        <section xml:id="guacamole-menu">
            <title>The Guacamole menu</title>
            <para>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 <keycombo>
                    <keycap>Ctrl</keycap>
                    <keycap>Alt</keycap>
                    <keycap>Shift</keycap>
                </keycombo>. 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 <keycombo>
                    <keycap>Ctrl</keycap>
                    <keycap>Alt</keycap>
                    <keycap>Shift</keycap>
                </keycombo> again or swipe left across the screen.</para>
            <para>The Guacamole menu provides options for:<itemizedlist>
                    <listitem>
                        <para>Navigating back to the home screen</para>
                    </listitem>
                    <listitem>
                        <para>Sharing the current connection</para>
                    </listitem>
                    <listitem>
                        <para>Reading from (and writing to) the clipboard of the remote
                            desktop</para>
                    </listitem>
                    <listitem>
                        <para>Uploading and downloading files</para>
                    </listitem>
                    <listitem>
                        <para>Selecting alternative methods of typing or controlling the mouse,
                            particularly for use on mobile or touchscreen devices</para>
                    </listitem>
                    <listitem>
                        <para>Zooming in and out of the remote display</para>
                    </listitem>
                    <listitem>
                        <para>Disconnecting from the current connection entirely</para>
                    </listitem>
                </itemizedlist></para>
        </section>
    </section>
    <section xml:id="using-the-clipboard">
        <title>Copying/pasting text</title>
        <para><indexterm>
                <primary>clipboard</primary>
            </indexterm>At the top of the Guacamole menu is a text area labeled "clipboard" along
            with some basic instructions:</para>
        <blockquote>
            <para>Text copied/cut within Guacamole will appear here. Changes to the text below will
                affect the remote clipboard.</para>
        </blockquote>
        <para>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.</para>
    </section>
    <section xml:id="client-user-menu">
        <title>Disconnecting and navigation</title>
        <para>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:</para>
        <informalfigure>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/guac-menu-disconnect.png" format="PNG"
                        contentwidth="6in"/>
                </imageobject>
                <caption>
                    <para>The user menu within the Guacamole menu.</para>
                </caption>
            </mediaobject>
            <para>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.</para>
            <para>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.</para>
        </informalfigure>
    </section>
    <section xml:id="client-share-menu">
        <title>Sharing the connection</title>
        <para>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.</para>
        <informalfigure>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/guac-menu-share.png" format="PNG" contentwidth="6in"
                    />
                </imageobject>
            </mediaobject>
        </informalfigure>
        <para>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.</para>
        <informalfigure>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/guac-menu-share-link.png" format="PNG"
                        contentwidth="6in"/>
                </imageobject>
            </mediaobject>
        </informalfigure>
        <para>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.</para>
    </section>
    <section xml:id="file-transfer">
        <title>Transferring files</title>
        <indexterm>
            <primary>file transfer</primary>
        </indexterm>
        <para>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.</para>
        <para>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.</para>
        <section xml:id="file-browser">
            <title>Using the file browser</title>
            <para>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.</para>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/file-browser.png" format="PNG" contentwidth="3in"/>
                </imageobject>
                <caption>
                    <para>The file browser within the Guacamole menu.</para>
                </caption>
            </mediaobject>
            <para>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.</para>
            <para>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.</para>
            <para>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.</para>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/file-transfers.png" format="PNG" contentwidth="3in"/>
                </imageobject>
                <caption>
                    <para>In-progress and completed file transfers.</para>
                </caption>
            </mediaobject>
            <para>When you are done browsing the filesystem and transferring files, click "Back" to
                return to the Guacamole menu.</para>
        </section>
        <section xml:id="rdp-virtual-drive">
            <title>The RDP virtual drive</title>
            <para>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.</para>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/guacamole-drive.png" format="PNG" contentwidth="5in"
                    />
                </imageobject>
                <caption>
                    <para>The Guacamole drive within a Windows RDP session.</para>
                </caption>
            </mediaobject>
            <para>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.</para>
            <mediaobject>
                <imageobject>
                    <imagedata fileref="images/guacamole-drive-download.png" format="PNG"
                        contentwidth="5in"/>
                </imageobject>
                <caption>
                    <para>The Guacamole drive's "Download" folder.</para>
                </caption>
            </mediaobject>
        </section>
        <section xml:id="guacctl">
            <title><command>guacctl</command> / <command>guacget</command></title>
            <para><indexterm>
                    <primary><command>guacctl</command></primary>
                </indexterm><indexterm>
                    <primary><command>guacget</command></primary>
                </indexterm><indexterm>
                    <primary>SSH</primary>
                    <secondary><command>guacctl</command></secondary>
                </indexterm><indexterm>
                    <primary>SSH</primary>
                    <secondary><command>guacget</command></secondary>
                </indexterm>In addition to traditional drag-and-drop and the file browser,
                Guacamole's SSH support can be used with the <command>guacctl</command> utility. The
                    <command>guacctl</command> utility is a simple shell script <link
                    xmlns:xlink="http://www.w3.org/1999/xlink"
                    xlink:href="https://raw.githubusercontent.com/apache/incubator-guacamole-server/master/bin/guacctl"
                    >included with Guacamole</link> which allows you to use and configure file
                transfer directly from the command line within the SSH session:</para>
            <informalexample>
                <screen><prompt>$</prompt> <userinput>guacctl</userinput>
<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.</computeroutput>
<prompt>$</prompt> <userinput>guacctl -d <replaceable>FILENAME</replaceable></userinput>
<prompt>$</prompt> <userinput>guacctl -s <replaceable>DIRECTORY</replaceable></userinput>
$</screen>
            </informalexample>
            <para>For convenience, you may also create a symbolic link or alias to
                    <command>guacctl</command> called <command>guacget</command>. When run as
                    <command>guacget</command>, the utility behaves as if the
                    <option>--download</option> option were supplied and initiates a download for
                each file specified on the command line.</para>
        </section>
    </section>
    <section xml:id="using-the-osk">
        <title>On-screen keyboard</title>
        <para>Certain key combinations are impossible to press within a web application like
            Guacamole because they are reserved by the operating system (<keycombo>
                <keycap>Ctrl</keycap>
                <keycap>Alt</keycap>
                <keycap>Del</keycap>
            </keycombo> or <keycombo>
                <keycap>Alt</keycap>
                <keycap>Tab</keycap>
            </keycombo>, 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.</para>
        <para>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 <keycap>Ctrl</keycap>, 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.</para>
        <para>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.</para>
    </section>
    <section xml:id="scaling-display">
        <title>Scaling the display</title>
        <para><indexterm>
                <primary>zoom</primary>
            </indexterm>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.</para>
        <para>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.</para>
        <para>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.</para>
    </section>
    <section xml:id="touch-devices">
        <title>Mobile or touch devices</title>
        <para>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.</para>
        <section xml:id="touch-mouse">
            <title>Mouse emulation</title>
            <para><indexterm>
                    <primary>mouse</primary>
                </indexterm>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.</para>
            <para>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.</para>
            <section xml:id="absolute-mouse-emulation">
                <title>Absolute mode (touchscreen)</title>
                <para>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.</para>
                <para>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.</para>
                <para>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.</para>
                <informalfigure>
                    <mediaobject>
                        <imageobject>
                            <imagedata fileref="images/touchscreen.png" format="PNG"
                                contentwidth="1.5in"/>
                        </imageobject>
                    </mediaobject>
                </informalfigure>
            </section>
            <section xml:id="relative-mouse-emulation">
                <title>Relative mode (touchpad)</title>
                <para>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.</para>
                <para>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.</para>
                <informalfigure>
                    <mediaobject>
                        <imageobject>
                            <imagedata fileref="images/touchpad.png" format="PNG"
                                contentwidth="1.5in"/>
                        </imageobject>
                    </mediaobject>
                </informalfigure>
            </section>
        </section>
        <section xml:id="text-input">
            <title>Typing without a physical keyboard</title>
            <para>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.</para>
            <para>"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.</para>
            <para><indexterm>
                    <primary>input method editors</primary>
                </indexterm>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.</para>
        </section>
    </section>
    <section xml:id="preferences">
        <title>Changing preferences</title>
        <para>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.</para>
        <informalfigure>
            <screenshot>
                <mediaobject>
                    <imageobject>
                        <imagedata fileref="images/guacamole-preferences.png" format="PNG"
                            contentwidth="6in"/>
                    </imageobject>
                    <caption>
                        <para>Guacamole preferences screen.</para>
                    </caption>
                </mediaobject>
            </screenshot>
        </informalfigure>
        <section xml:id="display-language">
            <title>Display language</title>
            <para>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.</para>
            <para>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.</para>
        </section>
        <section xml:id="changing-password">
            <title>Changing your password</title>
            <para>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
                    <emphasis>does</emphasis> have permission, the preferences screen will contain a
                "Change Password" section.</para>
            <para>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.</para>
        </section>
        <section xml:id="default-input-settings">
            <title>Default input settings</title>
            <para>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.</para>
            <para>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.</para>
        </section>
    </section>

</chapter>
