A synchronized, cross-platform text snippet system using Espanso, Syncthing, and File Browser for seamless snippet management across Windows, Mac, and Raspberry Pi.
This project provides a complete configuration for a multi-platform snippet expansion system with centralized storage and synchronization. The system consists of:
- Espanso: Universal text expander for Windows and macOS
- Syncthing: Decentralized file synchronization
- File Browser: Web-based file management interface (Raspberry Pi)
- Organized Snippet Library: Pre-configured snippets organized by category
βββββββββββββββ βββββββββββββββ βββββββββββββββββββ
β Windows β β macOS β β Raspberry Pi β
β β β β β β
β Espanso βββββββΊβ Espanso βββββββΊβ File Browser β
β Syncthing β β Syncthing β β Syncthing β
βββββββββββββββ βββββββββββββββ βββββββββββββββββββ
β β β
ββββββββββββββββββββββ΄βββββββββββββββββββββββ
Synchronized espanso/
Configuration Folder
med_auto/
βββ espanso/
β βββ config/
β β βββ default.yml # Main Espanso configuration
β βββ match/ # Snippet definitions
β βββ atendimento/ # Portuguese customer service phrases
β β βββ inicio.yml
β β βββ finalizacao.yml
β β βββ README.md
β βββ medical/ # Medical terminology snippets
β β βββ common.yml
β β βββ procedures.yml
β βββ personal/ # Personal information snippets
β β βββ common.yml
β βββ productivity/ # Productivity templates
β β βββ common.yml
β βββ development/ # Development/coding snippets
β βββ common.yml
βββ docs/
β βββ quick-start.md # Quick start guide
β βββ setup-windows.md # Windows installation guide
β βββ setup-macos.md # macOS installation guide
β βββ setup-raspberry-pi.md # Raspberry Pi setup guide
β βββ syncthing-setup.md # Syncthing configuration guide
β βββ customization-guide.md # Snippet customization
βββ README.md
- Windows/macOS: Espanso + Syncthing
- Raspberry Pi: Syncthing + File Browser + web server
- Install Espanso on your computers (Windows/macOS)
- Install Syncthing on all devices
- Clone this repository to each device
- Configure Syncthing to sync the
espanso/folder - Set up Espanso to use the synced configuration
- Configure File Browser on Raspberry Pi (optional)
For detailed installation instructions, see the platform-specific guides in the docs/ folder.
- Portuguese customer service phrases
- Opening greetings (morning, afternoon, evening)
- Closing messages and farewells
- Standard customer interaction phrases
- Common medical abbreviations (BP, HR, Dx, Tx, etc.)
- Medical templates (vital signs, assessments)
- Standard medical phrases
- Contact information templates
- Email signatures
- Date/time insertions
- Common greetings
- Meeting notes templates
- Task management
- Email templates
- Weekly reports
- Git commands
- Code comments (TODO, FIXME, etc.)
- Documentation templates
- Debugging helpers
Snippets are triggered by typing the trigger keyword. All triggers start with : by default.
Examples:
:bpβ "Blood Pressure":dateβ "2025-11-05":cumprimento-manhaβ "Bom dia, tudo bem? Qual seria a solicitaΓ§Γ£o, por gentileza?":despedidaβ "Disponha! Bom plantΓ£o!":meetingβ Full meeting notes template:gitcommitβ Git commit command
Create dropdown menus for related snippets:
:diaβ Choose from morning/afternoon/evening greetings:atendβ Pick customer service responses:medβ Select medical abbreviations
Learn more: Espanso Searchable Menus Guide
- Quick Start - Get running in 5 minutes
- Windows Setup Guide - Detailed Windows installation
- macOS Setup Guide - Detailed macOS installation
- Raspberry Pi Setup Guide - Central server setup
- Customization Guide - Create custom snippets
- Searchable Menus - Create dropdown choice menus
- Portuguese Snippets Reference - Portuguese phrases
- Syncthing Configuration - Advanced sync configuration
- Syncthing Setup Guide - Remote access & security
- All synchronization happens on your local network
- No cloud services required
- Full control over your data
- Encrypted sync with Syncthing (optional)
Important: When deploying this system, especially on Raspberry Pi or shared networks, follow these security guidelines:
- Default to localhost: Services should bind to
127.0.0.1(localhost) by default for security - Network exposure: Only change to
0.0.0.0if you need network access, and ensure:- Strong passwords are set immediately
- Firewall rules restrict access to trusted devices/networks
- Consider using a reverse proxy with TLS for remote access
- Never hardcode API keys in scripts or cron jobs
- Store API keys in secure files with restricted permissions (chmod 600)
- Use environment variables or secure credential files
- Example secure storage:
mkdir -p ~/.config/med_auto chmod 700 ~/.config/med_auto echo "your-api-key" > ~/.config/med_auto/syncthing_api chmod 600 ~/.config/med_auto/syncthing_api
- Local-only by default: Access web UIs via
http://localhost:portwhen possible - Remote access: For secure remote access:
- Use SSH tunneling:
ssh -L 8384:localhost:8384 user@raspberry-pi - Set up a reverse proxy (nginx/Caddy) with TLS certificates
- Use a VPN for secure network access
- Configure firewall rules to restrict access
- Use SSH tunneling:
Check that services are bound correctly:
# Linux/macOS - verify listening ports and addresses
ss -tuln | grep :8384
netstat -tuln | grep :8384
# Should show 127.0.0.1:8384 for localhost-only
# Shows 0.0.0.0:8384 if exposed to network (review if intentional)For detailed security configurations, refer to the setup guides in docs/.
Feel free to add your own snippet categories or improve existing ones!
- Create a new
.ymlfile in the appropriatematch/subdirectory - Follow the existing format
- Test your snippets with Espanso
- Sync will automatically propagate changes to all devices
MIT License - See LICENSE for details