[HN Gopher] Espanso Cross-Platform Text Expander
       ___________________________________________________________________
        
       Espanso Cross-Platform Text Expander
        
       Author : enbugger
       Score  : 93 points
       Date   : 2022-08-26 09:31 UTC (13 hours ago)
        
 (HTM) web link (espanso.org)
 (TXT) w3m dump (espanso.org)
        
       | anyfactor wrote:
       | I have been a long time user of Espanso. It is an absolute
       | godsend.
       | 
       | I used to work in social media management, I used to have bunch
       | of `insert_generic_response` for birthdays to weddings to
       | inquiries. I would have a random response generated with an
       | Espanso hotkey for each purpose.
       | 
       | Now, I store my token, curl commands, documentation, code
       | snippets well.... being a DevRel I still use
       | `insert_generic_response` but with more technical content!
        
       | elesbao wrote:
       | Looks like a neat idea but having any kind of keylogger installed
       | in my machine gives me second thoughts(a keylogger has the same
       | principle of intercepting typed words and tags but instead of
       | replacing them according to a backend system it sends the text
       | away or store so some other party can read)
        
         | federicoterzi wrote:
         | Author here :) This is definitely a good concern to have,
         | though Espanso was built with security in mind, so the keys you
         | press are not logged anywere. We keep the last N in memory
         | (with N being usually between 5 to 30 chars) to do the
         | matching, and discard them as soon as possible
        
       | majkinetor wrote:
       | Autohotkey has this, called hotstrings, and you can even bind
       | functions and much more. Not cross platform tho.
        
         | flarg wrote:
         | AHK is probably the big boy in this field and it has saved me
         | 100s of hours of typing.
        
       | throwaway888abc wrote:
       | Syncing across devices and Android, please. With love
        
       | subpixel wrote:
       | I share an Espanso package with my team of juniors and it is
       | awesome.
        
       | kretaceous wrote:
       | Long time Espanso user (1+ year). It is one of those things I
       | will lose my mind because my muscle memory is tuned to its
       | shortcuts.
       | 
       | I often type the same shortcuts in my Android device out of
       | habit. So you can tell that I'm waiting for an Android version!
       | I'm working around it by adding words to custom dictionary in
       | Google Keyboard. But I'd love to be able to use the same .yaml
       | file for my phone. I'm not necessarily talking about sync as I
       | don't change the file often.
       | 
       | One more thing about is the GUI search bar they have added. It
       | has rough edges (doesn't react to my shortcut, etc.) but I'm sure
       | it will get better.
       | 
       | Love Espanso! Thanks and all the best to Federico, the creator
       | and maintainer.
        
         | federicoterzi wrote:
         | Thanks for the kind words! We are working hard to improve the
         | experience, hopefully on Android as well in the future :)
        
       | jdoss wrote:
       | Long time Espanso user and supporter of Federico's work. It is
       | fantastic FOSS and it helps me get stuff done everyday. His
       | project was the first one that I sponsored on GitHub which he
       | recently discontinued using for donations. I have to figure out
       | how to buy him a monthly coffee now.
       | 
       | Also, here is a gist of my non-work specific Espanso snippets. I
       | share (overshare??) what I am listening to on Spotify many times
       | a day with my friends and coworkers, so the Spotify specific one
       | gets used a lot!
       | 
       | https://gist.github.com/jdoss/64c663e24cca2052842701e13db77d...
        
         | federicoterzi wrote:
         | Thanks Joe, I really appreciate the kind words :)
        
       | riffic wrote:
       | espanso is a lovely tool.
        
       | smcn wrote:
       | Ha, I wrote something like this previously which I called Rabbit.
       | It was in scheme, and would essentially watch for text between
       | two carets (hence Rabbit, because it ate carets) and then the
       | first word would be the function to run, with each subsequent
       | word its argument.
       | 
       | It was cool to use and show off to colleagues but it was such a
       | hacky piece of work as I used xev to grabs a windows input and
       | worked off of that.
       | 
       | This looks _much_ better!
        
       | yewenjie wrote:
       | What do people use Espanso for? I like the idea of the project
       | but never really found a good use case for? The only thing I
       | expand so far (using custom QMK setup on the keyboard itself) is
       | my email.
       | 
       | Also, is there any package that lets you cycle between your
       | clipboard as you type anywhere?
        
         | federicoterzi wrote:
         | The Hub [1] is a good source of inspiration if you're curious
         | :)
         | 
         | [1]: https://hub.espanso.org/search
        
         | kretaceous wrote:
         | > cycle between your clipboard
         | 
         | I'm not sure what you mean but if you want really nice
         | clipboard management, with great UX, CLI and scripting
         | capabilities, check out CopyQ[1]. Have been using it for a year
         | and love it.
         | 
         | 1: https://hluk.github.io/CopyQ/
        
           | yewenjie wrote:
           | I have previously enjoyed CopyQ. However, now I use a more
           | minimal setup that uses rofi. By cycling through I meant this
           | - I paste something from clipboard using a keybind, and then
           | trigger keybind that erases the pasted thing and inserts the
           | previous element from the clipboard and so on.
        
         | st0le wrote:
         | One of my most common workflow is I copy the name of a
         | "resource" and have to type out some diagnostic queries.
         | 
         | So I have espanso trigger on a shortcut and autofill queries
         | with the clipboard being used as a placeholder.
        
         | Rebelgecko wrote:
         | I have a lot of long strings I type at work (like paths I cd to
         | often, urls, etc). I've abbreviated most of them to 3-4 letters
         | with Espanso. I've tried using some of the fancy form building
         | stuff but it seemed a bit rough still (although I'm still on
         | 0.7.3)
        
       | sciuromorpha_ wrote:
       | I'm forever surprised how much this has improved my day to day
       | working life. Simple things like having to input test email
       | addresses and passwords on our dev environment repeatedly, or
       | typing out addresses, or scaffolding basic scripts and code, or
       | massively speeding up note taking. Genuinely worth digging in to.
        
         | koevet wrote:
         | Do you mind expanding (!) on how you use expanso for note
         | taking? Thanks!
        
       | memorable wrote:
       | Just tried this! Really awesome and cool!
        
       | rabbitofdeath wrote:
       | I absolutely ADORE Espanso - I use it for stupid stuff, but for
       | note taking and formatting dates I love it. I just have simple
       | expansions `:gp` does `git pull` `:dcd` does `docker-compose
       | down` and for common tasks, you can do alot!
        
         | blacksmith_tb wrote:
         | That's interesting, I haven't been using it for things like
         | that (which I usually just alias in my .zshrc), but I do go the
         | other way and run shell commands in text input anywhere that
         | isn't a terminal, it's super cool to be able to type ;extip (I
         | like semicolon better than colon, since it doesn't trigger
         | emojis in Slack etc.) and have Espanso curl ipinfo.io and pipe
         | the return through jq to drop my current IP into anything,
         | anywhere.
        
       | adhesive_wombat wrote:
       | This is a way better configuration system than AutoKey's (not
       | AutoHotKey[1]) clunky GUI.
       | 
       | [1]: also this is not easily confused with another similar
       | program when searching like AK/AHK.
        
       | albertzeyer wrote:
       | I was wondering how this was done technically, i.e. how it gets
       | the current text content, and how it would do the text
       | replacement.
       | 
       | From a quick glance, it looks like for getting the text, it
       | listens to all the keyboard events globally. I can imagine many
       | potential problems and shortcomings with this approach, but on
       | the other side, this is probably the most simple and most generic
       | solution, working for almost every application.
       | 
       | For sending the text, it does sth similar, i.e. it just injects
       | global key events. Probably first some key backspace events to
       | delete the old text, and then the keys for the replacement text.
       | 
       | https://github.com/espanso/espanso/blob/dev/espanso-inject/s...
       | 
       | But maybe I understand the code wrong. I did not delve too deep
       | into it.
        
         | kamban wrote:
         | I have seen its codebase, and even took some inspiration for my
         | Elephas app. The founder is an expert I can say.
        
         | federicoterzi wrote:
         | Author here :) You're pretty close! Espanso currently uses a
         | combination of key injection + clipboard to get the best
         | results. There are still some edge cases, but we are trying to
         | solve them with other approaches, such as using custom Input
         | Methods (the same mechanism used for some languages like
         | Chinese)
        
           | SaulJLH wrote:
           | Any plans for AHK support? v1, but esp. v2:
           | https://www.autohotkey.com/
        
         | veidr wrote:
         | I think there is literally no other way to do this well.
         | 
         | Maybe for some subset of applications and OS, it could work,
         | but Espanso works with virtually _everything_ on Mac and Linux.
         | (Windows too I think but I don't use it there.)
         | 
         | It does require a high degree of trust, but otoh it is
         | extremely useful.
         | 
         | It is one of the most useful pieces of software I have ever
         | used, so I'm willing to extend it a level of trust similar to
         | my OS or password manager.
        
       | n8henrie wrote:
       | I'm a big fan of espanso! I use it on my MacBook, my Linux
       | desktop, and on Windows at work. Works very well on all three. I
       | use many plain / dumb snippets, a few forms and date-based ones,
       | and a few shell and Powershell scripts.
       | 
       | I also would feel bad if I didn't mention that the main developer
       | seems _incredibly_ nice. I looked at this as a rust project to
       | which I might be able to make minor contributions as a newb
       | (which I still haven 't done unfortunately). Federico goes out of
       | his way to respond (quickly) to GH issues or posts on the
       | subreddit in the kindest way imaginable.
        
         | federicoterzi wrote:
         | Thanks for the kind words! Glad you found it useful :) Lately
         | I've been less responsive due to some life circumstances, but
         | I'm slowly getting up to speed again :)
        
       | sanketpatrikar wrote:
       | I love Espanso! I've been using it for inserting everything from
       | email addresses to site:reddit.com
       | 
       | I wish it was available for Android. For now, I use the text
       | expansion feature built into Gboard, but it has a short text
       | limit, which limits its usefulness.
        
       | desireco42 wrote:
       | I don't mind listening to my typing, I do get concerns... what I
       | can't think of, is how I would use it, can you please share more
       | examples of your day to day usage, as current day... I really
       | don't need that as much.
       | 
       | Thanks
        
         | arabello wrote:
         | My simple uses cases:                 - Write repetitive stuff
         | across any application, eg. my email is pretty long, so I
         | expand it with a short ':e' trigger)       - Expand boring
         | code, eg. functional programming functions to snap into
         | pipelines       - Drop emojis here and there
         | (https://hub.espanso.org/all-emojis)       - Write accented
         | letters not available on the keyboard (I use a US keyboard, but
         | I need to write Italian on a daily basis)       - Drop lorem
         | ipsum paragraphs
         | 
         | With some setup, the config is synced between my personal and
         | work Macbooks. I think I will also use it for email templating
         | soon.
        
           | kiike wrote:
           | Re: accented letters
           | 
           | I have been using the US international keyboard both at home
           | and at work. It is a blessing so that I don't have to change
           | keyboard layouts when changing languages, since it provides
           | grave and acute accents (e.g. for French), the double s
           | German letter and umlauts, euro symbol, etc. and also plays
           | nice with programming languages and UNIX shell: for instance,
           | quick access to slash, curly and square brackets with the
           | same modifier key, backticks without modifier keys. Another
           | advantage is that the layout is the same as the US keyboard
           | you are already used to, just that some keys have new
           | effects.
        
         | federicoterzi wrote:
         | The Espanso Hub is great if you need some inspiration :)
         | https://hub.espanso.org/
        
       ___________________________________________________________________
       (page generated 2022-08-26 23:01 UTC)