[HN Gopher] Espanso - Cross-Platform Text Expander Written in Rust
       ___________________________________________________________________
        
       Espanso - Cross-Platform Text Expander Written in Rust
        
       Author : kartikarti
       Score  : 121 points
       Date   : 2025-05-14 14:11 UTC (4 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | treetalker wrote:
       | Can anyone recommend a good TextExpander to Espanso snippet
       | converter?
        
         | mariocesar wrote:
         | 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
        
       | _HMCB_ wrote:
       | I've been using this for about 6 months. Love it.
        
       | bayindirh wrote:
       | I'm using it on KDE for quite some time now. It's very useful,
       | but sometimes types too fast and eats keystrokes. Other than that
       | it's flawless. Can recommend to anyone.
        
         | stavros wrote:
         | Can you not configure the text speed?
        
       | behnamoh wrote:
       | 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.
        
         | KetoManx64 wrote:
         | 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?
        
           | bryanrasmussen wrote:
           | that seems less than optimal, the whole service needs to
           | restart 1 minute after a reboot?
           | 
           | on edit: changed system to service
        
       | henriquemaia wrote:
       | 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.
        
       | hypertexthero wrote:
       | 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"
        
         | hypertexthero wrote:
         | 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"
        
         | kemitchell wrote:
         | 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
        
         | Wolfbeta wrote:
         | Put it in match/base.yml
        
         | dorian-graph wrote:
         | 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`.
        
       | jatins wrote:
       | I found it really buggy when I used it to the point in was
       | unusable
        
         | sunaookami wrote:
         | On macOS it often doesn't paste text and will just delete
         | everything while getting stuck which is very annoying :/
        
       | bsnnkv wrote:
       | The single best way to insert emojis into text, I cannot function
       | without this tool
        
       | Wolfbeta wrote:
       | Also works with Android
       | 
       | https://github.com/lochidev/Expandroid
        
       | frellus wrote:
       | I love espanso. I use it daily. Simplicity is perfect, it does
       | one thing and does it well.
        
       | kamranjon wrote:
       | This is how you do a Readme / went in having no clue what a text
       | expander was and within 5 seconds understood what it was from a
       | small gif.
        
       | thangalin wrote:
       | My cross-platform, FOSS text editor, KeenWrite[1], does something
       | similar[2]. Pressing Ctrl+Space inserts the nearest matching
       | variable into the text.
       | 
       | [1]: https://keenwrite.com/
       | 
       | [2]: https://youtu.be/CFCqe3A5dFg?list=PLB-
       | WIt1cZYLm1MMx2FBG9KWzP...
        
       | ipsum2 wrote:
       | What are some interesting use cases people are using Espanso for?
        
         | VPenkov wrote:
         | 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.
        
       | 0xPIT wrote:
       | This is basically what Data Detectors natively does in macOS, is
       | it?
        
       | majkinetor wrote:
       | 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.
       | 
       | [1] https://www.autohotkey.com/docs/v2/Hotstrings.htm
        
         | nixpulvis wrote:
         | IIUC they can also run arbitrary scripts with Espanso.
        
           | majkinetor wrote:
           | Arbitrary scripts, yes. AHK has a dedicated language which
           | has a lot of hotkey stuff in it (hence the name). Other types
           | of scripts are incomparable.
        
       | n8henrie wrote:
       | 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.
        
       | lamg wrote:
       | I think the problem Espanso is trying to solve should be
       | addressed by GUI toolkits, like GTK, QT, etc. Otherwise, living
       | with an authorized keylogger in our system in order to introduce
       | unicode characters seems overkill.
        
       | tathagatadg wrote:
       | 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?
        
         | mk4p wrote:
         | I was using `,.` as the trigger, as I don't think there are any
         | real-life uses of that simple combo.                 -
         | ,.a.macro       - ,.b.macro
         | 
         | etc.
        
       | BarryGuff wrote:
       | I still prefer AlomWare Toolbox, because it can autotype things
       | from different triggers other than just hotkeys or hotstrings,
       | such as the text in PC notifications when they appear.
        
       | millzlane wrote:
       | Espanso looks promising but Atext (paid) fits niche very nicely
       | for me.
       | 
       | With atexts gui it makes building new entries easy. I even have a
       | keyboard shortcut to use highlighted text to quickly make a new
       | entry.
       | 
       | I have used it to write emails, make automation's for certain
       | websites that take keyboard shortcuts. I use it to build query
       | searches for certain websites I use frequent (kinda like firefox
       | back in the day).
       | 
       | https://www.trankynam.com/atext/
        
       ___________________________________________________________________
       (page generated 2025-05-18 23:02 UTC)