Note: My personal Espanso text expander configuration files and setup.
This repository is a part of my dotfiles.
Espanso Website | EspansoHub | Documentation | Reddit Community | GitHub
- Contents
- What is espanso?
- Setup
- User Configuration
- Matches
- Packages
- Editing
- Toggle
- Application Specific
- Resources
Espanso is an Open Source, Cross-Platform Text Expander tool written in Rust.
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, including but not limited to:
- Save a lot of typing, expanding common sentences.
- Create system-wide code snippets.
- Execute custom scripts
- Use emojis like a pro.
- 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
Install using your preferred package manager:
wingetchocolateyscoop
# winget
winget install FedericoTerzi.espanso
# chocolatey
sudo choco inst -y espanso
# scoop
scoop install espansoespanso should launch at startup, but to check run espanso status, and if it says espanso is not running then run espanso start.
espanso uses a file-based configuration approach. Simply run espanso path to determine the configuration folder's path.
On Widows, the default path is %APPDATA%\espanso, and the configuration files are split into two folders:
config: Contains the main configuration file,default.yml, and any other configuration files.match: Contains the match files, which are YAML files that contain the actual text expansions along with any installed packages.
├───config
│ default.yml
│
└───match
│ about.yml
│ address.yml
│ base.yml
│ datetime.yml
│ dev.yml
│ emails.yml
│ excel.yml
│ git.yml
│ links.yml
│ passwords.yml
│ phones.yml
│ secrets.yml
│
└───packages
├───docker-compose
├───get-ip
├───lorem
├───markdown-shortcuts
├───rand-tools
└───wttr
My personal configuration file, default.yml, is located in the config folder.
See User Configuration for more information.
Currently the only settings I specify are:
toggle_key: ALT
search_shortcut: ALT+SHIFT+SPACE
search_trigger: ":search"
show_icon: trueThe match folder contains the match files, which are YAML files that contain the actual text expansions.
I have organized my match files into various categories:
about.yml: About meaddress.yml: Addressesbase.yml: Base expansionsdatetime.yml: Date and time expansionsdev.yml: Development related expansionsemails.yml: Email addressesexcel.yml: Excel related expansionsgit.yml: Git related expansionslinks.yml: Linkspasswords.yml: Passwords 1phones.yml: Phone numberssecrets.yml: Secrets 1
The packages folder contains the packages that I have installed.
See Packages for more information.
Currently, I have the following packages installed:
For quick editing of espanso scripts run espanso edit.
To toggle espanso's runtime simply double-tab the Alt key. This makes it useful to temporarily disable then re-enable the service.
Use the filter_title configuration variable to specify expansions that should only apply in windows with a title of the provided value. For example, to only match and trigger the below expansion in Outlook you would use:
filter_title: "Outlook"
matches:
- trigger: ":signature"
replace: "Jimmy Briggs"The following table lays out all possible filter_* configurations:
| Filter | Description | Windows Support | MacOS Support | Linux Support |
|---|---|---|---|---|
filter_title |
Filter based on the current Window title | Full support | Uses the App identifier instead of the Window title | Full support |
filter_exec |
Filter based on the current application executable path | Full support | Full support | Partial support |
filter_class |
Filter based on the current Window class | Uses the application executable path instead | Uses the App identifier instead | Full support |
