という訳で、私の環境にも「SayKanji」を導入させて頂きました、ありがとうございます!
さて、今回はこのシェルスクリプトを使わせて頂いて、Macの「.app」形式のアプリケーションを作ってみようと思います。ちなみに、参考にさせて頂いた情報源はコチラです。
- シェルスクリプトを Mac OS X 方式の .app にする方法 [簡単 2 ステップ]
- [Mac OS X] シェルスクリプトとかの CUI アプリケーションを Mac OS X 方式の .app にする方法 [簡単 5 ステップ]
ここで、私が想定しているアプリケーションとは...
- Dockに表示される
- クリップボードが更新された場合、クリップボードの文字列を読み上げる
- シェルスクリプト(saykanji.sh)を作成する
これは、ザリガニが見ていた...。さんのページを参考にして、「saykanji.sh」を作成します。
シェルスクリプトの置き場所は必要に応じて変更する事ができますが、ここでは「/usr/local/bin」以下に置いたと仮定しています。また、適宜「.bash_profile」なども書き換えて、ターミナル上で「saykanji」コマンドがちゃんと動作する事を確認しておくと良いと思います。 - シェルスクリプト(saykanji.sh)を呼び出すAppleScriptを作成する
スクリプトエディタ.appを開いて、例えば、次のようなコードを書きます。
※注意!↓のスクリプトは、ド素人が見よう見まねで書いたヒドイ代物ですですので、ご利用は計画的に!(利用する場合は、末尾もFAQもご覧下さい)
(追記:5/21)コードを修正(動かなかったバージョンのスクリプトをアップしていましたw)
(追記:5/23)Gururiさんに添削して頂きました。次のスクリプトの代わりに、コメント欄にあるGururiさんのスクリプトを利用して下さい!
このスクリプトを保存する時がポイントになります。通常は「フォーマット」の項目に「スクリプト」が選択されていますが、ここで「アプリケーション」(または、「アプリケーションバンドル」)を選択して下さい。set pbstring to ""
set prev_pbstring to ""
repeat
tell application "System Events"
delay 1.0
set pbstring to (clipboard info for string)
if pbstring is not {} then
set pbstring to (the clipboard as string)
if pbstring is not prev_pbstring then
do shell script ". /usr/local/bin/saykanji.sh;saykanji " & "'" & pbstring & "'"
set prev_pbstring to pbstring
end if
end if
end tell
end repeat
(追記:5/23)Gururiさんのスクリプトを利用する場合、「実行後、自動的に終了しない」にもチェックを付けると、正常にアプリケーションが終了するようになります。
↑スクリプトエディタの保存画面 - アイコン(icnsファイル)を作成する
Dockに表示させるからには、アイコンも設定しておきたいですよね。その場合は、icnsファイルが必要になります。png形式などの画像からicnsファイルを作成するには、「Img2icns」というアプリケーションを利用するのがオススメです。(デスクトップ用のアイコンならFree版でも作成可能です)
↑Img2icnsの画面
アイコンで使用する画像をドロップして、1ボタンでicnsファイルが生成されます。 - SayKanji.appにアイコンを設定する
Finder上で、2.で作成した「SayKanji.app」を右クリック→「情報を見る」を選択します。(Command+IキーでもOK)表示された情報画面の左上の表示されている標準アイコンの場所に、3.で作成したicnsファイルをドロップします。
↑SayKanji.appの情報画面
ここでアイコンを変更する事ができる。 - SayKanji.appを起動する
起動すると、こんな感じでDock上に表示されます。文字列をコピー(Command+Cキー)すると読み上げてくるアプリケーションが出来上がりました。
(FAQ)
2.で紹介したAppleScriptには、いくつか問題があります。
- 終了しない!
→ アクティビティモニタなどから「強制終了」して下さい。 - 落ちる!
→ 「<」、「>」等、苦手な文字があるようです。