TL;DR — Quick Summary

Espanso expands text snippets system-wide. Type abbreviations, get full text — emails, code templates, dates, shell commands. Cross-platform, open-source, written in Rust.

Espanso expands text everywhere. Type triggers, get full text — system-wide snippets.

Installation

# macOS
brew install espanso

# Start daemon
espanso start

Configuration

# ~/.config/espanso/match/base.yml
matches:
  - trigger: ":email"
    replace: "me@example.com"

  - trigger: ":sig"
    replace: "Best regards,\nJohn Doe"

  - trigger: ":date"
    replace: "{{date}}"
    vars:
      - name: date
        type: date
        params:
          format: "%Y-%m-%d"

  - trigger: ":ip"
    replace: "{{output}}"
    vars:
      - name: output
        type: shell
        params:
          cmd: "curl -s ifconfig.me"

Commands

espanso start      # start daemon
espanso restart    # reload config
espanso stop       # stop daemon
espanso status     # check status
espanso edit       # edit config

Summary

  • Espanso expands text snippets system-wide
  • Works in any application (browser, editor, terminal)
  • Dynamic variables: dates, shell commands, clipboard
  • YAML configuration, simple trigger syntax
  • Written in Rust — cross-platform (macOS, Linux, Windows)