AlfredWorkflowで遊ぶページ

Lesson25.スニペット起動を使ってみる

開発メモ

サンプル動画 ワークフロー

1.スニペット起動を理解する

 スニペットは定型的なテキストを短縮語で呼び出す機能
 即ち、キーボードから短縮語を入力すると、予め準備していたテキストに置き換えます

 Alfredの場合2つの特色があります
 ・Alfred入力バーにスニペットを入力しても反応しない
 ・スニペットでワークフローを起動することができる
 (スニペットとしてテキストの置き換えをしないロジックも可能)

 スニペットを使えばAlfred入力バーを利用せずに、テキスト入力でワークフローを起動
 できることになります
 ただし、短縮語は固定文字列なので、引数は受け取ません
 便利なような、使える場面が少ないような。。。

2.入力ソースの切り替え

 Alfredのスニペット起動の使い道を考えたのですが
 まず浮かんだのが、文字入力中に日本語入力と英字入力の切り替えをする機能

 私はUK配列のキーボードなのですが、
 OSXとしてCapsLockキーに『入力ソースを切り替える』機能を割り当てることができます
 ただ、CapsLockキーが微妙に押しにくい場所にあったり、
 左手小指で押すキーが多かったりするので、ちょっと使いにくいのです

 スニペットであればキーワードなので自由に設定できそうです
 とりあえず『..』で、入力ソースの切り替えをすることにしました

 ところが、入力ソース切り替えのスクリプトがわかりません
 仕方なく、Alfredワークフローのキーコンボを使って入力ソース切り替えを実装 

 でもあまり思ったように動きません。
 なぜかというと、英字入力中の『.』は、文末のピリオドと解釈されるのか、3連続の
 ピリオドでないと反応しません。そもそも日本語入力では半角のピリオドも打ちにくい

 ちょっと待てよ、キーストロークだけを考えると
 CapsLockの場合、1プッシュ。OSXのショートカットでは⌥+スペースの2プッシュ。
 Alfredスニペットでは最大3プッシュ。
 1プッシュで実装が必要と考え、何かよいキーがないか探したら、ありました
 左上の『§』

 最終的にはAlfredではなく、OSXのショートカット設定で対応できました
(fnキーと『§』キーを同時押しして登録ができ、単独キーで使えます)
 『§』や『±』(シフト+§)は入力できなくなりましたが、使わない文字ですからね
 自分的には満足ですが、Alfredを使わずに解決してしまいました

3.日付フォーマット

 次に考えたのが、時候の挨拶
 月や二十四節気にあわせて、動的にスニペットするみたいな
 でも、時候の挨拶を書くようなことはまずない

 そうだ、今日の日付にしよう
 .nowと入力すると、日付フォーマットを表示して、使いたいものを選ぶという流れ

 日付、日付+時刻、時刻という感じでいくつかパターンを作ればOK
 
 ロジックは簡単です
 dateコマンドで日付を取得して、表示フォーマットを出力用のJSONにセットするだけ
 なお、どの程度発生するのかわかりませんが、処理中に秒が進むのが嫌だったので
 現在時刻は1回だけの取得しています

 修正がしやすいようにベタベタのロジックで、配列をどんどん追加していき
 最後にループでJSONを作成するという感じです
 具体的には、現在の配列全体[@]にブランクと追加要素を書いて括弧でくくっています
 これは配列の最後に要素を追加する手法です

 ご自身がよく使う日付を出すのもよいでしょう
 今月末みたいなものや、一定の締切日も作れます

4.Alfred入力バーから引数を受け取る

 ここまで書いて、ちょっと気になり、日付のフォーマットを出力したAlfredバーに文字を
 入力してみると、その文字列をワークフローで受け取ることができました
 (スニペット起動のワークフローでも引数が受け取れるようにできるのです)
 そこで、”d”と入力したら、日付のバリエーションを表示するように制御を変更
 とりあえず、月始や月末を作っています
 
 zshだと、日付のプラスマイナスは『-v』オプションを使います
 dateコマンドのmanにあるexamplesが参考になるかも

 ScriptFilter(前半ロジック)
 
 ScriptFilter(後半ロジック)
 

背景

 スニペットでのワークフロー起動があったので試してみました
 スニペットは引数が取れないのが辛いと思いましたが
 ScriptFileterを後続に置けるので引数が取り込めました
 Alfred恐るべし
 

取扱説明

機能:

 現在の日時をフォーマット整形する

インストール:

 1.Alfredworkflowをダウンロード
 2.ファイルをダブルクリックしてワークフローに登録

使い方:

 スニペット(.now)を入力すると現在の日付と時刻の様々なフォーマットで表示
 オプションとしてAlfredバーに”d”を入力すると日付のバリエーションを表示

トップページに戻る