ubunatic.com

Repeatable desktop and terminal demos

wayreel record GUI and terminal demos in an isolated Wayland session.

Describe keystrokes, commands and pauses in a `.reel` script. Wayreel starts a nested Wayland desktop, runs the demo, and captures a repeatable video or screenshot without taking over the desktop you are using.

curl -fsSL https://codeberg.org/ubunatic/wayreel/raw/branch/main/scripts/install.sh | sh

Key facts

12-week commit activity

2026-10-26
View 12-week data table
Week startingCommits
2026-08-0317
2026-08-100
2026-08-173
2026-08-245
2026-08-312
2026-09-071
2026-09-140
2026-09-210
2026-09-280
2026-10-0513
2026-10-120
2026-10-191

Key Features

  • A `.reel` script lists keystrokes, apps and presentation; Wayreel runs and records each step.
  • Uses nested Sway, a separate Wayland desktop, so recording leaves your desktop free.
  • Checks required commands before sending input; missing apps stop playback early.
  • Includes script linting, syntax checks and editor support for the `.reel` format.

Verified Engineering Milestones

  • First release and consolidated script parser (#04, cec5821, e194035)
  • Required-command checks before playback (#31, 023d821, aa70d53)
  • Terminal-only recording experiment (#37, c6075c5)

Stack

Go 1.26, Cobra, YAML, Linux/Wayland, nested Sway, Xvfb/Xephyr, PTYs, wtype, wf-recorder, grim, FFmpeg

Explore the recorder in your browser

Switch workspaces and run the TUI or GUI recording simulation. Open demo in a new tab ↗
Select pipeline stages to inspect the animated capture flow and its details. Open demo in a new tab ↗
Edit a Reel script, inspect compiled JSON, and load it into the simulator. Open demo in a new tab ↗

Repeat a desktop demo from a script

Recording a GUI or terminal workflow by hand is difficult to repeat and interrupts other desktop work. Wayreel describes the steps in a .reel script and runs them in a separate nested Wayland session. A run can be captured and replayed for documentation, review or a user-configured CI job.

From a `.reel` file to a captured demo

Script
Declarative keystrokes, commands, waits and recording settings.
Desktop session
A nested Sway Wayland compositor isolates the run from the host desktop.
Input and capture
Wayland tools send input and capture the resulting desktop or terminal output.
Output
Recorded demos can be encoded as video or saved as screenshots.

Terminal, application and nested-session runs

Dark terminal playback from demo-tui-dark.reel.
Light terminal playback from demo-tui-light.reel.
A GUI application run from demo-gui.reel.
A nested recording run from demo-nested-wayreel.reel.
A short preview of scripted terminal recording.
A short preview of scripted graphical application recording.

Script the run and review its output

Repeatable input

Encode keystrokes, commands and pauses in versioned .reel scripts.

Isolated compositor

Run the recording in a nested Sway session while leaving the host desktop available.

Terminal and GUI apps

Record terminal workflows and graphical applications in the same pipeline.

Video and screenshots

Capture output for project documentation, reviews and configured CI jobs.

Preflight checks

Check required commands before a run starts so missing apps fail early.

Encoding options

Use FFmpeg to encode captured runs and configure output quality and speed.

Install and record a demo

Install the current release, check the required desktop and capture tools, then run one of the project examples or write a .reel script for your own workflow.

Platform
Linux with Wayland; Wayreel uses a nested Sway session for isolated runs.
Capture tools
Install the commands required by the script, including its terminal or GUI app and recording tools.
wayreel record path/to/demo.reel

A scripted demo engine for Wayland

Read the scripted demo-engine story for the design behind repeatable Wayland recordings.

Project details

Stack
Go 1.26, Cobra, YAML, Linux/Wayland, nested Sway, Xvfb/Xephyr, PTYs, wtype, wf-recorder, grim, FFmpeg
Milestones
First release and consolidated script parser (#04, cec5821, e194035) · Required-command checks before playback (#31, 023d821, aa70d53) · Terminal-only recording experiment (#37, c6075c5)

Layer composition

Terminal
PTYs, terminal recording
Desktop
Linux, Wayland, Sway
Inference / AI
—
Containers / VM
—
Web
—

wayreel: the story behind the project

Starting state: A mature Go project with a reel scripting language, a growing issue tracker, and an existing static product website.

Read the engineering story