I’ve been using Espanso on macOS for a while now, but haven’t had the chance to git into it on Fedora yet because there wasn’t a one click way to install it. Today we’re going to go over the Fedora install instructions from the Espanso site. This was my first time compiling a piece of software for Linux from source and it worked first time for me, so I really just want to demystify the process and make it approachable.

Compile Espanso from Source

First we need to make sure we have all the proper tools to compile Espanso from the source which means we need to run two commands. Our first command downloads all the software needed to run the build command that is in the dnf package manager.

sudo dnf install @development-tools gcc-c++ wl-clipboard libxkbcommon-devel dbus-devel wxGTK3-devel`

Second we need to install cargo make which handles the packaging steps for Espanso.

cargo install --force cargo-make --version 0.34.0

Cargo make will warn you that there is a new version but we should stick with the version that Espanso has tested so just leave that warning alone. I did find that my terminal sat telling me it was downloading stuff for a few minutes with no real feedback, but eventually it all finished up cargo make was installed.

Compiling Espanso

To compile Espanso we first need to download the Git repository from GitHub. I always make sure I change to my Downloads directory to download new things.

cd ~/Downloads
git clone https://github.com/federico-terzi/espanso

Now we need to change our terminal into the Espanso directory.

cd espanso

And our final command to compile it is to run cargo make to build Espanso. The directions on the site say it takes between 5 and 15 minutes for the build to happen. Mine completed in under 60 seconds on an i5 12th Gen Intel chip, so the speed of your processor will affect the build step.

cargo make --profile release --env NO_X11=true build-binary

Get Espanso Running

Now that we’ve got Espanso compiled on our machine it’s time to get it running properly. First we need to move Espanso to a decent spot on our system. Currently it will live at target/release/espanso and we want to move it to /usr/local/bin/espanso.

sudo mv target/release/espanso /usr/local/bin/espanso

Now we need to give Espanso the proper permissions to detect our keystrokes with the following command.

sudo setcap "cap_dac_override+p" $(which espanso)

There is a security note in the original directions you should take a look at because we just gave Espanso permission to read/write to any file on our system.

We’re down to the final two steps, registering Espanso as a systemd service and running it.

#Register Espanso
espanso service register

espanso start

Where is Espanso

By default on Linux you’ll find your Espanso configurations at ~/.config/espanso which is where you can add or remove what text will match and be replaced.

To search your matches press ALT Space on Linux, though this does seem to conflict with a Gnome setting that brings up the ability take screenshots of the currently active window. I’ve found that by pressing ESC I can dismiss the Gnome panel and then typing focus is given to Espanso.

If dismissing the Gnome panel is annoying to you like it is to me you can open ~/.config/espanso/config/default.yml and paste in the code below to change the shortcut to ALT CTRL SPACE as your trigger. You can find other customisation options for the search bar in the Espanso documentation.

search_shortcut: ALT+CTRL+SPACE

Another interesting way to trigger the search panel is by configuring a string to open the search panel in the configuration file. I’ve added the following code to my configuration so that .search brings up the search panel.

search_trigger: .search

I’ll still have more content coming up on Espanso, but check out my last Espanso post for some basics.

Productivity is more than tools

A good process will work no matter what tool you choose to use. It will work on paper or in a digital task manager. If you’re looking to build a productivity practice that will help you get more done without being overloaded, this is the course you want. Become a member to get all my courses.

$49 USD (30-day guarantee)