Skip to content

About

OrangeLion: an orange theme for Apache Guacamole (drop-in CSS extension)

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

1 star

Watchers

0 watching

Forks

🦁

OrangeLion

A drop-in orange theme for Apache Guacamole

License: MIT Guacamole extension PRs welcome Build Release Downloads Website

OrangeLion is a CSS-only theme extension for Apache Guacamole. It repaints the login page, menus, header bars, buttons, connection list, and admin settings screens in the orange colour scheme, using a lion emoji mark rather than any trademarked logo. It ships as a single .jar that you drop into your Guacamole extensions folder, so it layers on top of any install without rebuilding the web app. This project is unofficial and community-maintained.

Contents

Screenshots

Login Connections
Login page: orange background, white card, lion emoji mark Connection list with orange header bars
Admin: Users Admin: Groups
Admin Settings, Users page, fully themed Admin Settings, Groups page, fully themed

Features

  • orange (#FF6200) colour palette applied across the interface.
  • White login card with a lion emoji mark (a standard Unicode glyph, not a trademarked logo).
  • Themed menu, header bars, and buttons.
  • Themed connection list and admin settings pages (Users, Groups, and more).
  • Single-file, drop-in extension: just copy one .jar.
  • No web-app rebuild and no source changes to Guacamole.
  • Configurable through build options or the CSS variables at the top of the stylesheet.
  • Automatic dark mode: follows the OS/browser prefers-color-scheme, with a dark palette tuned to WCAG AA.
  • Optional theme-only (neutral) build that keeps Guacamole's own logo and product name.
  • Optional product-name rename on the login page via a translation override.
  • Custom browser-tab favicon and app icon (an orange lion mark).
  • Accessible by default: WCAG AA contrast across text, borders, and focus indicators, a visible keyboard focus ring, and brand-coloured form controls.

Install

Download the latest guacamole-theme-orangelion.jar from the Releases page β€” each release attaches the CI-built jar plus a SHA-256 checksum and a build-provenance attestation β€” or build it yourself with ./build.sh.

Quick version:

  1. Copy guacamole-theme-orangelion.jar into GUACAMOLE_HOME/extensions/.
  2. Restart Guacamole.
  3. Hard refresh your browser (Ctrl+Shift+R, or Cmd+Shift+R on macOS) to clear cached CSS.

Copy the jar into place:

mkdir -p "$GUACAMOLE_HOME/extensions" && cp guacamole-theme-orangelion.jar "$GUACAMOLE_HOME/extensions/"

Docker note: with the official Guacamole image, mount a folder that contains extensions/guacamole-theme-orangelion.jar and set the GUACAMOLE_HOME environment variable to point at that folder, then restart the container. For Docker Compose:

services:
  guacamole:
    image: guacamole/guacamole
    environment:
      GUACAMOLE_HOME: /etc/guacamole
    volumes:
      - ./guacamole:/etc/guacamole

Place guacamole-theme-orangelion.jar in ./guacamole/extensions/, then restart the container.

After restarting, the Guacamole log should show: Extension "OrangeLion Theme" (orangelion) loaded

Finally, hard refresh your browser (Ctrl+Shift+R, or Cmd+Shift+R on macOS) to clear cached CSS so the new theme loads.

For full step-by-step instructions, customisation options, and uninstall steps, see INSTRUCTIONS.md. Deploying on Docker, Kubernetes, or OpenShift? See docs/DEPLOYMENT.md.

Customize

The quickest way to restyle is with build options β€” no CSS editing. build.sh reads them from environment variables, or from a theme.config file (copy theme.config.example):

  • Recolour everything: BRAND_COLOR=#1565C0 ./build.sh (the darker shades are derived automatically).
  • Custom login mark: WORDMARK="Acme" ./build.sh, or a logo image with LOGO=images/my-logo.svg ./build.sh.
  • Rename the product on the login page/tab: APP_NAME="Acme Remote" LOCALES="en nl de" ./build.sh.
  • Theme-only build with no OrangeLion branding (keeps Guacamole's own logo and name): VARIANT=neutral ./build.sh.

See INSTRUCTIONS.md for the full option reference.

You can also hand-edit the CSS variables in the :root block at the top of orangelion.css:

Variable Default Controls
--brand-orange #FF6200 Bright brand accent: login backdrop, mark, borders
--brand-orange-dark #E15700 Primary-button border edge
--brand-orange-darker #C24E00 Accessible orange: text + white-on fills (4.79:1)
--brand-orange-deep #A84300 Deep hover fill (6.06:1 on white)
--brand-charcoal #333333 Body text
--brand-grey #767676 Secondary text
--brand-border #8C8C8C Input borders (3.36:1 on white)
--brand-white #FFFFFF Cards / text on orange
--brand-page #FFFFFF Page background

Worked example, recolour to blue: run BRAND_COLOR=#1565C0 ./build.sh, or set --brand-orange, --brand-orange-dark, and --brand-orange-darker to your blue shades in the :root block by hand and rebuild.

After any change, rebuild the jar with build.sh (output: dist/guacamole-theme-orangelion.jar), then reinstall and hard refresh.

Compatibility

OrangeLion is CSS-only and declares guacamoleVersion "*". The build workflow smoke-tests that the extension loads on each version below.

Guacamole Extension loads Visual surfaces Notes
1.5.5 βœ… PASS (CI) Expected Smoke-tested in CI on every push/PR.
1.6.0 βœ… PASS (CI) Expected Smoke-tested in CI; this version's jar is the uploaded build artifact.
  • PASS (CI) β€” the build workflow builds the jar, boots guacamole/guacamole:<version>, and asserts Extension "OrangeLion Theme" (orangelion) loaded. This proves the extension is accepted and loads.
  • Expected β€” because the theme is pure CSS layered on the default theme, the login card, lion mark, menu/header bars, connection list, and admin Settings render once it loads. CI does not do pixel inspection, so these cells are expected, not visually verified.

What guacamoleVersion: "*" means

Guacamole reads guacamoleVersion from the manifest as the version the extension was built for and uses it as a load-time gate: if an extension declares a version newer than the running server, Guacamole refuses to load it. The wildcard "*" opts out of that check, so OrangeLion never claims to need a newer server than the one it is dropped into β€” which maximises compatibility. That is safe here because the extension ships only CSS (plus icons and optional translations) and calls no version-specific APIs. Older releases such as 1.4 may work but are untested.

Adding a version to the matrix

  1. Add the tag (for example "1.6.1") to strategy.matrix.guac in .github/workflows/build.yml.
  2. When that CI job is green, add a row here marked PASS (CI).
  3. Only mark a visual surface Verified if it was actually inspected on that version.

Versioning

OrangeLion follows Semantic Versioning. Each release is tagged vMAJOR.MINOR.PATCH and recorded in the CHANGELOG. Pushing a version tag triggers CI to build the jar and attach it β€” with a SHA-256 checksum and a build-provenance attestation β€” to the matching GitHub Release, which is the canonical download. The built jar is not committed to the repository (dist/ is git-ignored); build it locally with ./build.sh when working from source.

FAQ

Is this affiliated with Apache Guacamole? No. OrangeLion is unofficial, community-maintained, and unaffiliated with the Apache Guacamole project.

Does it change functionality or only appearance? Only appearance. It is CSS-only and changes no behaviour.

Does it support dark mode? Yes. A dark variant activates automatically when your OS or browser is set to a dark colour scheme (prefers-color-scheme: dark); no toggle needed.

Will it conflict with LDAP, database, SAML, or other extensions? No. It is a CSS-only extension and does not touch authentication or other extension logic.

Does it work with both the WAR/Tomcat install and the Docker image? Yes, both are supported.

Does it work on older Guacamole such as 1.4? The manifest sets guacamoleVersion to "*", and the theme is tested on 1.5.5 and 1.6.0. Older versions may work but are untested.

Is it safe for production? It only adds CSS, so risk is limited to appearance.

Roadmap

Recent work has landed a configurable brand colour and wordmark, an optional logo image, a theme-only (neutral) build, multi-language product names, an automatic dark-mode variant, a documented WCAG contrast audit, a Guacamole version compatibility matrix, and CI-built tagged Releases. Further improvements are tracked as issues; contributions are welcome.

Contributing

Contributions are welcome. Please read CONTRIBUTING.md, then open an issue or a pull request with your ideas, fixes, or improvements. This project also follows a Code of Conduct.

License

Released under the MIT License. See LICENSE.

About

OrangeLion: an orange theme for Apache Guacamole (drop-in CSS extension)

Topics

Resources

Code of conduct

Contributing

Security policy

Accessibility

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages