Espanso – Cross-Platform Text Expander Written in Rust
(github.com)117 points by kartikarti 4 days ago
117 points by kartikarti 4 days ago
Autohotkey is go to on Windows for stuff like this, and its called hotstrings [1]. Hotstrings are much more powerfull. Trigger can for example run arbitrary function. AFAIK on linux, you can run it using wine.
I found Espanso very useful, but some bugs made me move on to Raycast, BetterTouchTool, etc. for similar functionality. For example, if Espanso config file is on a cloud drive, it doesn't automatically sync or read the file upon reboot.
I'm planning to move back to Espanso though, as Raycast is moving in the wrong direction with all the AI non-features.
Can't you just write a startup script that waits 1 minutes after a reboot and then restarts the Espanso service to apply the freshly downloaded config?
that seems less than optimal, the whole service needs to restart 1 minute after a reboot?
on edit: changed system to service
Just installed it and started using. It is timely as I have to fill a number of forms today on government sites so looking forward to using it. What are some best practices you have come up with for reducing the cognitive load for the trigger lifecycle - that is detect the need, come up with one that fits an easy to retrieve mental model? Namespacing obviously comes to mind, and some trigger design should be as conflict free as possible, yet brief:
:i.a - address
:i.n - name
:i.p - phone
Debating if I should feed my zsh history to chatgpt and as it to come up with some.
Any other advice from the power users?Have been using it for some years now. On Linux at least, it's easy to install and maintain.
The size of my snippets list is now a testament of its usefulness. On the appropriate context (an online meeting, for instance), it feels like a superpower.
Also works with Android
My cross-platform, FOSS text editor, KeenWrite[1], does something similar[2]. Pressing Ctrl+Space inserts the nearest matching variable into the text.
[2]: https://youtu.be/CFCqe3A5dFg?list=PLB-WIt1cZYLm1MMx2FBG9KWzP...
Anyone know how to change the default :date output to YYYY-MM-DD instead of MM/DD/YYYY on macOS?
I’ve tried the following in default.yml and reloading the config, but it’s not working and Claude, Gemini, and myself are stumped :)
matches:
- trigger: ":date"
replace: "{{mydate}}"
vars:
- name: mydate
type: date
params:
format: "%Y-%m-%d"
Solution: Edit the # Print the current date section in…
/Users/$USER/Library/Application Support/espanso/match/base.yml
…to read: # Print the current date
- trigger: ":date"
replace: "{{mydate}}"
vars:
- name: mydate
type: date
params:
format: "%Y-%m-%d"
I know it's not perhaps helpful, but I have the _exact_ same code, and it's worked for ages on macOS. Do other matches work correctly?
I have it in `~/.config/espanso/match/base.yml`.
I shell out to POSIX `date` on Linux and I believe also on Windows:
- trigger: ";tod"
replace: "{{mydate}}"
vars:
- name: mydate
type: shell
params:
cmd: date --iso-8601
I use it to shorten common requests I have for my colleagues, e.g. to not forget their code reviews, or alias phrases I commonly use to a :command. It's handy as a form filler too.
I've seen people using it to insert emojis, lorem ipsum text, or fixing common typos. It's quite powerful because you can even do HTTP requests and mash them with your text.
There is Expanso Hub here, it contains numerous other examples: https://hub.espanso.org/
I'm now thinking about writing an expansion to help me reference tickets, e.g. expand :searchticket <string> to a list of up to 5 URLs. Since it happens inline, I don't have to "submit" the list to anything/anyone until I've cleaned up the message.
On macOS it often doesn't paste text and will just delete everything while getting stuck which is very annoying :/
Can anyone recommend a good TextExpander to Espanso snippet converter?
I used ChatGPT for that and it worked fine, you can even take screenshots and tell it to create the YAML config file for you
I love espanso! The cross-platform support is huge (I use it on macOS, windows, and X11 and Wayland-based Linux systems).
Moreover, the original creator (Federico) and the current head maintainer to whom he has handed most of the day-to-day (AucaCoyan) are two of the kindest people I have ever come across in open source. All issues and contributors are treated with respect, it really is refreshing to feel so welcome when trying to contribute.