続・カスタムアイコンを貼るApplescript

前回の記事(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

http://apple.stackexchange.com/questions/6901/how-can-i-change-a-file-or-folder-icon-using-the-terminal

 

次が、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ファイルとフォルダおよびファイル

f:id:tbboy:20140517114507p:plain

ターミナルからの実行内容および実行結果

$ ./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ファイルとフォルダおよびファイル

f:id:tbboy:20140517114637p:plain

つまり、画像ファイルから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

 

 

f:id:tbboy:20140517115249p:plain

 

あと、icnsの内容

 

f:id:tbboy:20140517115305p:plain

 

単純に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