Category Archives: その他

Macでシェルスクリプトをapp化する

Macのアプリケーションは.appという拡張子のついたフォルダに、決められた構成で必要なファイルを配置する事で、OSからアプリケーションとして実行されます。例えば、最小構成であれば、このようなディレクトリ構造になってます。

・hoge.shをhoge.appにバンドルする場合

こういう構成にして、各設定ファイルが適切に設定されていた場合、hoge.app/Contents/MacOS/hoge.shは、hoge.appがダブルクリックされた際に実行されるようになります。

そして、この時に重要なのが、「Info.plist」です。ハマったので最初に書いておきますが、このファイルの先頭は大文字です。うまく行かないなぁと思ってたら、Info.plistがinfo.plistになっていました。笑えない。さて、肝心な中身ですが、hoge.appに、hoge.shをバンドルし、アイコンをicon.icnsにしたい場合次のように記述します。

CFBundleNameとCFBundleDisplayNameは正直適当で大丈夫です。実行するシェルスクリプトとアイコンを正しく指定してあげてください。また、うまく行かない場合は、.shが単体でダブルクリックしてうまく動くか、シェルスクリプトに実行権限がついているか、Info.plistの頭が小文字になっていないか、フォルダ構成が間違っていないかを再度チェックしてください。また、変更が反映されない場合、一度見えないところに.appを退避させて、改めて表示させると情報がリフレッシュされる事もあるので、変なマークが着いてたりする場合は色々移動させて戻してとかやってみましょう。

はい、ここまでで一応おしまいなのですが、ここから余談。何故こんな事をしたいと思ったかというと、Java 1.7から、Macに標準で付属しているjarバンドラーを用いてapp化が出来なくなってしまったからである。ひょんなことから、Java 1.7を使って書いたコードをapp化しなくてはならなかったのですが、今までの方法ではどうしても出来なかったので、シェルスクリプトで実行可能jarファイルを叩く事によって、javaの起動をするようにして、app化しました。なので、実際は環境によってはappが正常に動作しないと思うので、配布等をするときは自己責任で御願いします。

そこで、javaをコマンドラインから実行する時に、スプラッシュ画面を設定したり、command + tab押したときのアイコンを変えたりしたい。ということで、実際に使ったJavaを起動するシェルスクリプトをここに書いておきます。

シェルスクリプトと同じディレクトリに、hogeというフォルダがあり、その中にhoge.jarが入っていて、スプラッシュ画像が../../Resources/splash.jpgの時のコード。

これでアプリケーションっぽい.appを作る事が出来ますね。

MavericsアップデートしたらMacPortsが使えなくなってた

実はMavericsにアップデートした後にMacPorts使ってなかったみたい。そんで、久々にportの様子を見ようとしたら、Command not found。正直どこに同パスを通したかなんて覚えてないので、MacPortsの場所を探してパスに追加。もちろんそれだけ。MacPortsはここにありました。

以上。

使用ターミナルの変更

これくらいさすがに覚えておけよって感じですが、一応念のためメモ。ターミナルを変えたい場合は、

お粗末。

zshでメールチェックをさせない

さくらのレンタルサーバ使ってたりすると、zshがたまに変な警告をだしてくる。

これは特に設定書かなかった場合zshがメールボックスを確認しにいくらしい。たしかに、それじゃぁしょうがない。なので、.zshrcにこんなのを書いておいてあげるといいみたい。

簡単。