TypeText is a small native Rust desktop app for storing reusable text snippets and typing them into the active app. Keep snippets in simple JSON files, open the chooser with a global hotkey, search or filter by group, then insert one snippet or a queued chain of snippets.
The app is portable by design: no installer is required for portable builds, and runtime data uses simple JSON files.
- Global hotkey to show TypeText while it runs in the background
- Searchable snippet chooser with group filtering
- Snippet chaining for inserting multiple text chunks together
- Dynamic local date and time tokens in snippet text
- Configurable queued-snippet behavior: add duplicates or remove queued entries
- Configurable paragraph separators between queued snippets
- Built-in group and snippet editor
- DropText INI/CSV import and TypeText JSON export
- Simple JSON snippet/settings storage
- Configurable delay before typing and close-after-insert behavior
- Windows-only character and separator typing delays
- Open-on-startup setting for macOS and Windows
- Light, dark, and system theme support with configurable accent color
- Staged settings changes with a visible Save Settings reminder
- Daily GitHub release update checks with platform-specific download links
- Bundled JetBrains Mono UI font for consistent rendering
- Low-footprint native Rust/egui desktop app
- Rust workspace with a shared
typetext-corecrate egui/eframedesktop UI inapps/typetext-desktop- Windows support for:
- global hotkey registration
- target-window restore
- text insertion with
SendInput - configurable character and separator input delays
- Startup folder integration
- macOS support for:
- Carbon global hotkey registration
- target-application restore
- text insertion through
osascript/ System Events - LaunchAgent startup integration
- JSON snippet/settings storage
crates/
typetext-core/ shared Rust library
apps/
typetext-desktop/ desktop app
docs/
macos-notes.md
examples/
snippets.json
settings.json
quickstart.txt user-facing setup and usage handout
Windows portable builds store runtime data beside the executable:
TypeText.exe
data/
snippets.json
settings.json
Installable builds use the normal per-user app data location:
Windows: %LOCALAPPDATA%\TypeText\data
macOS: ~/Library/Application Support/TypeText/data
TypeText expands supported tokens immediately before typing. Dates and times use the computer's local time zone, and a queued snippet chain shares one timestamp. Stored snippet text is not modified. In the snippet editor, use the Tokens menu next to the title field to insert a token at the body cursor.
| Token | Output format | Example |
|---|---|---|
{time.today} |
Current time; legacy DropText alias | 17:42 |
{time.now} |
Current time | 17:42 |
{date.today} |
Today's date | 20/06/2026 |
{date.tomorrow} |
Tomorrow's date | 21/06/2026 |
{date.yesterday} |
Yesterday's date | 19/06/2026 |
{datetime.now} |
Current date and time | 20/06/2026 17:42 |
{weekday.today} |
Current weekday | Saturday |
Unknown tokens are typed unchanged. To type a supported token literally, double
the braces: {{date.today}} types {date.today}.
Portable and installable releases are built natively per operating system by
the GitHub Actions workflow in .github/workflows/release-builds.yml.
Release artifacts:
TypeText-macOS.zip
TypeText-macOS.dmg
TypeText-Windows-x64.zip
TypeText-Windows-x64-Offline-Portable.zip
TypeText-Windows-x64-Setup.exe
To publish a GitHub Release, push a version tag in vX.X.X format:
git tag v0.2.1
git push origin v0.2.1The workflow passes the tag through as TYPETEXT_VERSION, builds the macOS and
Windows portable apps and installable packages, then attaches them to the
matching GitHub Release. Scripts/generate-release-notes.sh
generates the release page changelog from commits since the previous vX.X.X
tag, plus a full diff link. That same version is compiled into the app UI and
written into portable build metadata. GitHub displays a SHA-256 digest for each
release asset, so separate .sha256 files are not attached.
GitHub release artifacts also include build provenance attestations. Verify a downloaded artifact with the GitHub CLI:
gh attestation verify TypeText-Windows-x64.zip --repo fruitmac/TypeTextAttestations prove the artifact was produced by this repository's GitHub Actions workflow.
For local builds that are not run from an exact Git tag, update VERSION first.
You can also override any build explicitly:
TYPETEXT_VERSION=v0.2.1 Scripts/build-macos-app.shTypeText checks that release feed at most once per day when update checks are enabled. When a newer platform-specific package is available, the app offers a download link and prefers installable packages over portable archives; it does not replace the running app automatically.
For a user-facing setup guide to include with releases, see quickstart.txt.
Check the shared core and desktop app:
cargo test -p typetext-core
cargo check -p typetext-desktopRun the desktop app during development:
cargo run -p typetext-desktopBuild the portable app bundle and zip:
Scripts/build-macos-app.sh
open dist/TypeText.appBuild the installable DMG:
Scripts/build-macos-dmg.shOutputs:
dist/TypeText.app
dist/TypeText-macOS.zip
dist/TypeText-macOS.dmg
Build the portable app:
Scripts\build-windows-portable.ps1The Windows build targets 64-bit Windows:
x86_64-pc-windows-msvc
If Rust says the target is missing, install it once:
rustup target add x86_64-pc-windows-msvcBuild the installer:
Scripts\build-windows-installer.ps1The installer script requires Inno Setup 6. On GitHub Actions this is installed with Chocolatey before the script runs.
Outputs:
dist\TypeText-Windows\TypeText.exe
dist\TypeText-Windows-x64.zip
dist\TypeText-Windows-x64-Offline-Portable.zip
dist\TypeText-Windows-x64-Setup.exe
dist\TypeText-Windows-x64-Setup.exe.sha256
The offline portable build does not check for updates or offer startup registration. Those Windows integrations are disabled at compile time.
macOS requires Accessibility permission for synthetic keyboard input.
When running from development, grant permission to the terminal app used to launch TypeText. When running a packaged app, grant permission to TypeText itself.
System Settings > Privacy & Security > Accessibility
{
"hotkey": "Ctrl+Alt+Space",
"typingDelayMs": 80,
"windowsCharacterDelayMs": 22,
"windowsSeparatorDelayMs": 35,
"closeAfterInsert": true,
"startSnippetsOnNewLine": false,
"emptyLinesBetweenSnippets": 0,
"openOnStartup": false,
"theme": "system",
"accentColor": "#0A7E76",
"queuedSnippetClickAction": "addAgain",
"checkForUpdates": true,
"lastUpdateCheckUnix": null
}Settings changes are staged in the UI. When the Settings header shows unsaved changes, click Save Settings to persist and apply them.
TypeText bundles JetBrains Mono Regular for a consistent UI font across platforms.
The font is licensed under the SIL Open Font License 1.1; see
apps/typetext-desktop/assets/fonts/JetBrainsMono-OFL.txt.