A simple, browser-based GUI for managing Espanso text expansion snippets. No YAML editing required.
Disclaimer: This is an unofficial tool. It is not affiliated with or endorsed by the official Espanso project.
- Create, edit, delete snippets through a clean web interface
- Search across all your snippets instantly
- File management — activate, archive, import, and export
.ymlmatch files - Auto-backup before every change, with one-click restore
- Labels — give each snippet a human-readable name (saved as YAML comments)
- Bilingual — English/Russian interface switcher
- Cross-platform — Works on Windows, macOS, and Linux
See docs/espanso-setup.md for instructions.
Windows:
start.batmacOS / Linux:
chmod +x start.sh
./start.shOr manually (any OS):
pip install -r requirements.txt
python tray_app.pyThe browser will open automatically at http://localhost:5567.
- Click "+ New Record" to create your first snippet
- Use the Search bar to find existing snippets
- Visit the Files & Archive tab to import/export match files
- Switch language using the RU/EN button in the header
| Action | How |
|---|---|
| Create snippet | + New Record → fill in Trigger and Replace |
| Edit snippet | Click "Edit" on the card |
| Delete snippet | Click "Delete" → confirm |
| Search | Type in the search bar (filters by name, trigger, or text) |
| Archive a file | Tab "Files & Archive" → "Archive" |
| Import snippets | Tab "Files & Archive" → drag & drop a .yml file |
| Restore backup | Tab "Backups" → "Restore" |
espanso-manager/
├── app.py # Flask backend (CRUD API, YAML parsing)
├── tray_app.py # Launcher (starts server + opens browser)
├── start.bat # Windows launcher (auto-finds Python, installs deps)
├── start.sh # Linux/macOS launcher
├── requirements.txt # Python dependencies
├── templates/
│ └── index.html # Frontend (HTML/CSS/JS, single file)
└── docs/
└── espanso-setup.md # How to install Espanso
tray_app.pystarts a Flask server onlocalhost:5567- The server reads/writes
.ymlfiles from your Espansomatch/directory - All changes are backed up automatically before being written
- YAML is validated before saving to prevent corruption
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/matches |
List all matches |
| POST | /api/matches |
Create a new match |
| PUT | /api/matches/<file>/<index> |
Update a match |
| DELETE | /api/matches/<file>/<index> |
Delete a match |
| GET | /api/files |
List active and inactive files |
| POST | /api/files/move |
Move file between active/archive |
| GET | /api/export/<file> |
Download a match file |
| POST | /api/import |
Import a .yml file |
| GET | /api/backups |
List backups |
| POST | /api/backups/<name>/restore |
Restore a backup |
MIT License — see LICENSE for details.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Vibecoded with Qwen 3.6 Plus Free