回答:
ファイルタイプのアイコンは、Launch Services(特に、どのアプリケーションがファイルタイプを処理するかを決定するサービス)によって処理されます。ファイルアイコンは、デフォルトでファイルを開くアプリケーション処理によって常に提供されます。このように、たとえば、プレビューはデフォルトでPDFアイコンとPNGアイコンを提供しますが、代わりにPixelmatorを使用してすべてのPNGファイルを開くように変更すると、これらのファイルは後でPixelmatorスタイルのアイコンを取得します。
あなたがする必要があるのは、デフォルトでそれを開くアプリケーションにファイルタイプ定義を追加するか、ファイルタイプのためにあなた自身の「ダミー」アプリケーションを作成することです。
例として、私のシステムはまだについて知らないので.scala
、TextMate
それを処理したいと思います。
まず、I パッケージの内容を表示するTextMate.app
、ナビゲートするContents/
、オープンInfo.plist
、いずれかのテキストエディタ、またはとProperty List Editor
、Appleの開発者向けツールの一部。
TextMateは、Info.plist
通常はバイナリまたはXMLの通常ではない形式を使用しますが、その抜粋は次のようになります。
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
親キーCFBundleDocumentTypes
は私たちが欲しいものです。中括弧で囲まれた最初の子要素には、ファイルタイプ定義が含まれ、名前(Finderのファイルタイプ列の場合)、ファイル拡張子、およびアイコンファイルの名前(ADA
for TextMate.app/Contents/Resources/ADA.icns
)が含まれます。
をサポートする.scala
には、同じ親要素の下に、上記のような兄弟要素を追加する必要がありますCFBundleDocumentTypes
。
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
},
簡単にするため、私は同じアイコンファイルを使用していますが、我々は、1に自分自身を作成し、それをコピーすることができますTextMate.app/Contents/Resources/SCALA.icns
し、としてそれを参照SCALA
の中でInfo.plist
。
次に、TextMateが実行中の場合は閉じ、アプリケーションTextMate.app
を別のフォルダーに移動して、再度開きます。閉じて、元に戻し、もう一度開きます。これは、Launch ServicesがInfo.plist
実行したばかりの変更を取得するために行われます。
結果は次のようになります(TextMate Adaアイコンをに再利用したことを思い出してください.scala
):
.scala
ファイルを開くためにアプリケーションを関連付けたくない場合(理由は想像できませんが、これを行う方法があります):ファイルへの追加を次のように変更します。
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
CFBundleTypeRole = "None";
},
これで、アプリケーションはファイルタイプを宣言しますが、その処理方法がわからないことをシステムに伝えます(Appleは、Finderがフォントタイプを宣言する例を示していますが、それ自体は開けません)。
*ファイルタイプへの永続的なアプリケーションの割り当ては、アイコン、おそらく「不明なドキュメント」の種類をオーバーライドすることに注意してください。
に関連付けられたアプリケーションが既にあり、関連付けられたアプリケーション.scala
を変更せずにファイルアイコンを変更するだけの場合:
アプリケーションを開きInfo.plist
、でファイルタイプエントリを探しCFBundleDocumentTypes
、を取得しCFBundleTypeIconFile
ます。このファイルを変更する.../Contents/Resources/
と、すぐにFinderに反映されるはずです。
ボーナス情報:
単一のドキュメントまたはフォルダーのアイコンを画像ファイルに変更する方法
~/Desktop/test.png
アイコンを使用したい画像があると仮定します(.scala
/ TextMate / Adaアイコンの変更を説明するために上記で使用したスクリーンショットです)。
開い/Applications/Utilities/Terminal.app
て入力:
sips -i ~/Desktop/test.png
これにより、test.png
ファイルアイコンがその画像に変更されます。私は再帰が好きなので、これを試してみましょう:
以前は、プレーンプレビューpng
アイコン(イメージプレビューは無効になっています):
その後、画像ファイル自体がプレビューになります。
これで、ファイルの情報を取得ダイアログを開き、左上の希望する将来のドキュメントアイコンをクリックしCmd-C
てコピーし、ドキュメントファイルの情報を取得ダイアログを開き、左上の不要な現在のドキュメントアイコンをクリックしてCmd-V
、欲しいアイコン。
または、プレビューでアイコンとして使用する画像ファイルを開き、Cmd-A
すべてを選択して、Cmd-C
画像をクリップボードにコピーすることもできます。次に、ターゲットドキュメントの[ 情報を見る ]ダイアログを開き、左上のアイコンを選択して、その上Cmd-V
に画像を貼り付けます。
codesign --verify --verbose /Applications/TextMate.app
または同様のもの。無効にした場合、ファイアウォールで例外を必要とするアプリケーションやキーチェーンを必要とするアプリケーションに対してはこれを行わないでください。署名をいじることで他に何が悪くなるかはわかりません。(詳細については+1!)
TextMate.app: code object is not signed
そして私はそれをもう一度やりたくありません。私はそれが本当の問題だと思うが、私はそれを考えていなかった。編集:考え直して、カスタムキーボードショートカットもに保存されInfo.plist
ます。そのため、実際には問題にならない場合があります。唯一の問題は、アプリバンドル内に追加のアイコンファイルを追加することです。
特定のファイルタイプのデフォルトプログラムとして割り当てられているプログラム内のICNSファイルを置き換える必要があります。
1-目的のアイコンの画像を作成し、PNGファイルタイプとして保存します(PNGは透明度をサポートしています)。
2-pngファイルをicnsファイルタイプに変換します(FastIcnsは非常に優れており、無料です)。
3-特定のファイルタイプのデフォルトアプリとして設定されているアプリケーションをCMDをクリックまたは右クリックし、[パッケージの内容を表示]を選択します。
4-アプリケーションが特定のファイルタイプのアイコンとして指定しているicnsファイルを探します。おそらく、Resourcesというフォルダーにあります。
5-作成したicnsファイルに、置き換えたいファイルとまったく同じファイル名を付けます。
6-作成した新しいicnsファイルをコピーして貼り付けるか、または置き換えたいファイルがあるフォルダーにドラッグアンドドロップし、オプションが表示されたら置き換えを選択します。
7-完了です!そのファイルタイプのすべてのアイコンが、新しい目的のアイコンに置き換えられました。
私がいつもこれについて行く方法は、その拡張子を持つファイルを見つけ、右クリック»情報を見る、またはCommand-iを押すと、情報パネルが表示されます。上部には、現在画像に使用されているアイコンが表示されます。画像ファイルをその上にドラッグして変更するか、画像をコピーした場合は、変更する画像をクリックして貼り付けて変更することができます。