| |
| <!DOCTYPE html> |
| |
| |
| <html lang="en" data-content_root="./" > |
| |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" /> |
| |
| <title>Guacamole protocol reference — Apache Guacamole Manual v1.6.0</title> |
| |
| |
| |
| <script data-cfasync="false"> |
| document.documentElement.dataset.mode = localStorage.getItem("mode") || ""; |
| document.documentElement.dataset.theme = localStorage.getItem("theme") || ""; |
| </script> |
| |
| <!-- Loaded before other Sphinx assets --> |
| <link href="_static/styles/theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> |
| <link href="_static/styles/bootstrap.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> |
| <link href="_static/styles/pydata-sphinx-theme.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> |
| |
| |
| <link href="_static/vendor/fontawesome/6.5.2/css/all.min.css?digest=dfe6caa3a7d634c4db9b" rel="stylesheet" /> |
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2" /> |
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2" /> |
| <link rel="preload" as="font" type="font/woff2" crossorigin href="_static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2" /> |
| |
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" /> |
| <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=eba8b062" /> |
| <link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" /> |
| <link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" /> |
| <link rel="stylesheet" type="text/css" href="_static/gug.css?v=475feb7f" /> |
| |
| <!-- Pre-loaded scripts that we'll load fully later --> |
| <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b" /> |
| <link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b" /> |
| <script src="_static/vendor/fontawesome/6.5.2/js/all.min.js?digest=dfe6caa3a7d634c4db9b"></script> |
| |
| <script src="_static/documentation_options.js?v=9eb32ce0"></script> |
| <script src="_static/doctools.js?v=9bcbadda"></script> |
| <script src="_static/sphinx_highlight.js?v=dc90522c"></script> |
| <script src="_static/clipboard.min.js?v=a7894cd8"></script> |
| <script src="_static/copybutton.js?v=c136e461"></script> |
| <script src="_static/tabs.js?v=3ee01567"></script> |
| <script src="_static/scripts/sphinx-book-theme.js?v=887ef09a"></script> |
| <script>DOCUMENTATION_OPTIONS.pagename = 'protocol-reference';</script> |
| <link rel="index" title="Index" href="genindex.html" /> |
| <link rel="search" title="Search" href="search.html" /> |
| <link rel="next" title="Database schema reference" href="jdbc-auth-schema.html" /> |
| <link rel="prev" title="Writing your own Guacamole application" href="writing-you-own-guacamole-app.html" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1"/> |
| <meta name="docsearch:language" content="en"/> |
| </head> |
| |
| |
| <body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode=""> |
| |
| |
| |
| <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div> |
| |
| <div id="pst-scroll-pixel-helper"></div> |
| |
| <button type="button" class="btn rounded-pill" id="pst-back-to-top"> |
| <i class="fa-solid fa-arrow-up"></i>Back to top</button> |
| |
| |
| <input type="checkbox" |
| class="sidebar-toggle" |
| id="pst-primary-sidebar-checkbox"/> |
| <label class="overlay overlay-primary" for="pst-primary-sidebar-checkbox"></label> |
| |
| <input type="checkbox" |
| class="sidebar-toggle" |
| id="pst-secondary-sidebar-checkbox"/> |
| <label class="overlay overlay-secondary" for="pst-secondary-sidebar-checkbox"></label> |
| |
| <div class="search-button__wrapper"> |
| <div class="search-button__overlay"></div> |
| <div class="search-button__search-container"> |
| <form class="bd-search d-flex align-items-center" |
| action="search.html" |
| method="get"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <input type="search" |
| class="form-control" |
| name="q" |
| id="search-input" |
| placeholder="Search..." |
| aria-label="Search..." |
| autocomplete="off" |
| autocorrect="off" |
| autocapitalize="off" |
| spellcheck="false"/> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span> |
| </form></div> |
| </div> |
| |
| <div class="pst-async-banner-revealer d-none"> |
| <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside> |
| </div> |
| |
| |
| <header class="bd-header navbar navbar-expand-lg bd-navbar d-print-none"> |
| </header> |
| |
| |
| <div class="bd-container"> |
| <div class="bd-container__inner bd-page-width"> |
| |
| |
| |
| <div class="bd-sidebar-primary bd-sidebar"> |
| |
| |
| |
| <div class="sidebar-header-items sidebar-primary__section"> |
| |
| |
| |
| |
| </div> |
| |
| <div class="sidebar-primary-items__start sidebar-primary__section"> |
| <div class="sidebar-primary-item"> |
| |
| |
| |
| |
| |
| <a class="navbar-brand logo" href="index.html"> |
| |
| |
| |
| |
| |
| |
| <p class="title logo__title">Apache Guacamole Manual v1.6.0</p> |
| |
| </a></div> |
| <div class="sidebar-primary-item"> |
| |
| <script> |
| document.write(` |
| <button class="btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="fa-solid fa-magnifying-glass"></i> |
| <span class="search-button__default-text">Search</span> |
| <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span> |
| </button> |
| `); |
| </script></div> |
| <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main"> |
| <div class="bd-toc-item navbar-nav active"> |
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Getting Started</span></p> |
| <ul class="nav bd-sidenav"> |
| <li class="toctree-l1"><a class="reference internal" href="introduction.html">Introduction</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="guacamole-architecture.html">Implementation and architecture</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="installing-guacamole.html">Installing Guacamole</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="guacamole-native.html">Native installation</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="guacamole-docker.html">Containerized (Docker) installation</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="jdbc-auth.html">Database setup</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="mysql-auth.html">MariaDB / MySQL</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="postgresql-auth.html">PostgreSQL</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="sqlserver-auth.html">SQL Server</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="security.html">Securing a Guacamole install</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="reverse-proxy.html">SSL termination</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="auth-ban.html">Blocking brute-force attacks</a></li> |
| </ul> |
| </details></li> |
| </ul> |
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Using Guacamole</span></p> |
| <ul class="nav bd-sidenav"> |
| <li class="toctree-l1"><a class="reference internal" href="configuring-guacamole.html">Configuration</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="using-guacamole.html">General usage</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="administration.html">Administration</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="batch-import.html">Importing connections</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li> |
| </ul> |
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Extensions</span></p> |
| <ul class="nav bd-sidenav"> |
| <li class="toctree-l1"><a class="reference internal" href="ldap-auth.html">Active Directory / LDAP</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="mfa.html">Multi-factor authentication</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="duo-auth.html">Duo</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="totp-auth.html">TOTP</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="sso.html">Single sign-on</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="cas-auth.html">CAS</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="openid-auth.html">OpenID Connect</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="saml-auth.html">SAML</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ssl-auth.html">Smart cards / Certificates</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference internal" href="vault.html">Retrieving secrets from a vault</a></li> |
| <li class="toctree-l1 has-children"><a class="reference internal" href="external-auth.html">External authentication</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul> |
| <li class="toctree-l2"><a class="reference internal" href="json-auth.html">Encrypted, signed JSON</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="header-auth.html">HTTP header</a></li> |
| </ul> |
| </details></li> |
| <li class="toctree-l1"><a class="reference internal" href="radius-auth.html">RADIUS</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="adhoc-connections.html">Ad-hoc connections</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="auth-restrict.html">Login / Connection restrictions</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="recording-playback.html">Session recording player</a></li> |
| </ul> |
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Developer's Guide</span></p> |
| <ul class="nav bd-sidenav"> |
| <li class="toctree-l1"><a class="reference internal" href="guacamole-protocol.html">The Guacamole protocol</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="libguac.html">libguac</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="guacamole-common.html">guacamole-common</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="guacamole-common-js.html">guacamole-common-js</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="guacamole-ext.html">guacamole-ext</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="custom-protocols.html">Adding new protocols</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="custom-auth.html">Custom authentication</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="event-listeners.html">Event listeners</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="writing-you-own-guacamole-app.html">Writing your own Guacamole application</a></li> |
| </ul> |
| <p aria-level="2" class="caption" role="heading"><span class="caption-text">Appendices</span></p> |
| <ul class="current nav bd-sidenav"> |
| <li class="toctree-l1 current active"><a class="current reference internal" href="#">Guacamole protocol reference</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="jdbc-auth-schema.html">Database schema reference</a></li> |
| </ul> |
| |
| </div> |
| </nav></div> |
| </div> |
| |
| |
| <div class="sidebar-primary-items__end sidebar-primary__section"> |
| </div> |
| |
| <div id="rtd-footer-container"></div> |
| |
| |
| </div> |
| |
| <main id="main-content" class="bd-main" role="main"> |
| |
| |
| |
| <div class="sbt-scroll-pixel-helper"></div> |
| |
| <div class="bd-content"> |
| <div class="bd-article-container"> |
| |
| <div class="bd-header-article d-print-none"> |
| <div class="header-article-items header-article__inner"> |
| |
| <div class="header-article-items__start"> |
| |
| <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <span class="fa-solid fa-bars"></span> |
| </button></div> |
| |
| </div> |
| |
| |
| <div class="header-article-items__end"> |
| |
| <div class="header-article-item"> |
| |
| <div class="article-header-buttons"> |
| |
| |
| |
| <button onclick="toggleFullScreen()" |
| class="btn btn-sm btn-fullscreen-button" |
| title="Fullscreen mode" |
| data-bs-placement="bottom" data-bs-toggle="tooltip" |
| > |
| |
| |
| <span class="btn__icon-container"> |
| <i class="fas fa-expand"></i> |
| </span> |
| |
| </button> |
| |
| |
| |
| <script> |
| document.write(` |
| <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="theme-switch fa-solid fa-sun fa-lg" data-mode="light"></i> |
| <i class="theme-switch fa-solid fa-moon fa-lg" data-mode="dark"></i> |
| <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg" data-mode="auto"></i> |
| </button> |
| `); |
| </script> |
| |
| |
| <script> |
| document.write(` |
| <button class="btn btn-sm pst-navbar-icon search-button search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <i class="fa-solid fa-magnifying-glass fa-lg"></i> |
| </button> |
| `); |
| </script> |
| <button class="sidebar-toggle secondary-toggle btn btn-sm" title="Toggle secondary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip"> |
| <span class="fa-solid fa-list"></span> |
| </button> |
| </div></div> |
| |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| <div id="jb-print-docs-body" class="onlyprint"> |
| <h1>Guacamole protocol reference</h1> |
| <!-- Table of contents --> |
| <div id="print-main-content"> |
| <div id="jb-print-toc"> |
| |
| <div> |
| <h2> Contents </h2> |
| </div> |
| <nav aria-label="Page"> |
| <ul class="visible nav section-nav flex-column"> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#drawing-instructions">Drawing instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#streaming-instructions">Streaming instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#object-instructions">Object instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#client-handshake-instructions">Client handshake instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#server-handshake-instructions">Server handshake instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#control-instructions">Control instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#server-control-instructions">Server control instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#input-event-instructions">Input/Event instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#status-codes">Status codes</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#message-codes">Message Codes</a></li> |
| </ul> |
| </nav> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div id="searchbox"></div> |
| <article class="bd-article"> |
| |
| <section id="guacamole-protocol-reference"> |
| <h1>Guacamole protocol reference<a class="headerlink" href="#guacamole-protocol-reference" title="Link to this heading">#</a></h1> |
| <section id="drawing-instructions"> |
| <h2>Drawing instructions<a class="headerlink" href="#drawing-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="arc-instruction"> |
| <span class="sig-name descname"><span class="pre">arc</span></span><a class="headerlink" href="#arc-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>The arc instruction adds the specified arc subpath to the existing path, |
| creating a new path if no path exists. The path created can be modified further |
| by other path-type instructions, and finally stroked, filled, and/or closed.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer which should have the specified arc subpath added.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the center of the circle containing the arc to be |
| drawn.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the center of the circle containing the arc to be |
| drawn.</p></li> |
| <li><p><strong>radius</strong> (<em>float</em>) – The radius of the circle containing the arc to be drawn, in pixels.</p></li> |
| <li><p><strong>start</strong> (<em>float</em>) – The starting angle of the arc to be drawn, in radians.</p></li> |
| <li><p><strong>end</strong> (<em>float</em>) – The ending angle of the arc to be drawn, in radians.</p></li> |
| <li><p><strong>negative</strong> (<em>integer</em>) – Non-zero if the arc should be drawn from START to END in order of |
| decreasing angle, zero otherwise.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="cfill-instruction"> |
| <span class="sig-name descname"><span class="pre">cfill</span></span><a class="headerlink" href="#cfill-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Fills the current path with the specified color. This instruction completes |
| the current path. Future path instructions will begin a new path.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when filling the current path in the |
| specified layer.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer whose path should be filled.</p></li> |
| <li><p><strong>r</strong> (<em>integer</em>) – The red component of the color to use to fill the current path in the |
| specified layer.</p></li> |
| <li><p><strong>g</strong> (<em>integer</em>) – The green component of the color to use to fill the current path in the |
| specified layer.</p></li> |
| <li><p><strong>b</strong> (<em>integer</em>) – The blue component of the color to use to fill the current path in the |
| specified layer.</p></li> |
| <li><p><strong>a</strong> (<em>integer</em>) – The alpha component of the color to use to fill the current path in the |
| specified layer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="clip-instruction"> |
| <span class="sig-name descname"><span class="pre">clip</span></span><a class="headerlink" href="#clip-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Applies the current path as the clipping path. Future operations will only |
| draw within the current path. Note that future clip instructions will also |
| be limited by this path. To set a completely new clipping path, you must |
| first reset the layer with a reset instruction. If you wish to only reset |
| the clipping path, but preserve the current transform matrix, push the |
| layer state before setting the clipping path, and pop the layer state to |
| reset.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer whose clipping path should be set.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="close-instruction"> |
| <span class="sig-name descname"><span class="pre">close</span></span><a class="headerlink" href="#close-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Closes the current path by connecting the start and end points with a |
| straight line.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer whose path should be closed.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="copy-instruction"> |
| <span class="sig-name descname"><span class="pre">copy</span></span><a class="headerlink" href="#copy-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Copies image data from the specified rectangle of the specified layer or |
| buffer to a different location of another specified layer or buffer.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>srclayer</strong> (<em>integer</em>) – The index of the layer to copy image data from.</p></li> |
| <li><p><strong>srcx</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the source rectangle |
| within the source layer.</p></li> |
| <li><p><strong>srcy</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the source rectangle |
| within the source layer.</p></li> |
| <li><p><strong>srcwidth</strong> (<em>integer</em>) – The width of the source rectangle within the source layer.</p></li> |
| <li><p><strong>srcheight</strong> (<em>integer</em>) – The height of the source rectangle within the source layer.</p></li> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when drawing the image data on the |
| destination layer.</p></li> |
| <li><p><strong>dstlayer</strong> (<em>integer</em>) – The index of the layer to draw the image data to.</p></li> |
| <li><p><strong>dstx</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the destination within |
| the destination layer.</p></li> |
| <li><p><strong>dsty</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the destination within |
| the destination layer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="cstroke-instruction"> |
| <span class="sig-name descname"><span class="pre">cstroke</span></span><a class="headerlink" href="#cstroke-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Strokes the current path with the specified color. This instruction |
| completes the current path. Future path instructions will begin a new path.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when stroking the current path in the |
| specified layer.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer whose path should be stroked.</p></li> |
| <li><p><strong>cap</strong> (<em>integer</em>) – The index of the line cap style to use. This can be either butt (0), |
| round (1), or square (2).</p></li> |
| <li><p><strong>join</strong> (<em>integer</em>) – The index of the line join style to use. This can be either bevel |
| (0), miter (1), or round (2).</p></li> |
| <li><p><strong>thickness</strong> (<em>integer</em>) – The thickness of the stroke to draw, in pixels.</p></li> |
| <li><p><strong>r</strong> (<em>integer</em>) – The red component of the color to use to stroke the current path in |
| the specified layer.</p></li> |
| <li><p><strong>g</strong> (<em>integer</em>) – The green component of the color to use to stroke the current path in |
| the specified layer.</p></li> |
| <li><p><strong>b</strong> (<em>integer</em>) – The blue component of the color to use to stroke the current path in |
| the specified layer.</p></li> |
| <li><p><strong>a</strong> (<em>integer</em>) – The alpha component of the color to use to stroke the current path in |
| the specified layer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="cursor-instruction"> |
| <span class="sig-name descname"><span class="pre">cursor</span></span><a class="headerlink" href="#cursor-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sets the client’s cursor to the image data from the specified rectangle of |
| a layer, with the specified hotspot.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the cursor’s hotspot.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the cursor’s hotspot.</p></li> |
| <li><p><strong>srclayer</strong> (<em>integer</em>) – The index of the layer to copy image data from.</p></li> |
| <li><p><strong>srcx</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the source rectangle |
| within the source layer.</p></li> |
| <li><p><strong>srcy</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the source rectangle |
| within the source layer.</p></li> |
| <li><p><strong>srcwidth</strong> (<em>integer</em>) – The width of the source rectangle within the source layer.</p></li> |
| <li><p><strong>srcheight</strong> (<em>integer</em>) – The height of the source rectangle within the source layer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="curve-instruction"> |
| <span class="sig-name descname"><span class="pre">curve</span></span><a class="headerlink" href="#curve-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Adds the specified cubic bezier curve subpath.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer which should have the specified curve subpath added.</p></li> |
| <li><p><strong>cp1x</strong> (<em>integer</em>) – The X coordinate of the first control point of the curve.</p></li> |
| <li><p><strong>cp1y</strong> (<em>integer</em>) – The Y coordinate of the first control point of the curve.</p></li> |
| <li><p><strong>cp2x</strong> (<em>integer</em>) – The X coordinate of the second control point of the curve.</p></li> |
| <li><p><strong>cp2y</strong> (<em>integer</em>) – The Y coordinate of the second control point of the curve.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the endpoint of the curve.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the endpoint of the curve.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="dispose-instruction"> |
| <span class="sig-name descname"><span class="pre">dispose</span></span><a class="headerlink" href="#dispose-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Removes the specified layer. The specified layer will be recreated as a new |
| layer if it is referenced again.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer to remove.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="distort-instruction"> |
| <span class="sig-name descname"><span class="pre">distort</span></span><a class="headerlink" href="#distort-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sets the given affine transformation matrix to the layer. Unlike transform, |
| this operation is independent of any previously sent transformation matrix. |
| This operation can be undone by setting the layer’s transformation matrix |
| to the identity matrix using distort</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer to distort.</p></li> |
| <li><p><strong>a</strong> (<em>float</em>) – The matrix value in row 1, column 1.</p></li> |
| <li><p><strong>b</strong> (<em>float</em>) – The matrix value in row 2, column 1.</p></li> |
| <li><p><strong>c</strong> (<em>float</em>) – The matrix value in row 1, column 2.</p></li> |
| <li><p><strong>d</strong> (<em>float</em>) – The matrix value in row 2, column 2.</p></li> |
| <li><p><strong>e</strong> (<em>float</em>) – The matrix value in row 1, column 3.</p></li> |
| <li><p><strong>f</strong> (<em>float</em>) – The matrix value in row 2, column 3.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="identity-instruction"> |
| <span class="sig-name descname"><span class="pre">identity</span></span><a class="headerlink" href="#identity-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Resets the transform matrix of the specified layer to the identity matrix.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer whose transform matrix should be reset.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="img-instruction"> |
| <span class="sig-name descname"><span class="pre">img</span></span><a class="headerlink" href="#img-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the metadata of an image |
| update, including the image type, the destination layer, and destination |
| coordinates. The contents of the image will later be sent along the stream |
| with blob instructions. The full size of the image need not be known ahead |
| of time.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the image being sent.</p></li> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when drawing the image data.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The destination layer.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the destination within |
| the destination layer.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the destination within |
| the destination layer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="lfill-instruction"> |
| <span class="sig-name descname"><span class="pre">lfill</span></span><a class="headerlink" href="#lfill-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Fills the current path with a tiled pattern of the image data from the |
| specified layer. This instruction completes the current path. Future path |
| instructions will begin a new path.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when filling the current path in the |
| specified layer.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer whose path should be filled.</p></li> |
| <li><p><strong>srclayer</strong> (<em>integer</em>) – The layer to use as the pattern.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="line-instruction"> |
| <span class="sig-name descname"><span class="pre">line</span></span><a class="headerlink" href="#line-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Adds the specified line subpath.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer which should have the specified line subpath added.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the endpoint of the line.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the endpoint of the line.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="lstroke-instruction"> |
| <span class="sig-name descname"><span class="pre">lstroke</span></span><a class="headerlink" href="#lstroke-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Strokes the current path with a tiled pattern of the image data from the |
| specified layer. This instruction completes the current path. Future path |
| instructions will begin a new path.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when filling the current path in the |
| specified layer.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer whose path should be filled.</p></li> |
| <li><p><strong>cap</strong> (<em>integer</em>) – The index of the line cap style to use. This can be either butt (0), |
| round (1), or square (2).</p></li> |
| <li><p><strong>join</strong> (<em>integer</em>) – The index of the line join style to use. This can be either bevel |
| (0), miter (1), or round (2).</p></li> |
| <li><p><strong>thickness</strong> (<em>integer</em>) – The thickness of the stroke to draw, in pixels.</p></li> |
| <li><p><strong>srclayer</strong> (<em>integer</em>) – The layer to use as the pattern.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="move-instruction"> |
| <span class="sig-name descname"><span class="pre">move</span></span><a class="headerlink" href="#move-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Moves the given layer to the given location within the specified parent |
| layer. This operation is applicable only to layers, and cannot be applied |
| to buffers (layers with negative indices). Applying this operation to the |
| default layer (layer 0) also has no effect.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer to move.</p></li> |
| <li><p><strong>parent</strong> (<em>integer</em>) – The layer that should be the parent of the given layer.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate to move the layer to.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate to move the layer to.</p></li> |
| <li><p><strong>z</strong> (<em>integer</em>) – The relative Z-ordering of this layer. Layers with larger values will |
| appear above layers with smaller values.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="pop-instruction"> |
| <span class="sig-name descname"><span class="pre">pop</span></span><a class="headerlink" href="#pop-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Restores the previous state of the specified layer from the stack. The |
| state restored includes the transformation matrix and clipping path.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer whose state should be restored.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="push-instruction"> |
| <span class="sig-name descname"><span class="pre">push</span></span><a class="headerlink" href="#push-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Saves the current state of the specified layer to the stack. The state |
| saved includes the current transformation matrix and clipping path.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer whose state should be saved.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="rect-instruction"> |
| <span class="sig-name descname"><span class="pre">rect</span></span><a class="headerlink" href="#rect-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Adds a rectangular path to the specified layer.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The channel mask to apply when drawing the image data.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The destination layer.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the rectangle to draw.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the rectangle to draw.</p></li> |
| <li><p><strong>width</strong> (<em>integer</em>) – The width of the rectangle to draw.</p></li> |
| <li><p><strong>height</strong> (<em>integer</em>) – The width of the rectangle to draw.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="reset-instruction"> |
| <span class="sig-name descname"><span class="pre">reset</span></span><a class="headerlink" href="#reset-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Resets the transformation and clip state of the layer.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>layer</strong> (<em>integer</em>) – The layer whose state should be reset.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="set-instruction"> |
| <span class="sig-name descname"><span class="pre">set</span></span><a class="headerlink" href="#set-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sets the given client-side property to the specified value. Currently there |
| is only one property: miter-limit, the maximum distance between the inner |
| and outer points of a miter joint, proportional to stroke width (if |
| miter-limit is set to 10.0, the default, then the maximum distance between |
| the points of the joint is 10 times the stroke width).</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer whose property should be set.</p></li> |
| <li><p><strong>property</strong> (<em>string</em>) – The name of the property to set.</p></li> |
| <li><p><strong>value</strong> (<em>string</em>) – The value to set the given property to.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="shade-instruction"> |
| <span class="sig-name descname"><span class="pre">shade</span></span><a class="headerlink" href="#shade-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sets the opacity of the given layer.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer whose opacity should be set.</p></li> |
| <li><p><strong>opacity</strong> (<em>integer</em>) – The opacity of the layer, where 0 is completely transparent, and 255 |
| is completely opaque.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="size-instruction"> |
| <span class="sig-name descname"><span class="pre">size</span></span><a class="headerlink" href="#size-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sets the size of the specified layer.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer to resize.</p></li> |
| <li><p><strong>width</strong> (<em>integer</em>) – The new width of the layer</p></li> |
| <li><p><strong>height</strong> (<em>integer</em>) – The new height of the layer</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="start-instruction"> |
| <span class="sig-name descname"><span class="pre">start</span></span><a class="headerlink" href="#start-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Starts a new subpath at the specified point.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer which should start a new subpath.</p></li> |
| <li><p><strong>x</strong> (<em>integer</em>) – The X coordinate of the first point of the new subpath.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The Y coordinate of the first point of the new subpath.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="transfer-instruction"> |
| <span class="sig-name descname"><span class="pre">transfer</span></span><a class="headerlink" href="#transfer-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Transfers image data from the specified rectangle of the specified layer or |
| buffer to a different location of another specified layer or buffer, using |
| the specified transfer function.</p> |
| <p>For a list of available functions, see the definition of |
| <code class="docutils literal notranslate"><span class="pre">guac_transfer_function</span></code> within the <a class="reference external" href="https://github.com/apache/guacamole-server/blob/master/src/libguac/guacamole/protocol-types.h">guacamole/protocol-types.h</a> |
| header included with libguac.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>srclayer</strong> (<em>integer</em>) – The index of the layer to transfer image data from.</p></li> |
| <li><p><strong>srcx</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the source rectangle |
| within the source layer.</p></li> |
| <li><p><strong>srcy</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the source rectangle |
| within the source layer.</p></li> |
| <li><p><strong>srcwidth</strong> (<em>integer</em>) – The width of the source rectangle within the source layer.</p></li> |
| <li><p><strong>srcheight</strong> (<em>integer</em>) – The height of the source rectangle within the source layer.</p></li> |
| <li><p><strong>function</strong> (<em>integer</em>) – <p>The index of the transfer function to use.</p> |
| <p>For a list of available functions, see the definition of |
| <code class="docutils literal notranslate"><span class="pre">guac_transfer_function</span></code> within the <a class="reference external" href="https://github.com/apache/guacamole-server/blob/master/src/libguac/guacamole/protocol-types.h">guacamole/protocol-types.h</a> |
| header included with libguac.</p> |
| </p></li> |
| <li><p><strong>dstlayer</strong> (<em>integer</em>) – The index of the layer to draw the image data to.</p></li> |
| <li><p><strong>dstx</strong> (<em>integer</em>) – The X coordinate of the upper-left corner of the destination within |
| the destination layer.</p></li> |
| <li><p><strong>dsty</strong> (<em>integer</em>) – The Y coordinate of the upper-left corner of the destination within |
| the destination layer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="transform-instruction"> |
| <span class="sig-name descname"><span class="pre">transform</span></span><a class="headerlink" href="#transform-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Applies the specified transformation matrix to future operations. Unlike |
| distort, this operation is dependent on any previously sent transformation |
| matrices, and only affects future operations. This operation can be undone |
| by setting the layer’s transformation matrix to the identity matrix using |
| identity, but image data already drawn will not be affected.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The layer to apply the given transformation matrix to.</p></li> |
| <li><p><strong>a</strong> (<em>float</em>) – The matrix value in row 1, column 1.</p></li> |
| <li><p><strong>b</strong> (<em>float</em>) – The matrix value in row 2, column 1.</p></li> |
| <li><p><strong>c</strong> (<em>float</em>) – The matrix value in row 1, column 2.</p></li> |
| <li><p><strong>d</strong> (<em>float</em>) – The matrix value in row 2, column 2.</p></li> |
| <li><p><strong>e</strong> (<em>float</em>) – The matrix value in row 1, column 3.</p></li> |
| <li><p><strong>f</strong> (<em>float</em>) – The matrix value in row 2, column 3.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </section> |
| <section id="streaming-instructions"> |
| <h2>Streaming instructions<a class="headerlink" href="#streaming-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="ack-instruction"> |
| <span class="sig-name descname"><span class="pre">ack</span></span><a class="headerlink" href="#ack-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>The ack instruction acknowledges a received data blob, providing a status |
| code and message indicating whether the operation associated with the blob |
| succeeded or failed. A status code other than 0 (<code class="docutils literal notranslate"><span class="pre">SUCCESS</span></code>) implicitly |
| ends the stream.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream the corresponding blob was received on.</p></li> |
| <li><p><strong>message</strong> (<em>string</em>) – A human-readable error message. This typically is not exposed within |
| any user interface, and mainly helps with debugging.</p></li> |
| <li><p><strong>status</strong> (<em>integer</em>) – The Guacamole status code denoting success or failure. For a list of status |
| codes, see the table in <a class="reference external" href="#status-codes">Status codes</a>.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="argv-instruction"> |
| <span class="sig-name descname"><span class="pre">argv</span></span><a class="headerlink" href="#argv-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given argument (connection |
| parameter) metadata. The relevant connection parameter data will later be |
| sent along the stream with blob instructions. If sent by the client, this |
| data will be the desired new value of the connection parameter being |
| changed, and will be applied if the server supports changing that |
| connection parameter while the connection is active. If sent by the server, |
| this data will be the current value of a connection parameter being exposed |
| to the client.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the connection parameter being sent. In most cases, |
| this will be “text/plain”.</p></li> |
| <li><p><strong>name</strong> (<em>string</em>) – The name of the connection parameter whose value is being sent.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="audio-instruction"> |
| <span class="sig-name descname"><span class="pre">audio</span></span><a class="headerlink" href="#audio-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given audio metadata. |
| Audio data will later be sent along the stream with blob instructions. The |
| mimetype given must be a mimetype previously specified by the client during |
| the handshake procedure. Playback will begin immediately and will continue |
| as long as blobs are received along the stream.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the audio data being sent.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="blob-instruction"> |
| <span class="sig-name descname"><span class="pre">blob</span></span><a class="headerlink" href="#blob-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sends a blob of data along the given stream. This blob of data is |
| arbitrary, base64-encoded data, and only has meaning to the Guacamole |
| client or server through the metadata assigned to the stream when the |
| stream was allocated.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream along which the given data should be sent.</p></li> |
| <li><p><strong>data</strong> (<em>string</em>) – The base64-encoded data to send.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="clipboard-instruction"> |
| <span class="sig-name descname"><span class="pre">clipboard</span></span><a class="headerlink" href="#clipboard-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given clipboard metadata. |
| The clipboard data will later be sent along the stream with blob |
| instructions. If sent by the client, this data will be the contents of the |
| client-side clipboard. If sent by the server, this data will be the |
| contents of the clipboard within the remote desktop.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the clipboard data being sent. In most cases, this |
| will be “text/plain”.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="end-instruction"> |
| <span class="sig-name descname"><span class="pre">end</span></span><a class="headerlink" href="#end-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>The end instruction terminates an open stream, freeing any client-side or |
| server-side resources. Data sent to a terminated stream will be ignored. |
| Terminating a stream with the end instruction only denotes the end of the |
| stream and does not imply an error.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>stream</strong> (<em>integer</em>) – The index of the stream the corresponding blob was received on.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="file-instruction"> |
| <span class="sig-name descname"><span class="pre">file</span></span><a class="headerlink" href="#file-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given arbitrary file |
| metadata. The contents of the file will later be sent along the stream with |
| blob instructions. The full size of the file need not be known ahead of |
| time.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the file being sent.</p></li> |
| <li><p><strong>filename</strong> (<em>string</em>) – The name of the file, as it would be saved on a filesystem.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="msg-instruction"> |
| <span class="sig-name descname"><span class="pre">msg</span></span><a class="headerlink" href="#msg-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sends a message from the server (guacd) to the client. The nature of these |
| messages is intentionally broad and flexible - the message must include |
| a numeric code that the client understands and can act on, and may also |
| any number of arguments that can be used by the client in association |
| with the message.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>msg</strong> (<em>integer</em>) – A numeric value indicating the message that is being passed to the client.</p></li> |
| <li><p><strong>args</strong> (<em>string</em>) – Any number of arguments associated with the message that is being sent |
| to the client.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="pipe-instruction"> |
| <span class="sig-name descname"><span class="pre">pipe</span></span><a class="headerlink" href="#pipe-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given arbitrary named pipe |
| metadata. The contents of the pipe will later be sent along the stream with |
| blob instructions. Pipes in the Guacamole protocol are unidirectional, |
| named pipes, very similar to a UNIX FIFO or pipe. It is up to client-side |
| code to handle pipe data appropriately, likely based upon the name of the |
| pipe, which is arbitrary. Pipes may be opened by either the client or the |
| server.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the data being sent along the pipe.</p></li> |
| <li><p><strong>name</strong> (<em>string</em>) – The arbitrary name of the pipe, which may have special meaning to |
| client-side code.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="video-instruction"> |
| <span class="sig-name descname"><span class="pre">video</span></span><a class="headerlink" href="#video-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given video metadata. |
| Video data will later be sent along the stream with blob instructions. The |
| mimetype given must be a mimetype previously specified by the client during |
| the handshake procedure. Playback will begin immediately and will continue |
| as long as blobs are received along the stream.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>layer</strong> (<em>integer</em>) – The index of the layer to stream the video data into. The effect of |
| other drawing operations on this layer during playback is undefined, |
| as the client codec implementation may leverage any rendering |
| mechanism it sees fit, including hardware decoding.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the video data being sent.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </section> |
| <section id="object-instructions"> |
| <h2>Object instructions<a class="headerlink" href="#object-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="body-instruction"> |
| <span class="sig-name descname"><span class="pre">body</span></span><a class="headerlink" href="#body-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the name of a stream previously |
| requested by a get instruction. The contents of the stream will be sent |
| later with blob instructions. The full size of the stream need not be known |
| ahead of time.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>object</strong> (<em>integer</em>) – The index of the object associated with this stream.</p></li> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the data being sent.</p></li> |
| <li><p><strong>name</strong> (<em>string</em>) – The name of the stream associated with the object.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="filesystem-instruction"> |
| <span class="sig-name descname"><span class="pre">filesystem</span></span><a class="headerlink" href="#filesystem-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new object, associating it with the given arbitrary filesystem |
| metadata. The contents of files and directories within the filesystem will |
| later be sent along streams requested with get instructions or created with |
| put instructions.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>object</strong> (<em>integer</em>) – The index of the object to allocate.</p></li> |
| <li><p><strong>name</strong> (<em>string</em>) – The name of the filesystem.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="get-instruction"> |
| <span class="sig-name descname"><span class="pre">get</span></span><a class="headerlink" href="#get-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Requests that a new stream be created, providing read access to the object |
| stream having the given name. The requested stream will be created, in |
| response, with a body instruction.</p> |
| <p>Stream names are arbitrary and dictated by the object from which they are |
| requested, with the exception of the root stream of the object itself, |
| which has the reserved name “<code class="docutils literal notranslate"><span class="pre">/</span></code>”. The root stream of the object has the |
| mimetype “<code class="docutils literal notranslate"><span class="pre">application/vnd.glyptodon.guacamole.stream-index+json</span></code>”, and |
| provides a simple JSON map of available stream names to their corresponding |
| mimetypes. If the object contains a hierarchy of streams, some of these |
| streams may also be |
| “<code class="docutils literal notranslate"><span class="pre">application/vnd.glyptodon.guacamole.stream-index+json</span></code>”.</p> |
| <p>For example, the ultimate content of the body stream provided in response |
| to a get request for the root stream of an object containing two text |
| streams, “A” and “B”, would be the following:</p> |
| <div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span> |
| <span class="w"> </span><span class="nt">"A"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"text/plain"</span><span class="p">,</span> |
| <span class="w"> </span><span class="nt">"B"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"text/plain"</span> |
| <span class="p">}</span> |
| </pre></div> |
| </div> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>object</strong> (<em>integer</em>) – The index of the object to request a stream from.</p></li> |
| <li><p><strong>name</strong> (<em>string</em>) – The name of the stream being requested from the given object.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="put-instruction"> |
| <span class="sig-name descname"><span class="pre">put</span></span><a class="headerlink" href="#put-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Allocates a new stream, associating it with the given arbitrary object and |
| stream name. The contents of the stream will later be sent with blob |
| instructions.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>object</strong> (<em>integer</em>) – The index of the object associated with this stream.</p></li> |
| <li><p><strong>stream</strong> (<em>integer</em>) – The index of the stream to allocate.</p></li> |
| <li><p><strong>mimetype</strong> (<em>string</em>) – The mimetype of the data being sent.</p></li> |
| <li><p><strong>name</strong> (<em>string</em>) – The name of the stream within the given object to which data is being |
| sent.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="undefine-instruction"> |
| <span class="sig-name descname"><span class="pre">undefine</span></span><a class="headerlink" href="#undefine-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Undefines an existing object, allowing its index to be reused by another |
| future object. The resource associated with the original object may or may |
| not continue to exist - it simply no longer has an associated object.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>object</strong> (<em>integer</em>) – The index of the object to undefine.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </section> |
| <section id="client-handshake-instructions"> |
| <h2>Client handshake instructions<a class="headerlink" href="#client-handshake-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-audio-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">audio</span></span><a class="headerlink" href="#client-audio-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies which audio mimetypes are supported by the client. Each parameter |
| must be a single mimetype, listed in order of client preference, with the |
| optimal mimetype being the first parameter.</p> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-connect-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">connect</span></span><a class="headerlink" href="#client-connect-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Begins the connection using the previously specified protocol with the |
| given arguments. This is the last instruction sent during the handshake |
| phase.</p> |
| <p>The parameters of this instruction correspond exactly to the parameters of |
| the received args instruction. If the received args instruction has, for |
| example, three parameters, the responding connect instruction must also |
| have three parameters.</p> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-image-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">image</span></span><a class="headerlink" href="#client-image-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies which image mimetypes are supported by the client. Each parameter |
| must be a single mimetype, listed in order of client preference, with the |
| optimal mimetype being the first parameter.</p> |
| <p>It is expected that the supported mimetypes will include at least |
| “image/png” and “image/jpeg”, and the server <em>may</em> safely assume that these |
| mimetypes are supported, even if they are absent from the handshake.</p> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-name-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#client-name-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies the human-readable name of the user joining a connection. A |
| single, string value is expected for this, and guacd does not expect |
| or require that this value be unique among other users connected to |
| the server or connection. The type of name provided is completely up |
| to the client implementation.</p> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-select-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">select</span></span><a class="headerlink" href="#client-select-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Requests that the connection be made using the specified protocol, or to |
| the specified existing connection. Whether a new connection is established |
| or an existing connection is joined depends on whether the ID of an active |
| connection is provided. The Guacamole protocol dictates that the IDs |
| generated for active connections (provided during the handshake of those |
| connections via the <a class="reference external" href="#ready-instruction">ready instruction</a>) must not |
| collide with any supported protocols.</p> |
| <p>This is the first instruction sent during the handshake phase.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>identifier</strong> (<em>string</em>) – The name of the protocol to use, such as “vnc” or “rdp”, or the ID of |
| the active connection to be joined, as returned via the <a class="reference external" href="#ready-instruction">ready |
| instruction</a>.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-size-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">size</span></span><a class="headerlink" href="#client-size-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies the client’s optimal screen size and resolution.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>width</strong> (<em>integer</em>) – The optimal screen width.</p></li> |
| <li><p><strong>height</strong> (<em>integer</em>) – The optimal screen height.</p></li> |
| <li><p><strong>dpi</strong> (<em>integer</em>) – The optimal screen resolution, in approximate DPI.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-timezone-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">timezone</span></span><a class="headerlink" href="#client-timezone-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies the timezone of the client system, in IANA zone key format. This |
| is a single-value parameter, and may be used by protocols to set the |
| timezone on the remote computer, if the remote system allows the timezone |
| to be configured. This instruction is optional.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>timezone</strong> (<em>string</em>)</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-video-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">video</span></span><a class="headerlink" href="#client-video-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies which video mimetypes are supported by the client. Each parameter |
| must be a single mimetype, listed in order of client preference, with the |
| optimal mimetype being the first parameter.</p> |
| </dd></dl> |
| |
| </section> |
| <section id="server-handshake-instructions"> |
| <h2>Server handshake instructions<a class="headerlink" href="#server-handshake-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="args-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">args</span></span><a class="headerlink" href="#args-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Reports the expected format of the argument list for the protocol requested |
| by the client. This message can be sent by the server during the handshake |
| phase only.</p> |
| <p>The first parameter of this instruction will be the protocol version |
| supported by the server. This is used to negotiate protocol compatibility |
| between the client and the server, with the highest supported protocol by |
| both sides being chosen. Versions of Guacamole prior to 1.1.0 do not |
| support protocol version negotiation, and will silently ignore this |
| instruction.</p> |
| <p>The remaining parameters of the args instruction are the names of all |
| connection parameters accepted by the server for the protocol selected by |
| the client, in order. The client’s responding connect instruction must |
| contain the values of each of these parameters in the same order.</p> |
| </dd></dl> |
| |
| </section> |
| <section id="control-instructions"> |
| <h2>Control instructions<a class="headerlink" href="#control-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="disconnect-instruction"> |
| <span class="sig-name descname"><span class="pre">disconnect</span></span><a class="headerlink" href="#disconnect-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Notifies the client or server that the connection is about to be closed. |
| This message can be sent during any phase, and takes no parameters.</p> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="nop-instruction"> |
| <span class="sig-name descname"><span class="pre">nop</span></span><a class="headerlink" href="#nop-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>The “nop” instruction does absolutely nothing, has no parameters, and is |
| universally ignored by both Guacamole clients and servers. Its main use is |
| as a keep-alive signal, and may be sent by guacd, client plugins, or web |
| applications when there is no activity to ensure the socket is not closed |
| due to timeout.</p> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="sync-instruction"> |
| <span class="sig-name descname"><span class="pre">sync</span></span><a class="headerlink" href="#sync-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Reports that all operations as of the given server-relative timestamp have |
| been completed. Both client and server are expected to occasionally send |
| sync to report on current operation execution state, with the server using |
| sync to denote the end of a logical frame.</p> |
| <p>If a sync is received from the server, the client must respond with a |
| corresponding sync once all previous operations have been completed, or the |
| server may stop sending updates until the client catches up. For the |
| client, sending a sync with a timestamp newer than any timestamp received |
| from the server is an error.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>timestamp</strong> (<em>integer</em>) – A valid server-relative timestamp.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </section> |
| <section id="server-control-instructions"> |
| <h2>Server control instructions<a class="headerlink" href="#server-control-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="error-instruction"> |
| <span class="sig-name descname"><span class="pre">error</span></span><a class="headerlink" href="#error-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Notifies the client that the connection is about to be closed due to the |
| specified error. This message can be sent by the server during any phase.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>message</strong> (<em>string</em>) – An arbitrary message describing the error</p></li> |
| <li><p><strong>status</strong> (<em>integer</em>) – The Guacamole status code describing the error. For a list of status |
| codes, see the table in <a class="reference external" href="#status-codes">Status codes</a>.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="log-instruction"> |
| <span class="sig-name descname"><span class="pre">log</span></span><a class="headerlink" href="#log-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>The log instruction sends an arbitrary string for debugging purposes. This |
| instruction will be ignored by Guacamole clients, but can be seen in |
| protocol dumps if such dumps become necessary. Sending a log instruction |
| can help add context when searching for the cause of a fault in protocol |
| support.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>message</strong> (<em>string</em>) – An arbitrary, human-readable message.</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="mouse-instruction"> |
| <span class="sig-name descname"><span class="pre">mouse</span></span><a class="headerlink" href="#mouse-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Reports that a user on the current connection has moved the mouse to the |
| given coordinates.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>x</strong> (<em>integer</em>) – The current X coordinate of the mouse pointer.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The current Y coordinate of the mouse pointer.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="ready-handshake-instruction"> |
| <span class="sig-name descname"><span class="pre">ready</span></span><a class="headerlink" href="#ready-handshake-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>The ready instruction sends the ID of a new connection and marks the |
| beginning of the interactive phase of a new, successful connection. The ID |
| sent is a completely arbitrary string, and has no standard format. It must |
| be unique from all existing and future connections and may not match the |
| name of any installed protocol support.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><p><strong>identifier</strong> (<em>string</em>) – An arbitrary, unique identifier for the current connection. This |
| identifier must be unique from all existing and future connections, |
| and may not match the name of any installed protocol support (such as |
| “vnc” or “rdp”).</p> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </section> |
| <section id="input-event-instructions"> |
| <h2>Input/Event instructions<a class="headerlink" href="#input-event-instructions" title="Link to this heading">#</a></h2> |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-key-instruction"> |
| <span class="sig-name descname"><span class="pre">key</span></span><a class="headerlink" href="#client-key-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sends the specified key press or release event.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>keysym</strong> (<em>integer</em>) – The <a class="reference external" href="https://www.x.org/releases/X11R7.6/doc/xproto/x11protocol.html#keysym_encoding">X11 keysym</a> of the key being |
| pressed or released.</p></li> |
| <li><p><strong>pressed</strong> (<em>integer</em>) – 0 if the key is not pressed, 1 if the key is pressed.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-mouse-instruction"> |
| <span class="sig-name descname"><span class="pre">mouse</span></span><a class="headerlink" href="#client-mouse-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Sends the specified mouse movement or button press or release event (or |
| combination thereof).</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>x</strong> (<em>integer</em>) – The current X coordinate of the mouse pointer.</p></li> |
| <li><p><strong>y</strong> (<em>integer</em>) – The current Y coordinate of the mouse pointer.</p></li> |
| <li><p><strong>mask</strong> (<em>integer</em>) – The button mask, representing the pressed or released status of each |
| mouse button.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| <dl class="guac instruction"> |
| <dt class="sig sig-object guac" id="client-size-instruction"> |
| <span class="sig-name descname"><span class="pre">size</span></span><a class="headerlink" href="#client-size-instruction" title="Link to this definition">#</a></dt> |
| <dd><p>Specifies that the client’s optimal screen size has changed from what was |
| specified during the handshake, or from previously-sent “size” |
| instructions.</p> |
| <dl class="field-list simple"> |
| <dt class="field-odd">Arguments<span class="colon">:</span></dt> |
| <dd class="field-odd"><ul class="simple"> |
| <li><p><strong>width</strong> (<em>integer</em>) – The new, optimal screen width.</p></li> |
| <li><p><strong>height</strong> (<em>integer</em>) – The new, optimal screen height.</p></li> |
| </ul> |
| </dd> |
| </dl> |
| </dd></dl> |
| |
| </section> |
| <section id="status-codes"> |
| <h2>Status codes<a class="headerlink" href="#status-codes" title="Link to this heading">#</a></h2> |
| <p>Several Guacamole instructions, and various other internals of the Guacamole |
| core, use a common set of numeric status codes. These codes denote success or |
| failure of operations, and can be rendered by user interfaces in a |
| human-readable way.</p> |
| <dl class="simple"> |
| <dt>0 (<code class="docutils literal notranslate"><span class="pre">SUCCESS</span></code>)</dt><dd><p>The operation succeeded. No error.</p> |
| </dd> |
| <dt>256 (<code class="docutils literal notranslate"><span class="pre">UNSUPPORTED</span></code>)</dt><dd><p>The requested operation is unsupported.</p> |
| </dd> |
| <dt>512 (<code class="docutils literal notranslate"><span class="pre">SERVER_ERROR</span></code>)</dt><dd><p>An internal error occurred, and the operation could not be performed.</p> |
| </dd> |
| <dt>513 (<code class="docutils literal notranslate"><span class="pre">SERVER_BUSY</span></code>)</dt><dd><p>The operation could not be performed because the server is busy.</p> |
| </dd> |
| <dt>514 (<code class="docutils literal notranslate"><span class="pre">UPSTREAM_TIMEOUT</span></code>)</dt><dd><p>The upstream server is not responding. In most cases, the upstream server |
| is the remote desktop server.</p> |
| </dd> |
| <dt>515 (<code class="docutils literal notranslate"><span class="pre">UPSTREAM_ERROR</span></code>)</dt><dd><p>The upstream server encountered an error. In most cases, the upstream |
| server is the remote desktop server.</p> |
| </dd> |
| <dt>516 (<code class="docutils literal notranslate"><span class="pre">RESOURCE_NOT_FOUND</span></code>)</dt><dd><p>An associated resource, such as a file or stream, could not be found, and |
| thus the operation failed.</p> |
| </dd> |
| <dt>517 (<code class="docutils literal notranslate"><span class="pre">RESOURCE_CONFLICT</span></code>)</dt><dd><p>A resource is already in use or locked, preventing the requested operation.</p> |
| </dd> |
| <dt>518 (<code class="docutils literal notranslate"><span class="pre">RESOURCE_CLOSED</span></code>)</dt><dd><p>The requested operation cannot continue because the associated resource has |
| been closed.</p> |
| </dd> |
| <dt>519 (<code class="docutils literal notranslate"><span class="pre">UPSTREAM_NOT_FOUND</span></code>)</dt><dd><p>The upstream server does not appear to exist, or cannot be reached over the |
| network. In most cases, the upstream server is the remote desktop server.</p> |
| </dd> |
| <dt>520 (<code class="docutils literal notranslate"><span class="pre">UPSTREAM_UNAVAILABLE</span></code>)</dt><dd><p>The upstream server is refusing to service connections. In most cases, the |
| upstream server is the remote desktop server.</p> |
| </dd> |
| <dt>521 (<code class="docutils literal notranslate"><span class="pre">SESSION_CONFLICT</span></code>)</dt><dd><p>The session within the upstream server has ended because it conflicts with |
| another session. In most cases, the upstream server is the remote desktop |
| server.</p> |
| </dd> |
| <dt>522 (<code class="docutils literal notranslate"><span class="pre">SESSION_TIMEOUT</span></code>)</dt><dd><p>The session within the upstream server has ended because it appeared to be |
| inactive. In most cases, the upstream server is the remote desktop server.</p> |
| </dd> |
| <dt>523 (<code class="docutils literal notranslate"><span class="pre">SESSION_CLOSED</span></code>)</dt><dd><p>The session within the upstream server has been forcibly closed. In most |
| cases, the upstream server is the remote desktop server.</p> |
| </dd> |
| <dt>768 (<code class="docutils literal notranslate"><span class="pre">CLIENT_BAD_REQUEST</span></code>)</dt><dd><p>The parameters of the request are illegal or otherwise invalid.</p> |
| </dd> |
| <dt>769 (<code class="docutils literal notranslate"><span class="pre">CLIENT_UNAUTHORIZED</span></code>)</dt><dd><p>Permission was denied, because the user is not logged in. Note that the |
| user may be logged into Guacamole, but still not logged in with respect to |
| the remote desktop server.</p> |
| </dd> |
| <dt>771 (<code class="docutils literal notranslate"><span class="pre">CLIENT_FORBIDDEN</span></code>)</dt><dd><p>Permission was denied, and logging in will not solve the problem.</p> |
| </dd> |
| <dt>776 (<code class="docutils literal notranslate"><span class="pre">CLIENT_TIMEOUT</span></code>)</dt><dd><p>The client (usually the user of Guacamole or their browser) is taking too |
| long to respond.</p> |
| </dd> |
| <dt>781 (<code class="docutils literal notranslate"><span class="pre">CLIENT_OVERRUN</span></code>)</dt><dd><p>The client has sent more data than the protocol allows.</p> |
| </dd> |
| <dt>783 (<code class="docutils literal notranslate"><span class="pre">CLIENT_BAD_TYPE</span></code>)</dt><dd><p>The client has sent data of an unexpected or illegal type.</p> |
| </dd> |
| <dt>797 (<code class="docutils literal notranslate"><span class="pre">CLIENT_TOO_MANY</span></code>)</dt><dd><p>The client is already using too many resources. Existing resources must be |
| freed before further requests are allowed.</p> |
| </dd> |
| </dl> |
| </section> |
| <section id="message-codes"> |
| <h2>Message Codes<a class="headerlink" href="#message-codes" title="Link to this heading">#</a></h2> |
| <p>The <cite>msg</cite> instruction must have at least one numeric argument that the client |
| then uses to interpret the message and determine what action, if any, it |
| should take based on the message. The following numeric codes are currently |
| implemented for this instruction.</p> |
| <dl class="simple"> |
| <dt>1 (<code class="docutils literal notranslate"><span class="pre">USER_JOINED</span></code>)</dt><dd><p>Notifies the owner of a connection that another user has joined the |
| connection. This message is expected to include two additional |
| arguments: the guacd-generated UUID of the user who is joining the |
| connection, and the arbitrary name of the user provided by the |
| client during the handshake.</p> |
| </dd> |
| <dt>2 (<code class="docutils literal notranslate"><span class="pre">USER_LEFT</span></code>)</dt><dd><p>Notifies the owner of a connection that another user has left the |
| connection. This message is expected to include two additional |
| arguments: the guacd-generated UUID of the user who is leaving the |
| connection, and the arbitrary name of the user provided by the |
| client during the handshake.</p> |
| </dd> |
| </dl> |
| </section> |
| </section> |
| |
| |
| </article> |
| |
| |
| |
| |
| |
| |
| <footer class="prev-next-footer d-print-none"> |
| |
| <div class="prev-next-area"> |
| <a class="left-prev" |
| href="writing-you-own-guacamole-app.html" |
| title="previous page"> |
| <i class="fa-solid fa-angle-left"></i> |
| <div class="prev-next-info"> |
| <p class="prev-next-subtitle">previous</p> |
| <p class="prev-next-title">Writing your own Guacamole application</p> |
| </div> |
| </a> |
| <a class="right-next" |
| href="jdbc-auth-schema.html" |
| title="next page"> |
| <div class="prev-next-info"> |
| <p class="prev-next-subtitle">next</p> |
| <p class="prev-next-title">Database schema reference</p> |
| </div> |
| <i class="fa-solid fa-angle-right"></i> |
| </a> |
| </div> |
| </footer> |
| |
| </div> |
| |
| |
| |
| <div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner"> |
| |
| |
| <div class="sidebar-secondary-item"> |
| <div class="page-toc tocsection onthispage"> |
| <i class="fa-solid fa-list"></i> Contents |
| </div> |
| <nav class="bd-toc-nav page-toc"> |
| <ul class="visible nav section-nav flex-column"> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#drawing-instructions">Drawing instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#streaming-instructions">Streaming instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#object-instructions">Object instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#client-handshake-instructions">Client handshake instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#server-handshake-instructions">Server handshake instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#control-instructions">Control instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#server-control-instructions">Server control instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#input-event-instructions">Input/Event instructions</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#status-codes">Status codes</a></li> |
| <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#message-codes">Message Codes</a></li> |
| </ul> |
| </nav></div> |
| |
| </div></div> |
| |
| |
| </div> |
| <footer class="bd-footer-content"> |
| |
| <div class="bd-footer-content__inner container"> |
| |
| <div class="footer-item"> |
| |
| <p class="component-author"> |
| By The Apache Software Foundation |
| </p> |
| |
| </div> |
| |
| <div class="footer-item"> |
| |
| |
| <p class="copyright"> |
| |
| © Copyright 2025 The Apache Software Foundation. |
| <br/> |
| |
| </p> |
| |
| </div> |
| |
| <div class="footer-item"> |
| |
| </div> |
| |
| <div class="footer-item"> |
| |
| </div> |
| |
| </div> |
| </footer> |
| |
| |
| </main> |
| </div> |
| </div> |
| |
| <!-- Scripts loaded after <body> so the DOM is not blocked --> |
| <script src="_static/scripts/bootstrap.js?digest=dfe6caa3a7d634c4db9b"></script> |
| <script src="_static/scripts/pydata-sphinx-theme.js?digest=dfe6caa3a7d634c4db9b"></script> |
| |
| <footer class="bd-footer"> |
| </footer> |
| </body> |
| </html> |