2013-04-27

シェルスクリプトをターミナル無しに実行するには

自分で書いた幾つかのスクリプトは、KeyRemap4MacBookのサポートによって、キーボードから直接起動したい。それについて、KeyRemap4MacBook-jpで、hisayaさんから高山さんのサイト;
をお教え戴いていたが、My flipped around Logicool Keyboard K811 with Logi...の工作に時間が取られて手が出なかった。

工作が一段落付いたので、このテーマに手を出す事にした。

初めてなので、高山さんの資料を読み、流れを頭にいれてから、[まとめ]サンプル・プログラム「FirefoxProfileManager.app.zip」に付いての説明書き;
  • このサンプルを落として、 core.sh と icon.icon を差し替えれば OK。
に従って、Finderでの「ドット・ファイル」の表示のトグルをさせる「dotf」というスクリプトのアプリケーション化を行った。

気を良くして、全部手動で書いてみたが、エラーが多くて閉口した。で調べると、
というアプリケーションがあった。これはただ直接呼べるアプリケーション化だけではなくて、「Status menu」からも呼びさせる様になるようだ。

そこで2つ作ってみたが、一勝一敗であった。まあ、段々と整備しよう;


実は、KeyRemap4MacBookから直接起動するので、アイコンは要らないのですが、初めて作ったアプリケーションなので、笑……。

その後、スクリプトのplatypusを使ったりしたが、使用条件が厳しそうなのので、シェルスクリプト型の支援を探したら;
にシンプルなスクリプト、mkshellapp.shが公開されていたので、それを元に、アイコンも付けるスクリプト、ss2appに改造させて戴きました;
 #!/bin/sh

#http://karukumac.blogspot.jp/2013/02/mac.html
# mkshellapp.sh - make application from shell_script
#
# ss2app: 2013-04-28(Sun) 20:02:07 by mNeji
#
# これからアプリケーションを作りたいディレクトリ、HOGEを作って置き、
# スクリプト、hoge.shと、其の画像アイコン、hoge.icnsをHOGEの中に用意する。
#  通常の画像ファイルを.icnsに変換するのは;
#   iConvertのオンライン・サービスが便利:
#      http://iconverticons.com/online/#
# TerminalでHOGEに移動して;
# 「$ ss2app hoge.sh 」を実行すると、
#        hoge.appが生成され、
#         hoge.sh,hoge.icnsはhoge.appの内部に移動する。


PROG=`basename $0`
USAGE="Usage: $PROG shell_script"

case $# in
1)  scr="$1" ;;
*)  echo $USAGE >&2
    exit 2 ;;
esac

app_name=`basename "$scr" .sh`.app
#app_icon="applcon.icns"
app_icon=`basename "$scr" .sh`.icns

mkdir -p "$app_name"/Contents/MacOS
mkdir -p "$app_name"/Contents/Resources


if [ -x "$scr" ]; then
    cp -p "$scr" "$app_name"/Contents/MacOS
    rm -f "$scr"
else
    echo "Error: $PROG: $scr is not found or not executable." 2>&1
    exit 1
fi

if [ -f "$app_icon" ]; then
    cp -p "$app_icon" "$app_name"/Contents/Resources
    rm -f "$app_icon"
else
    echo "Error: $PROG: $app_icon is not found." 2>&1
    exit 1
fi

cat << EOF > "$app_name"/Contents/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>CFBundleExecutable</key>
    <string>`basename "$scr"`</string>
    <key>CFBundleIconFile</key>
    <string>${app_icon}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleSignature</key>
    <string>????</string>
  </dict>
</plist>
EOF

echo "$PROG: $app_name successfully created."


----
この記事の履歴
  1. 開始 2013-04-27(土) 15:45
  2. 追加 2013-04-28(Sun) 20:36  mkshellapp.sh ss2app

0 件のコメント:

コメントを投稿

注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...