espanso Changelog

What's new in espanso 2.2.1

Dec 17, 2023
  • Fix bug that prevented Windows version from starting on Windows

New in espanso 2.1.8 (Nov 1, 2022)

  • Solved a bug that caused the SearchBar to not work correctly on macOS Ventura #1413
  • Solved a memory issue that caused the SearchBar to crash in some cases
  • Solved a compatibility issue that caused "Unexpected exit code from worker 90" on Wayland #1057 (special thanks to @lakoliu and Ricky Kresslein for the fix )

New in espanso 2.1.8 Pre-release (Nov 1, 2022)

  • This small release solves a couple of problems with macOS Ventura and Wayland
  • Solved a bug that caused the SearchBar to not work correctly on macOS Ventura #1413
  • Solved a memory issue that caused the SearchBar to crash in some cases
  • Solved a compatibility issue that caused "Unexpected exit code from worker 90" on Wayland #1057 (special thanks to @lakoliu and Ricky Kresslein for the fix 🚀)

New in espanso 2.1.7 Beta (Sep 11, 2022)

  • Code-signed binaries:
  • Starting from this release, Espanso will be digitally signed on both macOS and Windows. This change further improves Espanso's security, adding an extra layer of protection from tampering and corruption of binaries.
  • Digital signatures will also improve the installation process, as they should limit the number of warnings from operating systems.
  • This much-needed addition should also help Espanso's adoption in business environments, where digital signatures are often required to run software.
  • Other changes/fixes:
  • Remove OpenSSL dependency on Linux, improving compatibility on Debian/Ubuntu. Fixes 1056

New in espanso 2.1.6 Beta (Jul 3, 2022)

  • New feature - Alternative X11 backend (based on xdotool):
  • On Linux (X11), you can now enable an alternative injection backend based on the awesome libxdo library, the same one powering xdotool.
  • New feature - Alt-codes emulation:
  • If you're a Windows user, chances are that you've used the ALT+Numpad codes combination in the past to insert some special characters.
  • Unfortunately, the mechanism used internally by Espanso is incompatible with this feature, so in this release we added an emulation mode for it, which should produce identical results.
  • Other changes/fixes:
  • Improve espanso stop to handle non-graceful terminations. #1281
  • Add multiple locations to fix migrate command on Linux #1051

New in espanso 2.1.5 Beta (Mar 31, 2022)

  • I'm releasing version v2.1.5-beta to fix a problem we had with the AppImage on Linux for the previous version, no other changes.

New in espanso 2.1.4 Alpha (Mar 20, 2022)

  • New feature: Localized dates:
  • After years, Espanso finally supports localized dates!
  • Other changes/fixes:
  • Fix memory issue on macOS that sometimes caused Espanso to crash
  • Fix search bar not focusing correctly on some Linux DE #829
  • Add missing wl-clipboard dependency #956
  • Others #944, #961

New in espanso 2.1.3 Alpha (Jan 17, 2022)

  • Other changes/fixes
  • Clarify 'espanso service' usage. Fix #920
  • Wire up inject_delay on macOS. Fix #849
  • Fix SecureInput troubleshoot link. Fix #892
  • Disable 'search_trigger' by default. Fix #925
  • Implement additional search items. #789
  • Add search terms option. #789 #796
  • Remove paste_shortcut and backend override from Thunderbird patch. Fix #455
  • If anyone wants to give it a try (and enjoy the Searchbar and Regex trigger goodies 😎), here are the main takeaways:
  • New documentation can be found here: https://espanso.org/
  • Passive mode is currently not supported, though regex triggers might cover (and improve!) many of the possible use-cases
  • We are still porting some of the old installation methods
  • Keep in mind that this is an alpha release, so things are likely to be buggy. Any feedback or bug report will be very helpful, so don't hesitate to let us know if you encounter any problems! :)

New in espanso 2.1.2 Alpha (Dec 27, 2021)

  • Breaking change:
  • Toggle_key now disabled by default
  • Prior to version 2.1.2, Espanso was configured to use the ALT key as toggle_key by default.
  • That was a major source of confusion, as many users accidentally pressed it during normal use (sorry, bad design decision from my side... )
  • For this reason, Espanso now ships with the toggle_key disabled by default.
  • Other changes/fixes:
  • Add patch for Brave browser. #885
  • Stop Espanso when removing snap. #464
  • Switch default Wayland paste shortcut to SHIFT+INSERT #899
  • Fix return key not working inside Form's listboxes #857
  • Potentially mitigate AppImage bug on some distros #900
  • If anyone wants to give it a try (and enjoy the Searchbar and Regex trigger goodies, here are the main takeaways:
  • New documentation can be found here:
  • Passive mode is currently not supported, though regex triggers might cover (and improve!) many of the possible use-cases
  • The distribution format has changed for some platforms, please see the instructions for macOS, Windows and Linux. On macOS, Espanso is now a regular App bundle, which should make it much easier to deal with. On Linux, we still have a lot of work to do. For now, we have an AppImage available for X11 systems, with more formats and integrations (AUR, etc) to come. Wayland users will need to compile Espanso from sources right now.

New in espanso 2.1.1 Alpha (Nov 28, 2021)

  • New detect tool:
  • You can now type #detect# inside an application to show the information Espanso is detecting, which is useful to create App-specific configurations.
  • This command can also be triggered by the Searchbar and will replace the previous espanso detect subcommand available in pre-v2 releases.
  • New log tool:
  • You can now open Espanso's log from the search bar, by selecting the "Show Espanso's Logs" option. Windows and macOS users can also show them from the status icon's context menu.
  • Gradual rollout of packages:
  • We ported most of the old packages to the new format inside the Hub, so you can install them with: espanso install <package_name> That said, there are still many things left to do, including rewriting the package documentation and porting the new packages to the hub. Hopefully, we'll be able to do so in the upcoming releases :)
  • Other changes/fixes:
  • Improved Deadkeys handling on X11. #881
  • Added alternative xclip backend for X11. #882

New in espanso 2.1.0 Alpha (Nov 13, 2021)

  • Variable injection:
  • With variable injection, you'll be able to freely use the value of a previous variable as a parameter for another.
  • For example, you can use the output of a shell command to populate a Form's choice/list control.
  • More info here: https://espanso.org/docs/next/matches/variables/
  • Form syntax [breaking change]:
  • N previous versions, you could define Form's controls with the same curly-bracket syntax as variables.
  • Since version 2.1.0-alpha, you'll need to use double square-brackets to define controls instead.
  • This breaking change was needed to support the new variable injection mechanism, for which the curly-brackets syntax {{name}} is reserved.
  • Other changes/fixes:
  • Add workaround to fix inconsistent state detection on macOS. Fix #825 #858
  • Form list/choice controls now accept a multiline string as input #855
  • If anyone wants to give it a try (and enjoy the Searchbar and Regex trigger goodies:), here are the main takeaways:
  • Documentation is still lacking, I just had the chance to write a migration guide. That should be enough to get started with the new version, but there is a lot more to cover. Feel free to ask here on GitHub or Reddit if you don't understand something :)
  • Packages from the Hub are currently not working. With the great help of @4lch4, we are setting up the CI for the new Hub, which brings several improvements compared to the previous edition. In the meanwhile, you will need to manually copy the YAML files into your configs if you want to install a package. Sorry for the inconvenience :)
  • Passive mode is currently not supported, though regex triggers might cover (and improve!) many of the possible use-cases
  • Some commands, such as espanso detect, are yet to be ported. If you need to create an app-specific config, please see this comment
  • The distribution format has changed for some platforms, please see the instructions for macOS, Windows and Linux. On macOS, Espanso is now a regular App bundle, which should make it much easier to deal with. On Linux, we still have a lot of work to do. For now, we have an AppImage available for X11 systems, with more formats and integrations (AUR, snap, etc) to come. Wayland users will need to compile Espanso from sources right now, I'm going to write a comment in the wayland thread with some instructions soon.
  • Keep in mind that this is an alpha release, so things are likely to be buggy. Any feedback or bug report will be very helpful, so don't hesitate to let us know if you encounter any problems! :)

New in espanso 2.0.5 Alpha (Nov 7, 2021)

  • This alpha release ships with several new features and bug fixes:
  • Espanso now shows an error message if rendering for a match fails instead of silently failing #774
  • Now Forms can be submitted by just pressing Enter #709
  • Port espanso match list and espanso match exec commands #786 #780
  • Port espanso cmd command #832
  • Implement Espanso disabled/enabled notification on Linux #798
  • Avoid stripping away paragraph tags in markdown #811
  • Fix search bar shortcut handling for non-querty layouts #823
  • Fix possible undefined behavior on macOS #826
  • Prevent certain commands from being run as root on macOS #648
  • Improvements on Wayland implementation when devices are removed, that previously caused espanso to go 100% cpu #836
  • Improve reporting of espanso start command
  • Add delay to espanso restart to mitigate race conditions
  • Block Espanso from being run on macOS when subject to app translocation #844 #845
  • Read Wayland display from env variable instead of hard-coding it #846
  • Hopefully fix ARM compilation on linux #801
  • Improve handling of wx-config command on Linux #840
  • If anyone wants to give it a try (and enjoy the Searchbar and Regex trigger goodies), here are the main takeaways:
  • Documentation is still lacking, I just had the chance to write a migration guide. That should be enough to get started with the new version, but there is a lot more to cover. Feel free to ask here on GitHub or Reddit if you don't understand something :)
  • Packages from the Hub are currently not working. With the great help of @4lch4, we are setting up the CI for the new Hub, which brings several improvements compared to the previous edition. In the meanwhile, you will need to manually copy the YAML files into your configs if you want to install a package. Sorry for the inconvenience :)
  • Passive mode is currently not supported, though regex triggers might cover (and improve!) many of the possible use-cases
  • Some commands, such as espanso detect, are yet to be ported. If you need to create an app-specific config, please see this comment
  • The distribution format has changed for some platforms, please see the instructions for macOS, Windows and Linux. On macOS, Espanso is now a regular App bundle, which should make it much easier to deal with. On Linux, we still have a lot of work to do. For now, we have an AppImage available for X11 systems, with more formats and integrations (AUR, snap, etc) to come. Wayland users will need to compile Espanso from sources right now, I'm going to write a comment in the wayland thread with some instructions soon

New in espanso 2.0.4 Pre-release (Oct 27, 2021)

  • This fourth alpha release ships with several bug fixes:
  • Fix form extension not handling default field type. Fix #804
  • Improve toggle key handling. Fix #815
  • Add workaround to avoid crashing Espanso with malformed markdown. Fix #759
  • Improve handling of Spanish keyboard layouts on Linux. Fix #802
  • Fix (hopefully) compilation on ARM Linux #801
  • Added Alacritty and Virtualbox patches on Windows #787 #742
  • Add option to lower keyboard layout caching on Windows #745

New in espanso 2.0.3 Pre-release (Oct 17, 2021)

  • Improved behavior of shell extension: it now fails only if the status code is non-zero, ignoring a non-empty STDERR
  • Windows: Fixed long standing bug that caused random characters to appear when pressing Alt+Arrow keys
  • Windows: Fixed long standing bug that prevented some keys from being detected correctly
  • Windows: Fixed welcome screen continue button being cut with 125% scaling
  • Windows: Fixed forms crashing when username contained unicode characters
  • Fixed bug that caused multiple search bars to "stack up" when pressing ALT+SPACE multiple times
  • Fixed bug that caused espanso to interpret keys even when certain modifiers were pressed

New in espanso 2.0.2 Pre-release (Oct 12, 2021)

  • This second alpha release ships with some bug fixes we identified in the past few days:
  • Ported the espanso status subcommand #775
  • Fixed a bug that caused espanso from not being started automatically on Linux. #783
  • Fixed a bug that prevented auto-reload from working correctly with some editors. #769
  • Add patch for Thunderbird #130 #376
  • Fix a bug in the migration tool that caused it to output invalid yaml with padded multiline strings #771.

New in espanso 0.7.3 (Dec 3, 2020)

  • Version 0.7.3 is here, bringing a couple of bug fixes and support for rich text matches!

New in espanso 0.7.2 (Sep 24, 2020)

  • Improve modulo support on macOS, which should now focus the form automatically without requiring the user to click it. Fix #430
  • Improve modulo support on Windows, fix a bug that prevented the injection on Chrome and other apps. Fix #440
  • Add support for proxies when installing packages. Fix #408
  • Change the status icon on macOS when espanso is disabled #432. Thanks to @pedrorrivero)
  • Some general improvements to modulo itself, mainly a better support for UTF8: https://github.com/federico-terzi/modulo/releases/tag/v0.1.1

New in espanso 0.7.1 (Aug 26, 2020)

  • A small release to fix a bug that affected Windows users, making it difficult to use the clipboard while espanso was running. #418

New in espanso 0.7.0 (Aug 23, 2020)

  • Improvements in the variable system:
  • Before diving into the next section, it might be useful to explain some of the variable system improvements that were introduced to support forms in the first place.
  • Starting from version 0.7.0, most variables can now use the value of other (previously declared) variables in their body.
  • Not all variable types support variable injection, but notably Shell and Script extensions do through the use of ad-hoc environment variables. Take the following example:
  • Let's say we want to reverse the string produced by the Date Extension:
  • trigger: ":reversed"
  • replace: "Reversed {{myshell}}"
  • vars:
  • name: mytime
  • type: date
  • params:
  • format: "%H:%M"
  • name: myshell
  • type: shell
  • params:
  • cmd: "echo $ESPANSO_MYTIME | rev"
  • This match produces the result we expected. If the current time was 11:54, it produces:
  • Reversed 45:11
  • Let's analyze it step by step:
  • Variable mytime is evaluated first (as it's the first declared in the vars list).
  • It's output is injected in the myshell shell command, in particular through the $ESPANSO_MYTIME env variable.
  • The result is piped through the unix rev command
  • Finally the output is included in the replace text and expanded.
  • As you might have already guessed, the previous variables are injected in the Shell variable (and the Script extension works in the same way) with the naming ESPANSO_UPPERCASE-VAR-NAME.
  • Make sure to avoid spaces in the variable names, as they can become problematic in this situation
  • If you are using global variables, you have to be careful in this case, as they are implicitly evaluated before the local ones.
  • If you need to evaluate a global variable after a local one (which might be necessary if you want to inject another variable value inside it), you can do so as follows:
  • Considering the following global variable
  • global_vars:
  • name: "reversed"
  • type: shell
  • params:
  • cmd: "echo $ESPANSO_VARNAME | rev"
  • matches:
  • trigger: ":rev"
  • replace: "{{reversed}}"
  • vars:
  • name: "varname"
  • type: echo
  • params:
  • echo: "hello"
  • name: "reversed"
  • type: "global"
  • The key element here is the global type, which tells espanso to evaluate variable reversed only at that point, and not before varname.
  • Using forms with the Script and Shell extension
  • Hopefully, you now understand how variable values are injected between one another. Turns out, forms are variables as well!
  • In fact, our first example:
  • trigger: ":form"
  • form: "Hey {{name}}, how are you?"
  • is a shorthand for the following match:
  • trigger: ":form"
  • replace: "Hey {{form1.name}}, how are you?"
  • vars:
  • name: "form1"
  • type: form
  • params:
  • layout: "Hey {{name}}, how are you?"
  • What this does is simply generating a form with the given layout, and then injecting the resulting fields (form1.name) into the replacement text.
  • All right, but how can we use forms with the shell extension?
  • Let's say that we want to create a match that prompts for user input, and then expands to the reverse of what the user inserted.
  • That could be implemented with:
  • trigger: ":rev"
  • replace: "{{reversed}}"
  • vars:
  • name: form1
  • type: form
  • params:
  • layout: |
  • Reverse {{name}}
  • name: reversed
  • type: shell
  • params:
  • cmd: "echo $ESPANSO_FORM1_NAME | rev"
  • The key aspect here is that the value of the form field is injected in the shell variable as ESPANSO_FORM1_NAME. The naming is pretty straightforward, as the form variable is called form1 and the field is called name.
  • macOS remarks
  • For the expansion to take place on macOS, you have to release the submit keys (CTRL+Enter) after submitting the form.
  • Backspace Undo:
  • Another highly requested feature was backspace-to-undo:
  • If you press backspace immediately after an expansion takes place, the expansion is reversed:
  • backspace
  • If for some reason you need to backspace without reverting the expansion, press SHIFT+BACKSPACE instead.
  • You can disable it with:
  • undo_backspace: false
  • Please note that this feature is experimental, so if you notice any problem please open an issue!
  • Other changes:
  • Avoid showing the Console/Powershell window on Windows when using the Shell extension. Fix #249
  • Add offset parameter to Date extension to express dates before/after the current one. See #311
  • The Windows icon now turns red when espanso is disabled. #293
  • Added a debug option to shell commands to understand what is going on under the hoods. Thanks to @deckarep #355
  • General improvements to the Passive Mode. Thanks to @AndydeCleyre See #372
  • Avoid reloading configuration if triggered by hidden files. Fix #393

New in espanso 0.6.3 (Jun 29, 2020)

  • New CLI options:
  • You can now list all the registered matches with the command: espanso match list
  • And trigger an expansion from the CLI with the command: espanso match exec <trigger>
  • Bug Fixes:
  • Add CI pipeline check to verify the presence of all required DLLs on Windows. Fix #336
  • Change WSL shell on Windows to call bash instead of wsl command.
  • Remove trailing .git suffix when installing packages from custom repositories. Fix #326
  • Prevent espanso from crashing when X11 exception occurs. Fix #312
  • Add alternative paste shortcut (Ctrl+Shift+V) on Windows. Fix #333
  • Refactor modifier handling on Windows to respond to keyup events instead of keydown. Fix #328
  • Use named pipes instead of localhost socket on Windows for IPC communication with the daemon. Fix #340

New in espanso 0.6.2 (Jun 10, 2020)

  • Turn on auto_restart by default
  • In this version, the auto-restart on config changes is turned on by default. If you don't like this approach, you can disable it by adding this line to your default.yml file:
  • auto_restart: false
  • Minor changes
  • Fix #306 that prevented ALT key from working correctly on Windows.
  • Add trim option to ScriptExtension #295 (which is turned on by default).
  • Propagate termination signals from daemon to worker. Fix #302
  • Fix secure-input app name extraction process on macOS. Fix #291
  • Inject user PATH on macOS plist when user register espanso. Fix #233
  • Release Shift key if pressed when an expansion occurs. Fix #279

New in espanso 0.6.1 (May 29, 2020)

  • Fixed a bug #284 that prevented espanso from starting correctly on Linux.
  • Now user matches have an higher priority than packages, so that you can redefine a trigger defined in a package. #273
  • trim option in Shell Extension is now set to true by default. #272
  • Now both the Script Extension and Shell Extension inject a CONFIG env variable to the spawned process with the path of the config directory, making it easier to write cross-machine scripts. #277

New in espanso 0.6.0 (May 10, 2020)

  • Config Auto-reload::
  • This feature, requested many times before, allows espanso to "listen" for changes in the configuration files and automatically restart itself when needed, making frequent changes much more convenient!
  • To try this new feature, enable it in your default.yml file with:
  • auto_restart: true
  • And then restart espanso!
  • There are times in which a full restart is still beneficial, such as after installing a package, to make sure espanso picks up all new changes.
  • If you notice any strange behavior or bug, don't hesitate to open an issue.
  • Install packages from repositories outside the Hub
  • Requested by many users in #55, espanso now allows to install packages from GitHub repositories outside the espanso hub.
  • The command to use has the following format:
  • espanso install <package_name> <repo_url> --external
  • Those repositories must comply with the format specified in the package-example.
  • Add support for Powershell and WSL on Windows
  • The Shell Extension now allows the user to select the preferred shell, which is particularly beneficial on Windows. In particular, this new version also allows to execute a shell command on WSL, harnessing the full power of Linux shell on Windows!
  • Example of usage:
  • - trigger: ":shell"
  • replace: "{{output}}"
  • vars:
  • - name: output
  • type: shell
  • params:
  • cmd: "echo hello from linux!"
  • shell: "wsl"
  • The shell parameter can be either: cmd, powershell or wsl on Windows.
  • Note: now the default shell on Windows is Powershell.
  • Minor changes:
  • Mitigate bug related to word matches. See #252
  • Default shell on Windows changed to Powershell (instead of CMD).
  • Add option to slow down backspacing and injection on Windows and Linux, which is beneficial for some applications (such as Firefox). See #248 #246
  • Fast inject is now enabled by default on Linux.
  • Fix a bug that caused global variables to being evaluated even though they where not needed. #270
  • Improved the espanso edit subcommand to accept EDITOR with parameters. Fix #245
  • Improve the Script Extension to automatically expand %HOME% to the user home directory in paths, making it possibile to define cross-platform script paths. Fix #265
  • Improve case propagation to work also with prefix symbols. Fix #244
  • Formatted the whole project using rustfmt, conforming to Rust best practices. Fix #137

New in espanso 0.5.5 (Apr 19, 2020)

  • Minor changes:
  • The Auto backend is now the default one on Linux.
  • Add the SECURITY.md overview. Fix #182
  • Ignore hidden files when loading configs and make error more explicit. Fix #234

New in espanso 0.5.4 (Apr 3, 2020)

  • Improved Security for Packages:
  • To add a layer of security, now most Hub packages have been moved to the core repository.
  • The end user shouldn't experience any difference from the previous version, with the only exception being:
  • Some packages (namely the bigger ones that would make the core repository too large) are now considered external, and espanso will block the installation by default, prompting the user to verify the source of the package (the repository).
  • In case the user wants to proceed with the installation, a the --external flag could be used:
  • espanso install <package> --external
  • macOS Notification for SecureInput
  • On macOS there is a security feature known as SecureInput, which blocks text expanders from detecting input when entering text in sensitive areas, such as password fields (but also other apps, even the Terminal if configured).
  • As a result, espanso will not work in those situations, and many users didn't understand this apparently strange behavior.
  • To better inform the user, now espanso will trigger a notification (as well as logging it) to warn the user if an app triggers SecureInput.
  • If you want to disable the notification, just add the following line in your config file:
  • secure_input_notification: false
  • Removed the Git dependency
  • Espanso has removed its git2 dependency, which means macOS users won't have to install openssl anymore, making it much easier to install without Homebrew.
  • For more information, see: #218.
  • Minor changes:
  • Change the context menu entry to display "Exit espanso". Fix #209
  • Remove git2 dependency. Fix #218
  • Add option to force clipboard use on a per-match basis. Fix #217
  • Improve robustness of passive mode with empty selections. Fix #213

New in espanso 0.5.3 (Mar 18, 2020)

  • Fix Windows installer missing required vcruntime140_1.dll. Fix #203
  • Add an alternative package provider to install packages, as a small fraction of macOS users had a problem related to GIT. See #164
  • Fix a bug that prevented the espanso context menu from working correctly on Windows.
  • Disable conflict_check by default, as it yield a lot of false positives while not providing much value.
  • Now espanso automatically updates Systemd service file if espanso changes path (such as when updating through snap).

New in espanso 0.5.2 (Mar 10, 2020)

  • New Auto backend on Linux
  • This feature is still experimental, and thus must be enabled manually. Check the section below for more information
  • On Linux systems there was a long standing issue with text injection, which prevented certain apps from correctly handling special characters (such as emojis or accented letters) when injected (for example on Firefox).
  • For this reason, espanso initially defaulted on the Clipboard backend on Linux, as it was the most reliable (working in 99% of cases), even though it was less efficient and with a few inconveniences (for example, the previous clipboard content being overwritten).
  • Espanso now ships with the Auto backend, which tries to take it a step further, by automatically determining when an injection is possible (only ascii characters in the replacement), and falling back to the Clipboard backend otherwise.
  • This new approach should offer substantial benefits to Linux users.
  • Enabling the Auto backend
  • Add the following line to your default.yml configuration to enable the backend:
  • backend: Auto
  • and restart espanso.
  • Please let me know if you experience any problem with this new mode :)
  • More specific key options
  • Originally proposed by @lkrms in #117, you can now specify a more specific toggle_key option (and the same goes for passive_key).
  • The new options are:
  • LEFT_CTRL
  • RIGHT_CTRL
  • LEFT_ALT
  • RIGHT_ALT
  • LEFT_META
  • RIGHT_META
  • LEFT_SHIFT
  • RIGHT_SHIFT
  • All the other options are still valid, for example specifying CTRL is equivalent to accepting both LEFT_CTRL and RIGHT_CTRL.
  • Minor changes and bug fixes
  • General improvements to word matches, which up to know were known to be a bit unstable. Fix #127
  • Add support to kitty terminal. Thanks to @miterion for the help! :)

New in espanso 0.5.1 (Mar 4, 2020)

  • Edit subcommand:
  • Originally proposed by @GJKrupa in #171 , espanso now ships with the edit subcommand, which makes editing configuration files much more convenient.
  • Let's see how it works:
  • If you open a terminal and type:
  • espanso edit
  • the default system editor (Notepad on Windows and Nano on Unix systems) will be spawned, editing the default.yml. Then, after you saved the file and exited the editor, espanso will automatically restart, loading the new changes.
  • Customizing the editor
  • But wait! Nano? Are you serious?
  • I thought about it for a while, and eventually I opted for a newby-friendly approach (what if one of our fellows
  • expanders gets trapped into VIM? :)
  • Jokes aside, customizing the editor is super easy, just specify your choice in the EDITOR (or VISUAL)
  • envorionment variables, such as:
  • EDITOR=/usr/bin/vim
  • Editing files in the user directory
  • If you invoke espanso edit without further arguments, it will open the default.yml file. But what if you want to edit files in the user/* directory? Luckily, you can simply specify the name as an additional argument (without the extension).
  • For example, if you want to edit the user/email.yml file, you can type:
  • espanso edit email
  • ClipboardExtension
  • Espanso now allows to include the current clipboard content in a match, which can be useful in many situations.
  • For example, let's imagine you want to create the ultimate HTML link shortcut:
  • trigger: ":a"
  • replace: "<a href='{{clipboard}}' />$|$</a>"
  • vars:
  • name: "clipboard"
  • type: "clipboard"
  • If you now copy a link in the clipboard (for example by selecting and then CTRL+C) and then type :a, you'll
  • see the following replacement appear:
  • a href='YOUR_COPIED_LINK'></a>
  • Too see the reasons behind this feature, see #192.
  • Multi-trigger matches
  • Originally proposed by @muhlinux in #144, now espanso allows matches to have multiple triggers, by using
  • the triggers keyword and specifying a list of valid triggers:
  • triggers: [":lol", ":xd"]
  • replace: ":laughing:"
  • Case-propagating matches
  • Originally proposed by @muhlinux in #152, espanso now support matches that propagate the casing of the trigger. Just add the propagate_case: true option in a match, such as:
  • trigger: foo
  • replace: bar
  • propagate_case: true
  • word: true
  • Based on the case style you use in the trigger, espanso will trigger the replacement as:
  • foo => bar
  • Foo => Bar
  • FOO => BAR
  • Minor changes and bug fixes
  • Now the preserve_clipboard option is enabled by default.
  • Add the possibility to escape double brackets in replacements. Fix #187
  • Change the urxvt terminal paste shortcut. Fix #166
  • Change the Windows installer to avoid VC++ Redist installation (which required Admin rights) by switching to local deployment of DLLs. Fix #189

New in espanso 0.5.0 (Feb 3, 2020)

  • New features:
  • Passive mode
  • Originally proposed by @telmotrooper in #62, passive mode has finally been implemented.
  • This alterative mode allows the user to expand matches after typing them, instead of in realtime.
  • Nested matches
  • Originally proposed by @timorunge in #110, nested matches allow you to include the output of a match inside another one.
  • Global variables
  • Originally proposed by @simon-wolf in #162, global matches allow the definition of global variables that can be used in all matches.
  • Bug fixes:
  • Added support for Yakuake terminal. Fix #153
  • Added support for Tilix terminal. Fix #143
  • Added delay to fix possibile race condition when using preserve_clipboard. Fix #148
  • Fix bug that prevented certain applications, such as Photoshop, from working correctly with espanso on macOS. Fix #159

New in espanso 0.4.1 (Dec 16, 2019)

  • New features:
  • Experimental:
  • Preserve clipboard
  • Espanso now supports a way to partially preserve your previous clipboard when expanding a match instead of overwriting it. At the moment, it only preserve text-based clipboards, so if you had pasted an image, espanso will overwrite it even with this option enabled.
  • Because this is still experimental, you will need to enable it manually by adding the following line in your default.yml config:
  • preserve_clipboard: true
  • In the next release, unless any problems arise, the feature will be turned on by default.
  • You how have the possibility to write non-deterministic replacement texts. Said in other words, you can now specify a set of possible expansions for a match, useful to avoid repetitions.
  • Added a warning if Systemd is not available on Linux and switching automatically to unmanaged mode. Fix #139 #134
  • Improved support for Simple Terminal. Fix #112
  • Improved support for Emacs editor. Fix #122

New in espanso 0.4.0 (Dec 1, 2019)

  • Image Matches:
  • Initially proposed in issue #96, you can now use espanso to expand matches into images!
  • Other changes:
  • Add the possibility to disable the toggle key #126, thanks to @NickSeagull :)
  • Allow the user to change the Paste Shortcut (also on a per-application basis),
  • useful when a program uses something different from CTRL+V. Currently implemented only on Linux

New in espanso 0.3.5 (Nov 17, 2019)

  • Fixed a bug that prevented certain triggers from being expanded correctly on Linux.
  • Fixed bug #115 that forced Windows to restart after the installation in certain cases.
  • Add support for Alacritty terminal on Linux.

New in espanso 0.3.4 (Nov 9, 2019)

  • Add the espanso path default command line option to print the configuration file path. This is useful to quickly edit the configuration file (for example, by using vim $(espanso path default)). Other options are available, you can check them out with espanso path help.
  • Fix bug #112 that prevented Simple terminal from working correctly on Linux with Clipboard backend.
  • Make the ZIP crate dependency macOS specific, to reduce binary size on other platforms.

New in espanso 0.3.3 (Nov 3, 2019)

  • Bug fixes:
  • Fix bug #109 that prevented matches ending with non-alphanumeric chars from being expanded correctly.

New in espanso 0.3.2 (Oct 27, 2019)

  • Major changes:
  • Cursor Hints:
  • Originally proposed by @cambid in #92, espanso now supports cursor hints in matches
  • to move the cursor on the given position after the expansion.
  • You just need to add $|$ in the replace clause where you want the cursor to be
  • positioned afterwards.
  • Word Triggers:
  • Originally proposed by @timorunge in #82, espanso now supports word matches, a way
  • to define matches that are expanded only when surrounded by word separators, such as
  • spaces or commas.
  • This makes possible to use espanso as an autocorrection tool for typos.
  • Minor changes:
  • Fix bug that prevented the user to type accents correctly on some keyboard layouts #86.
  • Fix espanso detect on macOS #91.
  • Fix low resolution icon on macOS status bar thanks to @timorunge #98.
  • Add support for Terminator on Linux with Clipboard backend #102.

New in espanso 0.3.1 (Oct 20, 2019)

  • Nothing too interesting this week, mostly bug fixing.
  • I've been very busy with some upcoming exams, but next week I plan to release a couple of great features proposed by the community.
  • Stay tuned :)

New in espanso 0.3.0 (Oct 12, 2019)

  • Major changes:
  • Moved .espanso config directory to new locations to better integrate with the OS. Fixed #73. More info here: https://espanso.org/docs/configuration/
  • Add support for Unicode matches #78
  • Changed default backend engine on Linux to use Clipboard instead of Inject.
  • Systemd integration on Linux
  • Minor changes:
  • Fixed bug on linux that prevented espanso from correctly detecting Keyboard layout changes #72
  • Add portable mode to read configuration from the same directory

New in espanso 0.2.4 (Oct 8, 2019)

  • Fixed:
  • Clipboard backend is not correctly working with GNOME terminal.
  • Feature request: Uninstall option for packages.
  • Possible memory leak in the "espanso detect" subcommand.
  • SystemManager does not detect Window attributes on Ubuntu.

New in espanso 0.2.3 (Oct 8, 2019)

  • Merge branch 'dev'.

New in espanso 0.2.0 (Oct 8, 2019)

  • Package manager functionality.

New in espanso 0.1.2 (Oct 8, 2019)

  • Fix clipboard backend on urxvt terminal.