Desktop add-on

A desktop in any workspace.

Run this in a workspace's terminal. It adds a full desktop to the workspace you already have, reached through one of its subdomains, with RDP to the same session.

$ curl -fsSL https://get.devgrail.com/addons/desktop/install.sh | bash

Three steps

1. Run the installer in the workspace
Open the workspace's terminal and run the command above as the workspace user, not with sudo. It checks the workspace, downloads the desktop app and verifies it against the release signature, then installs XFCE, Firefox, the desktop apps, sound and RDP with apt. The first install takes a couple of minutes and about 1.2 GB of disk.
2. Add a subdomain for port 26080
In DevGrail, open the workspace's Subdomains and add one pointing at port 26080. It is an ordinary app subdomain: nothing in the dashboard is specific to the desktop.
3. Open it and sign in
Open the subdomain in your browser and sign in with the workspace's SSH password, the one you set in DevGrail. Changing that password signs everyone out of the desktop.

It needs a workspace from DevGrail's default image (Ubuntu, amd64 or arm64) with an SSH password set.

The same guide is in your DevGrail dashboard under Add-ons, with the command for your server and links to your workspaces.

The desktop in your browser
XFCE with Firefox, a text editor, Meld and the other everyday apps, sound and microphone, clipboard both ways, files and images dragged or pasted in from your computer, notifications that reach your computer, apps that reopen where you left them, scaling and settings that follow your computer, and an on-screen keyboard with Esc, Tab, Ctrl, Alt and the arrows on a phone or tablet. Install it as an app from the browser for a window of its own.
Turn it off when you are done
The drawer's Desktop section turns the desktop off to free its memory; the subdomain keeps showing the sign-in page, and Turn on brings it back. It stays off across workspace restarts until you turn it on.
Signed like DevGrail itself
The installer checks everything it downloads against the DevGrail release signature, with the same keys as the server's installer, and refuses anything the signed release does not name.

RDP to the same session

The RDP server listens only inside the workspace. Tunnel it over the workspace's SSH, then point your RDP client at localhost:23389 and sign in as the workspace user. You get the session the browser shows, not a second one.

$ ssh -L 23389:localhost:23389 -p <ssh-port> dev@<host>

Options

Flags go after -s --. The ports avoid the usual defaults, so they rarely need moving; when one is taken, the installer names the flag that moves it. Your choices are remembered for the next run.

$ curl -fsSL https://get.devgrail.com/addons/desktop/install.sh | bash -s -- --no-rdp
--port=N
The port the subdomain points at (default 26080).
--vnc-port=N
The desktop's internal VNC port (default 25901).
--rdp-port=N
The RDP port, reached through an SSH tunnel (default 23389).
--display=N
The X display number (default 8).
--no-firefox
Skip Firefox and Mozilla's apt repository.
--no-rdp
Skip the RDP server.
--cjk-fonts
Also install Chinese, Japanese and Korean fonts (about 90 MB).
--version=X
Install the add-on from DevGrail release X instead of the latest.

Upgrading

Run the same command again. It upgrades the add-on and its packages in place and keeps your desktop settings. The desktop restarts, so save your work first.

The packages live in the workspace's container. After the workspace is created again (re-added, or restored from an older snapshot), run the installer once more; a plain restart keeps everything.

Removing it

In the workspace's terminal. Add --purge-packages to also remove the packages the installer added.

$ devgrail-desktop uninstall

Read the installer first: /addons/desktop/install.sh