Watch
1
0
Fork
You've already forked espanso
0
mirror of https://github.com/espanso/espanso.git synced 2026-11-03 02:45:57 +00:00
A Privacy-first, Cross-platform Text Expander written in Rust
  • 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
Romain Dartigues 80d9e353e3
fix(ipc): scope Windows named pipes to the user's runtime dir (#2840)
On Windows the IPC pipes were named after the id alone (`\\.\pipe\espansodaemonv2`, `\\.\pipe\espansoworkerv2`), and named pipes are machine-wide.
On a multi-user host (Remote Desktop Session Host, Azure Virtual Desktop multi-session) the first user to start espanso owns both pipes, and every other user's daemon and worker panic with `unable to initialize ipc server: Access is denied. (os error 5)`.

The Unix implementation already scopes its sockets by placing them in the runtime dir; the Windows one received the same `parent_dir` and discarded it.
The pipe name now carries a stable FNV-1a hash of the lower-cased runtime dir, so each user gets their own pair of pipes.

Co-authored-by: Romain Dartigues <romain.dartigues@dealerbox-tech.com>
2026-10-24 22:27:59 +00: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 fix(ipc): scope Windows named pipes to the user's runtime dir (#2840) 2026-10-24 22:27:59 +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 (#2811) 2026-10-23 20:18:39 +00: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.