A Privacy-first, Cross-platform Text Expander written in Rust https://espanso.org
  • Rust 55.6%
  • C++ 41.1%
  • Objective-C++ 1.3%
  • C 1.2%
  • PowerShell 0.2%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Vincent 0cadaeaddf
fix(render): coerce numeric and boolean echo params (#2768)
A YAML global_var like `echo: 12345` loads as a number, but the echo extension only matched strings, so it failed with "missing 'echo' parameter" even though the parameter was there. Coerce numbers and booleans to their string form and widen the JSON schema to match, so editors stop flagging valid config. Null, arrays and objects still error, since none has a sensible single-string form. Fixes #2722.

Co-authored-by: VXNCXNX <VXNCXNX@users.noreply.github.com>
2026-09-16 20:05:23 -03:00
.claude/skills/release-notes add skill release-notes (#2746) 2026-07-21 13:49:09 -03:00
.devcontainer 🎨 format files with the new configurations (#2323) 2025-04-25 22:51:24 +00:00
.github add skill release-notes (#2746) 2026-07-21 13:49:09 -03:00
.vscode protect dev branch from commits in vs code (#2733) 2026-07-18 16:50:46 -03:00
docs setup the mac signing keychain again (#2742) 2026-07-21 12:00:18 -03:00
espanso fix 2 clippy lints (#2802) 2026-09-13 09:54:14 -03:00
espanso-clipboard chore: fix rustfmt formatting 2026-05-24 16:39:33 -04:00
espanso-config fix(config): parse unquoted special-char values in YAML flow collections (#2761) 2026-09-01 14:55:37 +00:00
espanso-detect fix 2 clippy lints (#2802) 2026-09-13 09:54:14 -03:00
espanso-engine chore: fix rustfmt formatting 2026-05-24 02:49:03 -04:00
espanso-info Add WaylandAppInfoProvider for wlroots-based compositors (sway, Hyprland, labwc, wayfire, etc.) (#2731) 2026-07-18 20:19:26 -03:00
espanso-inject Comment out unused log::error imports to fix --deny warnings CI failures 2026-05-04 12:07:45 -04:00
espanso-ipc Clippy lints (#2410) 2025-08-01 20:40:40 +00:00
espanso-kvs Clippy lints (#2410) 2025-08-01 20:40:40 +00:00
espanso-mac-utils Add @autoreleasepool blocks to all remaining macOS Objective-C code 2026-03-04 22:32:25 -08:00
espanso-match Clippy lints (#2410) 2025-08-01 20:40:40 +00:00
espanso-modulo fix(search/macos): don't consume Enter during IME composition (#2690) 2026-07-19 08:56:19 -03:00
espanso-package fix clippy lints (#2734) 2026-07-18 18:38:04 -03:00
espanso-render fix(render): coerce numeric and boolean echo params (#2768) 2026-09-16 20:05:23 -03:00
espanso-ui Updated x11/xclip/mod.rs in espanso-clipboard to correct map(<f>) for an unwrap alternative. 2026-05-24 04:11:14 -04:00
images Docs (README): Polished content and added theme-aware logo 2025-12-11 23:41:35 -05:00
nix linux: install desktop file and icon + improvements (#2757) 2026-08-13 19:05:29 -03:00
schemas fix(render): coerce numeric and boolean echo params (#2768) 2026-09-16 20:05:23 -03:00
scripts linux: install desktop file and icon + improvements (#2757) 2026-08-13 19:05:29 -03:00
snap/hooks re-add snap support (#2434) 2025-11-18 23:24:42 +00:00
.clang-format Add additional formatters (#2316) 2025-04-25 17:03:54 +00:00
.dockerignore fix(ci): fix bad windows path and first steps in linux ci 2021-10-03 17:27:14 +02:00
.editorconfig Add additional formatters (#2316) 2025-04-25 17:03:54 +00:00
.envrc nix: Update nixpkgs; fix evaluation warnings (#2717) 2026-07-18 20:51:50 -03:00
.gitattributes feat: add devcontainer (#1861) 2024-04-21 09:59:33 -03:00
.gitignore feat: add usage statistics tracking (#2568) 2025-11-19 17:43:30 +00:00
.pre-commit-config.yaml 🚨 setup lint to prevent TODOs in code (#2427) 2025-08-06 15:05:47 +00:00
biome.json 🎨 update biomejs formatting and format the code (#2524) 2025-10-10 16:15:36 +00:00
Cargo.lock release 2.4.1 (#2788) 2026-09-02 14:03:24 -03:00
Cargo.toml Replace deprecated serde_yaml with serde_norway 2025-10-12 15:28:25 +02:00
Compilation.md 🩹 fix route of the Compilation doc (#2200) 2025-01-20 07:37:26 -03:00
default.nix ✨ add nix flake (#2311) 2025-04-24 20:24:32 +00:00
flake.lock ⬆️ update flake (#2803) 2026-09-13 11:14:09 -03:00
flake.nix nix: Update nixpkgs; fix evaluation warnings (#2717) 2026-07-18 20:51:50 -03:00
LICENSE fix: missing license information. Fix #1114 2022-06-06 20:23:07 +02:00
README.md Add inspect.software health badge (#2780) 2026-08-24 09:40:02 -03:00
rust-toolchain.toml ✨ use toml instead of plaintext (#2244) 2025-03-04 22:29:05 +00:00
rustfmt.toml Add additional formatters (#2316) 2025-04-25 17:03:54 +00:00
SECURITY.md Update SECURITY.md to clarify key logging concerns 2026-06-18 23:24:00 +01:00
snapcraft.yaml re-add snap support (#2434) 2025-11-18 23:24:42 +00:00
tarpaulin.toml 🧪 add coverage (#2287) 2025-04-07 20:19:07 +00:00

Espanso Logo Espanso Logo

A cross-platform Text Expander written in Rust

GitHub release (latest by date) Maintenance Language inspect.software License

Platforms

Ask DeepWiki

Example: 2019 Example: 2025
example example2025

What is a Text Expander?

A text expander is a program that detects when you type a specific keyword and replaces it with something else. This is useful in many ways:

  • Save a lot of typing, expanding common sentences
  • Create system-wide code snippets
  • Execute custom scripts
  • Use emojis like a pro
  • System-wide 'autocorrect' specific to you

Key Features

  • Cross-platform (Windows, macOS, Linux)
  • Privacy-first (100% local, no tracking)
  • Works with almost any program
  • Emoji support 😄
  • Image support
  • Includes a powerful Search Bar 🔎
  • Date expansion support
  • Custom scripts support
  • Shell commands support
  • App-specific configurations
  • Support Forms
  • Expandable with packages
  • Built-in package manager for espanso hub
  • File based configuration
  • Support Regex triggers
  • Experimental Wayland support
  • Written in Rust (Fast, Reliable)

Community & Support

Quick Start Examples

You can create additional files to organize your matches any way you want.
Make sure to adhere to proper YAML spacing.

matches:
  - trigger: ":hello"
    replace: "Hi There!"
  - triggers: [":test1", ":test2"]
    replace: "These both expand to the same thing"

Team Members and Contributors

Team

Federico Terzi (Creator of espanso)
Rest of team in Alphabetical Order
Archigos (Maintainer)
Auca (Lead Maintainer)
n8henrie
smeech

You can also see the up to date list of Team Members here

Contributors

So many people have helped the project along the way. Thank you all!

Image

Sponsors

We want to thank SignPath.io for code signing the Windows binaries ❤️

Donations

espanso is a free, open-source software project created by Federico Terzi and now maintained by a small team.
If you liked the project and would like to support further development, please consider making a small donation, it really helps :)

Current Options

PayPal Coming Soon
Donate with PayPal

Remarks

  • Thanks to libxdo and xclip, used to implement the Linux port.
  • Thanks to libxkbcommon and wl-clipboard, used to implement the Wayland port.
  • Thanks to wxWidgets for providing a powerful cross-platform GUI library.
  • Free code signing provided by SignPath.io, certificate by SignPath Foundation.

License

espanso was created by Federico Terzi and is licensed under the GPL-3.0 license.