TypeMonky is a local-first touch typing app for Linux (GTK4/libadwaita), optimized for Wayland and tiling window managers.
It includes two workflows:
Test: timed sessions with instant metricsPractice: adaptive training based on your mistakes
- Wayland-friendly GTK4 desktop app
- EN/RU typing support
- Per-user local profiles
- Session metrics: WPM, accuracy, consistency
- Error analytics and adaptive practice blocks
- Theme and typing font selection
- Offline storage (SQLite)
Requirements:
flatpakflatpak-builder
Build local Flatpak repo:
./scripts/typemonk package-prereq-check
./scripts/typemonk flatpak-build-localInstall from local repo:
flatpak --user remote-add --if-not-exists typemonky-local target/flatpak-repo
flatpak --user install -y typemonky-local io.typemonky.typemonkyRun:
flatpak run io.typemonky.typemonkyAfter the package is published to AUR:
paru -S typemonky-binFor local PKGBUILD testing, use packaging/aur-bin:
cd packaging/aur-bin
makepkg -siFrom packaging/aur:
makepkg -siRun:
typemonky./scripts/typemonk bootstrap
./scripts/typemonk build
./scripts/typemonk run-uiWayland run:
./scripts/typemonk run-ui-wayland./scripts/typemonk test
./scripts/typemonk perf-smoke-ui
./scripts/typemonk perf-smoke-ui-wayland
./scripts/typemonk release-checkGitHub Actions runs the same gates on main, dev, and pull requests.
Release pipeline is triggered by pushing a version tag:
git tag v0.1.0
git push github v0.1.0Release workflow publishes a GitHub Release with:
- Linux archive:
typemonky-vX.Y.Z-linux-x86_64.tar.gz - Flatpak bundle:
typemonky-vX.Y.Z.flatpak - AUR metadata bundle:
typemonky-vX.Y.Z-aur.tar.gz(PKGBUILD+.SRCINFO) SHA256SUMS.txtfor all artifacts
Workflow: .github/workflows/publish-aur.yml
- Triggered automatically when a GitHub release is published.
- Also supports manual dry-run with
workflow_dispatch. - Renders
typemonky-binPKGBUILD from release tag + checksum. - Regenerates
.SRCINFOin an Arch container. - Pushes to AUR repo when not in dry-run mode.
Required repository configuration:
- Secret:
AUR_SSH_PRIVATE_KEY(private key foraur@aur.archlinux.org) - Variable:
AUR_PACKAGE_NAME(default:typemonky-bin) - Optional variables:
AUR_GIT_EMAILAUR_GIT_NAME
# Show current version
./scripts/typemonk version-show
# Bump only (updates Cargo + metainfo + AUR basever)
./scripts/typemonk version-bump patch
./scripts/typemonk version-bump prerelease alpha
# Full release cut (runs gates, bumps, commits, tags, release notes)
./scripts/typemonk release-cut patch
# Publish GitLab release for an existing tag
./scripts/typemonk release-publish vX.Y.Z- All typing data is stored locally on your machine.
- No cloud sync or telemetry service is required.
Default DB path:
$XDG_DATA_HOME/typemonky/typemonky.db- fallback:
~/.local/share/typemonky/typemonky.db
Bundled typing fonts and license links are listed in:
- Open an issue or merge request.
- Run
./scripts/typemonk release-checkbefore submitting. - If GitLab CI minutes are exhausted, run a minimal fallback pipeline by setting
CI_FALLBACK_MINIMAL=1when starting/retrying the pipeline (runscheck_workspaceonly). - Add user-visible changes to CHANGELOG.md under
Unreleased.
- See SECURITY.md for responsible disclosure instructions.