Skip to content

Espanso

Cross-platform Text Expander written in Rust.

Visit the Documentation.

  • 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
- trigger: "hello"
replace: "world"
- trigger: "hello"
replace: "line1\nline2"
- trigger: "now"
replace: "It's {{mytime}}"
vars:
- name: mytime
type: date
params:
format: "%H:%M"
- name: output
type: choice
params:
values:
- "Every moment is a fresh beginning."
- "Everything you can imagine is real."
- "Whatever you do, do it well."
- name: getip
type: shell
params:
cmd: "curl ifconfig.me"
shell: cmd
global_vars:
- name: "global1"
type: "shell"
params:
cmd: "echo global var"
- name: "greet"
type: "echo"
params:
echo: "Hey"
- trigger: ":hello"
replace: "{{greet}} Jon"
- trigger: "ther"
replace: "there"
word: true
- trigger: "alh"
replace: "although"
propagate_case: true
word: true
  • If you write alh, the match will be expanded to although.
  • If you write Alh, the match will be expanded to Although.
  • If you write ALH, the match will be expanded to ALTHOUGH.

Insert $|$ where you want the cursor to be positioned. Limited to one cursor hint.

- trigger: ":div"
replace: "<div>$|$</div>"

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."