Cross-platform Text Expander written in Rust.
Visit the Documentation.
Features
- Works on Windows, macOS and Linux
- Works with almost any program
- Works with Emojis 😄
- Works with Images
- 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
Static Matches
Single-line Expansions
- trigger: "hello"
replace: "world"
Multi-line Expansions
- trigger: "hello"
replace: "line1\nline2"
Dynamic Matches
Using Variables
- trigger: "now"
replace: "It's {{mytime}}"
vars:
- name: mytime
type: date
params:
format: "%H:%M"
Preconfigured Choices
- name: output
type: choice
params:
values:
- "Every moment is a fresh beginning."
- "Everything you can imagine is real."
- "Whatever you do, do it well."
Run CLI Command
- name: getip
type: shell
params:
cmd: "curl ifconfig.me"
shell: cmd
Global Variables
Declarations
global_vars:
- name: "global1"
type: "shell"
params:
cmd: "echo global var"
- name: "greet"
type: "echo"
params:
echo: "Hey"
Usage
- trigger: ":hello"
replace: "{{greet}} Jon"
Word Triggers
Autocorrect Typos
- trigger: "ther"
replace: "there"
word: true
Case Propagation
- trigger: "alh"
replace: "although"
propagate_case: true
word: true
- If you write
alh
, the match will be expanded toalthough
. - If you write
Alh
, the match will be expanded toAlthough
. - If you write
ALH
, the match will be expanded toALTHOUGH
.
Cursor Hints
Insert $|$
where you want the cursor to be positioned. Limited to one cursor hint.
- trigger: ":div"
replace: "<div>$|$</div>"
Match Disambiguation
Takes all matches with the same trigger and displays a dialog to let you choose.
- trigger: ":quote"
replace: "Every moment is a fresh beginning."
- trigger: ":quote"
replace: "Everything you can imagine is real."
- trigger: ":quote"
replace: "Whatever you do, do it well."