Help us understand the problem. What is going on with this article?

Alfred 2.6 でScript Filterによるインクリメンタルサーチが快適になった

More than 5 years have passed since last update.

Script Filter

Alfred Workflowには、Script Filterという機能があります。これは、スクリプトによりWebサービスなどからデータを取得し、その結果をインクリメンタルサーチするものです。

例えば、Qiitaの記事を検索するuetchy/alfred-qiita-workflowは日々活用させていただいています。

大変便利な機能なのですが、従来は検索に時間がかかるという欠点がありました。

Script Filterの仕組みは、以下のようになっています。

  • スクリプトがXMLドキュメントデータを出力
  • Alfredがレンダリングしてitem要素からインクリメンタルサーチ
  • argパラメータを次のアクションに引き渡す

一文字入力するたびにこのプロセスが走るため、例えば、「test」と入力した結果を得るには、プロセスが4会終了するのを待つ必要がありました。

Alfred2.6での変更

Alfred2.6では、Script Filterの検索を高速化するための、「Script Behaviour」オプションが導入されました。

スクリーンショット

スクリーンショット

これらの概要を挙げます。

Queue Mode:

Wait until previous script finishes
従来の挙動です。プロセスの終了を待ってから、次のプロセスを開始します。

Terminate previous script
文字入力ごとに、プロセスを終了して次のプロセスを開始します。

Queue Delay:

Immediately after each character typed
文字入力ごとにプロセスを開始します。

Automatic delay ater last character typed
文字入力の終了を待ってから、プロセスを開始します。

Custom delay after last character typed
最後の文字を入力してから、指定した時間が経過するのを待ってプロセスを開始します。

Always run immediately for first typed arg character
引数となるテキストの最初の一文字に限り、即時にプロセスを開始します。

検証

試しに、以下のようなScript Filterを作ってみます。

sleep 5
cat << EOB
<?xml version="1.0"?>
    <items>
        <item uid="tets" arg="test" valid="YES" >
            <title>pid=$$</title>
        </item>
    </items>
EOB
  • 「Wait until previous script finishes」を選択した場合、文字入力の5+α秒後にプロセスIDが増加します。(5×文字数ではない。なぜだろう?)
  • 「Wait until previous script finishes」を選択した場合、文字入力のほぼ5秒後にプロセスIDが増加します。
  • 「Immediately after each character typed」を選択した場合、文字数分プロセスIDが増加します。
  • 「Automatic delay ater last character typed」「Custom delay after last character typed」を選択した場合、ワンフレーズと判断される回数分プロセスIDが増加します。
  • 「Always run immediately for first typed arg character」をチェックした場合、2文字以上の入力は常に2回分プロセスIDを増加させます。

実感

特にWeb APIを利用するWorkflowにおいては、顕著な時間短縮が見られます。Workflow作者様におかれては、早期のバージョンアップをお勧めします。

これらのオプションは、既存のWorkflowにも設定できます。導入済みのWorkflowに設定してみてはいかがでしょうか。

catfist
物書き志望です。
https://wbtmiu.herokuapp.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away