The sections below are synced from the Sqyre application repository so install and build steps stay in one place.
Desktop macro builder — automate mouse, keyboard, and screen-aware steps with a visual tree editor.
Sqyre lets you build and run macros without writing code. Each macro is a tree of actions: loops and branches for flow control, detection steps when the screen matters, and leaf actions for concrete input. Macros, images, masks, and data tables live under ~/.sqyre/ (config in db.yaml).
Platforms: Linux and Windows (see Developing).
| Category | Actions |
|---|---|
| Mouse & keyboard | Move, click, key, type |
| Detection | Image search (OpenCV), OCR (Tesseract), find pixel |
| Variables | Set, calculate, for each row, save to file or clipboard |
| Loop flow | Loop, break, continue |
| Miscellaneous | Wait, pause, focus window, run macro, if (conditional) |
Also in the app: data editor for reusable images, masks, and tabular sources; macro hotkeys (on press or release); global delay per macro; runtime variable panel while a macro runs.
Stack: Fyne · robotgo · gocv / OpenCV · gosseract / Tesseract
make linux or make windows (see
Developing)../bin/sqyre (Linux) or the Windows binary from bin/windows-amd64/.Branching actions (image search, OCR, find pixel, if) run child steps only when their condition matches. Loop / for each row repeat children; break and continue control those loops.
Assets under images/sqyre/ are generated from UI tests (./scripts/generate-docs-media.sh). CI checks they stay in sync.
| Main window | ![]() |
| Add action picker | ![]() |
| Data editor | ![]() |
| Building a macro | ![]() |
| Category | |
|---|---|
| Mouse & keyboard | Move · Click · Key · Type |
| Detection | Image search · OCR · Find pixel |
| Variables | Set · Calculate · For each row · Save to |
| Miscellaneous | Wait · Focus window · Run macro · Loop |
Recommended: open the repo in the dev container — dependencies and OpenCV match what the app expects.
| Goal | Command |
|---|---|
| Linux dev binary | make linux → ./bin/sqyre |
| Windows exe | make windows → bin/windows-amd64/ |
| AppImage | make appimage |
| Tesseract data | make tessdata |
Override Go build tags with BUILD_TAGS=... (default: gocv_specific_modules).
More detail — manual host setup, tests, profiling, packaging — is in docs/DEVELOPING.md and docs/README.md.
Sqyre is licensed under the GNU General Public License v3.0 — see LICENSE.
If Sqyre saves you time, consider supporting development:
85rMS89cS9M8w8cD7ByC1EVXqenx9VBooakM46MLFptN8aRr3uojqfFPUNapWjTk3DPKZy5hadwN6UoGYrt5c7qkTqVWKdUOpen the repository in the dev container (.devcontainer/). It provides Go, OpenCV (cached under /opt/opencv/linux), Tesseract, Flatpak tooling, and aligned library versions. GOFLAGS defaults to -tags=gocv_specific_modules.
From the repo root:
make linux # ./bin/sqyre
make windows # bin/windows-amd64/sqyre.exe (fyne-cross in Docker)
make appimage # bin/*.AppImage
make tessdata # download eng.traineddata for OCRRun make help for matprofile variants (windows-matprofile, appimage-matprofile).
| Target | Output |
|---|---|
linux | bin/sqyre |
windows | bin/windows-amd64/sqyre.exe |
appimage | bin/Sqyre-*.AppImage |
tessdata | Tesseract trained data via scripts/download-tessdata.sh |
*-matprofile | Same as above with matprofile build tag |
Set BUILD_TAGS to override tags (default: gocv_specific_modules).
Sqyre uses CGO for OpenCV (gocv) and Tesseract (gosseract). OpenCV ≥ 4.6 is required.
| Resource | Purpose |
|---|---|
| .devcontainer/Dockerfile | Reference Linux dependency versions |
| scripts/linux/build-opencv-linux.sh | Build OpenCV on Linux |
| scripts/windows/build-opencv-windows.sh | Build OpenCV for Windows cross-compile |
| scripts/android/README-opencv.md | OpenCV for Android ABIs |
These paths are maintained less actively than the dev container. Prefer the container when possible.
sudo apt install -y \
build-essential pkg-config cmake golang-go \
tesseract-ocr libtesseract-dev libleptonica-dev \
libgl1-mesa-dev libglvnd-dev libglfw3-dev \
libxkbcommon-dev libxkbcommon-x11-dev \
libx11-dev libx11-xcb-dev libxext-dev libxtst-dev \
libxcursor-dev libxrandr-dev libxinerama-dev \
libxxf86vm-dev libxt-dev \
libjpeg-dev libpng-dev libtiff-dev libwebp-dev libopenjp2-7-devBuild or install OpenCV to match gocv (see Dockerfile and build-opencv-linux.sh), then:
go build -tags gocv_specific_modules -o sqyre ./cmd/sqyreIn the
MSYS2 mingw64 shell, install toolchain, OpenCV, Tesseract, and Leptonica from MSYS2 packages (e.g. mingw-w64-x86_64-opencv, mingw-w64-x86_64-tesseract-ocr).
C:\msys64\mingw64\share\tessdata.TESSDATA_PREFIX=C:/msys64/mingw64/share/tessdata.go build -o sqyre.exe ./cmd/sqyreOr cross-compile from Linux with make windows.
Headless (no display; uses -tags=nohook so the keyboard hook is not linked):
./scripts/test.sh
./scripts/test.sh -v ./internal/services/ -run TestExecuteUI / display (virtual framebuffer via xvfb-run):
./scripts/test-ui.sh
./scripts/test-ui.sh -run TestGUIEscapePlain go test without these wrappers can segfault when DISPLAY is unset because of the native hook.
Regenerate assets in images/sqyre/:
./scripts/generate-docs-media.shRequires xvfb-run; ffmpeg builds the demo GIF from captured frames.
Verify committed PNGs match the current UI:
go test -v ./ui/ -run 'TestDocsScreenshots|TestDemoWorkflowFrames'
# or: ./scripts/test-ui.sh with the same -run filterSet SQYRE_UPDATE_SCREENSHOTS=1 when intentionally updating golden images (the generate script sets this).
Mat profilingBuild with the matprofile tag to track gocv.Mat allocations and detect leaks.
| Platform | Command |
|---|---|
| Linux | go build -tags "gocv_specific_modules,matprofile" -o sqyre ./cmd/sqyre |
| Windows (from dev container) | make windows-matprofile |
~/.sqyre/sqyre.log (Windows: %USERPROFILE%\.sqyre\sqyre.log)127.0.0.1:6060 (or next free port 6061–6065); open gocv.io/x/gocv.Mat in the browser for stack tracesSQYRE_PPROF=0 disables pprof; SQYRE_PPROF=127.0.0.1:9090 sets a fixed portSee scripts/linux/packaging/PACKAGING.md for Flatpak and AppImage builds.