Espanso: honest review
This is a bit of a random post, because I’m thinking of creating my own utility, not being able to find a good one, that is small, does the job of more than trivial text substitution and is not a bloated piece of shit.
The latest one I was trying to use is espanso. It’s written in Rust, which is cool, as we want safety, has a great looking website (looks professional as promising), dedicated documentation and some interesting features. Memory usage is low, although it’s not clear why there are 3 processes running:
It doesn’t seem to lag when typing at all as well. Unfortunately, upon installing, the only bit of UI you get is that status icon with completely useless set of menu items. Like, how the fuck do I configure this?
Well, you can’t unless you dig deep into the documentation page and find small print about config files in some strange directories (from the point of view of a normal user). At this point I’m ready to uninstall it, honestly. You can “reload config” from the UI, but in order to change it, one has to find config file and edit some strange syntax? You can also invoke “search bar” which looks great on the website front page, but in actual life is ugly and reminds those Windows Forms lazily and quickly done windows from 90s.
Now, to configure it, you have to write YAML. Seriously? I known YAML (or JSON or TOML) is human readable text format, but did you know it’s not human writeable? I don’t think I’ve managed to modify a yaml file once and save without syntax errors, and I don’t consider myself stupid. So at this point I’m already deciding to uninstall this shite (at this point it is) but having a quick look at the documentation before I go, like maybe something will actually convince me to use it.
Most of the documentation tells me about mostly string replacements i.e. when I type “this”, replace it with “that”, of course you configure it in yaml, which I won’t do, sorry. There is a basic support for what author calls “extensions” which basically can do only 3 things - insert current date/time, execute a shell script or a python script. Scripts can be inline or external. If they are inline, you need to place them into yaml, which basically like shooting yourself in the foot, and external ones have undefined behaviour, like it’s unclear which python version/environment they will use, how to use some other packages and so on. Shell extension is probably the most useful one, and I honestly like the idea. However, it lacks the ability to pass more complex parameters and is extremely basic. I am also extremely unsure calling a shell command while typing is a very good idea, unless your typing speed is like 1 character a minute?
The author also created something called a “package repository”, which is basically a pointer to another GIt repository with more yaml files you can raise a PR against or pull someone else’s configuration. In theory sounds good, but in practice this is an overcomplicated useless feature.
Oh, and to edit configuration you have a dedicated app to download called EspansoEdit, which is essentially a yaml editor. I’m not sure why this is a separate app, but I’m not going to install it to find out.
Uninstalling.
To contact me, send an email anytime or leave a comment below.