前回の記事(http://tbboy.hatenablog.com/entry/2014/05/07/120459)で、Finderのウンコがカスタムアイコンの貼付けに対応していないと書いた。それはその通りなのだが、なんとNSWorkspaceクラスにカスタムアイコンを設定するメソッドが。そして、それを使ってカスタムアイコンを設定するAppleScriptが転がっていたよ。
ライブラリで 利用する Objective-C - ASH Planning
http://ashplanning.blogspot.jp/2013/11/objective-c.html
正確には、AppleScript/Objective-Cで動作するわけだが。
手順に従って作業してみたが、残念128×128のアイコンサイズまでしか対応していない。
NSExclude10_4ElementsIconCreationOptionなんて古いオプションからして、怪しい空気が流れていたが無理だったか。
気を取り直してググってみると、tiff2icns,iconutilといった開発向けコマンドがあるようだ。
それにしても、Icon Composerが退役してたとは。
Mac OS Xのicnsリソースユーティリティー
http://www.geocities.jp/naosacra/mops/tipsandtricks/appbundle3.html
新しいiconの作り方(iconutil) - 誰も見ませんように(・`ω・´) (`・ω´・)
http://d.hatena.ne.jp/lohlan/20130106/1357443890
MacアプリのRetina対応アイコン(*.icns)を作成する方法 | DOTAPON Blog
http://www.dotapon.sakura.ne.jp/blog/?p=776
画像ファイルからicnsファイルを作成するのは、簡単にできそうだが問題はどうやってカスタムアイコンとして貼付けるか。
海外サイトをググってみる。結構色々とでてくる。
下は、画像ファイルからsipとDeRez,Rezを使うシェル。
osx - How to set icon on file or directory using CLI on OS X? - Stack Overflow
http://stackoverflow.com/questions/8371790/how-to-set-icon-on-file-or-directory-using-cli-on-os-x
script - How can I change a file or folder icon using the Terminal - Ask Different
次が、icnsファイルからRezを使うシェル。恐ろしく丁寧なシェル記述でちょっとくどいけど勉強になる。
GEM: Graphics Environment for Multimedia / Gem-code / [ea9034] /build/osx-dmginstaller/icon2app
http://sourceforge.net/p/pd-gem/gem/ci/master/tree/build/osx-dmginstaller/icon2app
icon2app.shとして保存して実験してみたが、問題なく動作した。appやフォルダが前提のように書かれているが、ファイルでも問題なし。さらに、512×512のカスタムアイコンに対応している。
ただ、Rezの詳細な仕様がわからないので、cat文以降の記述内容は理解していない。
実行前のicnsファイルとフォルダおよびファイル
ターミナルからの実行内容および実行結果
$ ./icon2app.sh /Users/tbboy/Desktop/icon2test/iconfolder /Users/tbboy/Desktop/icon2test/iconmos.icns
DIR /Users/tbboy/Desktop/icon2test/iconfolder
ICO Icon
RSR Icon
$ ./icon2app.sh /Users/tbboy/Desktop/icon2test/iconfile.rtf /Users/tbboy/Desktop/icon2test/iconmos.icns
DIR /Users/tbboy/Desktop/icon2test
ICO iconfile.rtf
RSR iconfile.rtf.r
実行後のicnsファイルとフォルダおよびファイル
つまり、画像ファイルから512×512などの画像を書き出し、iconsetフォルダを作成する。次にicnsファイルに変換する。そして、icon2app.shで目的のファイル/フォルダにカスタムアイコンを貼付ける。
この手順をAppleScriptにして自動化すると、めっちゃ捗る。しかし、もうエネルギーが尽きた。疲れたので今日はここまで。
後学のために残しておく。カスタムアイコンの付いたファイル(iconfile.rtf)からDeRezして、リソースフォークを取り出した内容。
$ DeRez -only 'icns' /Users/tbboy/Desktop/icon2test/iconfile.rtf /Users/tbboy/Desktop/icon2test/iconfile.rsrc
あと、icnsの内容
単純にicnsのデータフォークをDeRezしてrsrcにはできない模様。
参考サイト
Rez(1) Mac OS X Developer Tools Manual Page
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/Rez.1.html
DeRez(1) Mac OS X Developer Tools Manual Page
https://developer.apple.com/library/Mac/documentation/Darwin/Reference/ManPages/man1/DeRez.1.html