espanso - Rustで書かれたクロスプラットフォームのテキスト展開ツール

S 20220325 115014

省略形を入力すると対応した定型文に自動的に展開してくれるテキスト展開ツール。

macOSやWindows等、プラットフォーム毎に、さまざまなアプリが存在しますが、システムに密接に連携する必要があるため、クロスプラットフォームで動作するアプリは少ない印象があります。本日紹介する「espanso」はこのような従来の常識を打ち破る、Rustで書かれたマルチプラットフォーム対応のテキスト展開ツールです。

GPLライセンスの元開発が進められているオープンソースソフトで、Windows、macOS、Linux用の実行ファイルをダウンロードすることができます。

単に定型文を展開できるだけでなく、日付の展開や、フォーム機能、シェルスコマンドの呼び出しなど、高度な展開機能も実装されています。また設定はファイルに保存しているため、DropboxやGoogle Driveなどのクラウドストレージを使い、デバイス間で同期することもできます。

以下使用方法を説明します。

espansoの使用方法

公式サイトから実行ファイルをダウンロードします。macOS版は、Intel、M1版が存在しますので、自分が使っているMacに対応したものをダウンロードします。Beta版とLegacy版が存在しますが、ここではBeta版を選択しました。

初回実行時はセットアップ画面が表示されます。

S 20220325 114820

▲「Start」をクリックします。

S 20220325 114838

▲espansoを自動起動するかどうかを設定します。チェックを入れると自動起動します。

S 20220325 114848

▲espansoをPATHに追加するかどうかを設定します。espansoはリッチなCLIインターフェイスを提供しているため、PATHに追加することが推奨されています。

S 20220325 114859

▲最後にアクセシビリティの設定を行います。「Enable」をクリックしてアクセス許可を与えます。

セットアップが完了しメニューバーにアイコンが表示されれば準備完了です。

デフォルトでは以下の3つのスニペットが登録されており。例えば「:espanso」と入力すると「Hi there!」へ展開されます。「:date」と入力すると現在の日付「03/25/2022」などに変換されます。「:shell」と入力するとシェルコマンド「echo 'Hello from your shell'」の実行結果「Hello from your shell」へ展開されます。

espansoの設定

espansoの設定ファイルの構造は以下の通りです。

$CONFIG/
  config/
    default.yml
  match/
    base.yml

$CONFIGはプラットフォームごと異なっています。

  • Linux: $XDG_CONFIG_HOME/espanso (例: /home/user/.config/espanso)
  • macOS: $HOME/Library/Application Support/espanso (例: /Users/user/Library/Application Support/espanso)
  • Windows: {FOLDERID_RoamingAppData}\espanso (例: C:\Users\user\AppData\Roaming\espanso)

matchデイレクトリに存在するymlファイルは、espansoが何をすべきかを定義します。すなわちカスタムスニペットとアクション(別名マッチ)を設定し、match/base.ymlがその起点となるファイルとなります。デフォルトのbase.ymlは以下の通りになっています。

matches:
  # Simple text replacement
  - trigger: ":espanso"
    replace: "Hi there!"

  # NOTE: espanso uses YAML to define matches, so pay attention to the indentation!

  # But matches can also be dynamic:

  # Print the current date
  - trigger: ":date"
    replace: "{{mydate}}"
    vars:
      - name: mydate
        type: date
        params:
          format: "%m/%d/%Y"

  # Print the output of a shell command
  - trigger: ":shell"
    replace: "{{output}}"
    vars:
      - name: output
        type: shell
        params:
          cmd: "echo 'Hello from your shell'"

triggerが省略形で、replaceが展開後文字列であることがわかります。

configディレクトリに含まれるファイルは、espansoのパラメータやオプションを設定するものです。config/default.ymlがデフォルトの設定ファイルで、以下の通りの内容となっています。

# espanso configuration file

# For a complete introduction, visit the official docs at: https://espanso.org/docs/

# You can use this file to define the global configuration options for espanso.
# These are the parameters that will be used by default on every application,
# but you can also override them on a per-application basis.

# To make customization easier, this file contains some of the commonly used
# parameters. Feel free to uncomment and tune them to fit your needs!

# --- Toggle key

# Customize the key used to disable and enable espanso (when double tapped)
# Available options: CTRL, SHIFT, ALT, CMD, OFF
# You can also specify the key variant, such as LEFT_CTRL, RIGHT_SHIFT, etc...
# toggle_key: ALT
# You can also disable the toggle key completely with
# toggle_key: OFF

# --- Injection Backend

# Espanso supports multiple ways of injecting text into applications. Each of
# them has its quirks, therefore you may want to change it if you are having problems.
# By default, espanso uses the "Auto" backend which should work well in most cases,
# but you may want to try the "Clipboard" or "Inject" backend in case of issues.
# backend: Clipboard

# --- Auto-restart

# Enable/disable the config auto-reload after a file change is detected.
# auto_restart: false

# --- Clipboard threshold

# Because injecting long texts char-by-char is a slow operation, espanso automatically
# uses the clipboard if the text is longer than 'clipboard_threshold' characters.
# clipboard_threshold: 100

# For a list of all the available options, visit the official docs at: https://espanso.org/docs/

例えば「hello」と入力すると「world」に展開するマッチを登録したい場合、match/base.ymlに以下の内容を追加します。

  - trigger: "hello"
    replace: "world"
S 20220325 141047

espansoにはGUIでスニペットを検索できる「検索バー」機能や、複数の入力を受け取ることができるフォーム機能、正規表現トリガー、変数など便利な機能が多数搭載されています。

詳細は公式ドキュメントで確認可能です。

espansoコマンドを使う

espansoの各種機能をターミナルから呼び出すこともできます。

$ espanso --help
espanso 2.1.4-beta
Federico Terzi
A Privacy-first, Cross-platform Text Expander

USAGE:
    espanso [FLAGS] [OPTIONS] [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -v               Sets the level of verbosity
    -V, --version    Prints version information

OPTIONS:
        --config_dir       Specify a custom path from which espanso should read the configuration
        --package_dir     Specify a custom path for the espanso package directory
        --runtime_dir     Specify a custom path for the espanso runtime directory

SUBCOMMANDS:
    cmd           Send a command to the espanso daemon.
    edit          Shortcut to open the default text editor to edit config files
    env-path      Add or remove the 'espanso' command from the PATH
    help          Prints this message or the help of the given subcommand(s)
    install       Install a package
    log           Print the daemon logs.
    match         List and execute matches from the CLI
    migrate       Automatically migrate legacy config files to the new v2 format.
    package       package-management commands
    path          Prints all the espanso directory paths to easily locate configuration and matches.
    restart       Restart the espanso service
    service       A collection of commands to manage the Espanso service (for example, enabling auto-start on system
                  boot).
    start         Start espanso as a service
    status        Check if the espanso daemon is running or not.
    stop          Stop espanso service
    uninstall     Remove a package
    workaround    A collection of workarounds to solve some common problems.

例えば、デフォルトの設定ファイルを編集したい場合「edit」コマンドを使用します。

$ espanso edit

また自動起動を止めたい場合以下のコマンドを実行します。

$ espanso service unregister

まとめ

espansoはオープンソースのテキスト展開ツールです。オープンソースに魅力を感じる型や、Windows、macOS、Linuxといった複数のOSで同じテキスト展開ツールを使用したいという方に特におすすめのツールです。

タイトル espanso
公式サイト https://espanso.org/
ソフトアンテナ https://softantenna.com/softwares/7688-espanso
説明 Rustで書かれたマルチプラットフォーム対応のテキスト展開ツール。