Bagaimana cara mengatur ikon untuk jenis file di Mac?

42

Bagaimana mengatur ikon untuk beberapa jenis file di seluruh sistem?

Misalnya, saya memiliki file teks yang diakhiri dengan ekstensi .scala dan saya ingin mengaitkan ikon untuk file tersebut melalui seluruh sistem dan untuk setiap file yang baru dibuat dari ekstensi ini.

Terima kasih.

Chiron
sumber
Hanya perhatikan Anda seorang MAC ... tetapi bagaimanapun, pada Windows Anda akan mengubah aplikasi default yang dikaitkan dengan jenis file itu. File kemudian mengambil ikon aplikasi itu.
MrWhite
12
@ w3d: Dia tidak menggunakan MAC, dia menggunakan Mac.
Wuffers

Jawaban:

41

Ikon untuk tipe file ditangani oleh Launch Services (layanan yang menentukan, di antaranya, aplikasi mana yang menangani tipe file). Ikon file selalu disediakan oleh aplikasi yang menangani pembukaan file secara default. Dengan cara ini, misalnya Pratinjau menyediakan ikon PDF secara default, dan ikon PNG, tetapi jika Anda mengubah semua file PNG untuk dibuka menggunakan Pixelmator, file-file ini mendapatkan ikon gaya Pixelmator sesudahnya.

Yang perlu Anda lakukan adalah menambahkan definisi tipe file Anda ke aplikasi yang membukanya secara default, atau membuat aplikasi "dummy" Anda sendiri untuk jenis file tersebut .


Sebagai contoh, sistem saya belum tahu .scala, dan saya ingin TextMatemenanganinya.

Pertama, saya Tampilkan Isi Paket dari TextMate.app, menavigasi ke Contents/dan terbuka Info.plist, baik dengan editor teks, atau Property List Editor, bagian dari alat pengembang Apple.

TextMate menggunakan format yang tidak biasa untuk Info.plist(biasanya biner atau XML), kutipan yang terlihat seperti ini:

CFBundleDocumentTypes = (
    {   CFBundleTypeName = "ADA source";
        CFBundleTypeExtensions = (adb, ads); 
        CFBundleTypeIconFile = ADA; 
    },

Kunci induk CFBundleDocumentTypesadalah yang kita inginkan. Elemen anak pertama dari itu, terlampir dalam kurung kurawal, berisi definisi tipe file, lengkap dengan nama (untuk kolom tipe file di Finder), ekstensi file, dan nama file ikon ( ADAuntuk TextMate.app/Contents/Resources/ADA.icns).

Untuk mendukung .scala, kita perlu menambahkan elemen saudara yang mirip dengan yang di atas, di bawah elemen induk yang sama CFBundleDocumentTypes:

CFBundleDocumentTypes = (
    {   CFBundleTypeName = "ADA source";
        CFBundleTypeExtensions = (adb, ads); 
        CFBundleTypeIconFile = ADA; 
    },
    {   CFBundleTypeName = "Scala source";
        CFBundleTypeExtensions = (scala); 
        CFBundleTypeIconFile = ADA; 
    },

Demi kesederhanaan, saya menggunakan file ikon yang sama, tetapi kita dapat membuatnya sendiri, menyalinnya TextMate.app/Contents/Resources/SCALA.icnsdan merujuknya seperti SCALApada Info.plist.

Sekarang, tutup TextMate jika sedang berjalan, pindahkan aplikasi TextMate.appke folder lain, dan buka lagi. Tutup, dan gerakkan kembali, lalu buka lagi. Ini dilakukan agar Layanan Peluncuran mengambil perubahan yang Info.plistbaru saja kami lakukan.

Hasilnya terlihat seperti ini (ingat, kami menggunakan kembali ikon TextMate Ada untuk .scala):

teks alternatif

Jika Anda tidak ingin mengaitkan aplikasi untuk membuka .scalafile (tidak bisa membayangkan alasannya, tetapi ada cara untuk melakukan ini): Ubah penambahan file ke yang berikut ini:

    {   CFBundleTypeName = "Scala source";
        CFBundleTypeExtensions = (scala); 
        CFBundleTypeIconFile = ADA; 
        CFBundleTypeRole = "None";
    },

Sekarang, aplikasi mendeklarasikan jenis file, tetapi memberitahu sistem bahwa ia tidak tahu cara menanganinya (Apple memberikan contoh Finder yang menyatakan jenis font, meskipun tidak dapat membukanya sendiri).

* Perhatikan bahwa setiap penugasan aplikasi permanen untuk jenis file menimpa ikon, mungkin jenis "dokumen tidak dikenal".


Jika Anda sudah memiliki aplikasi yang dikaitkan .scala, dan hanya ingin mengubah ikon file tanpa mengubah aplikasi yang terkait:

Buka aplikasi Info.plist, cari entri jenis file CFBundleDocumentTypes, dan dapatkan CFBundleTypeIconFile. Ubah file ini .../Contents/Resources/dan itu harus tercermin dalam Finder segera sesudahnya.


Informasi bonus:

Bagaimana mengubah ikon dokumen atau folder tunggal menjadi file gambar

Misalkan Anda memiliki gambar ~/Desktop/test.pngyang ingin Anda gunakan ikon (ini adalah tangkapan layar yang digunakan di atas untuk menggambarkan .scalaperubahan ikon / TextMate / Ada.

Buka /Applications/Utilities/Terminal.appdan masukkan:

sips -i ~/Desktop/test.png

Ini akan mengubah test.pngikon file menjadi gambarnya. Karena saya menikmati rekursi, mari kita coba ini:

Sebelumnya, pngikon Pratinjau polos (pratinjau gambar dinonaktifkan):

teks alternatif

Setelah itu, file gambar itu sendiri adalah pratinjaunya:

teks alternatif

Sekarang kita dapat membuka dialog Dapatkan Info file , klik ikon dokumen yang diinginkan, masa depan di kiri atas, Cmd-Cuntuk menyalinnya, buka dialog Dapatkan info file dokumen , klik ikon dokumen yang tidak diinginkan, dokumen saat ini di kiri atas, dan Cmd-Vuntuk menempelkan ikon yang kita inginkan.


Atau, Anda dapat membuka file gambar yang ingin Anda gunakan sebagai ikon di Pratinjau, Cmd-Auntuk memilih semua, Cmd-Cuntuk menyalin gambar ke clipboard. Kemudian buka dialog Dapatkan info dokumen target , pilih ikon untuk berubah di kiri atas, dan Cmd-Vuntuk menempelkan gambar di atasnya.

Daniel Beck
sumber
2
Satu hal yang perlu diverifikasi: apakah ini membatalkan tanda tangan digital aplikasi? codesign --verify --verbose /Applications/TextMate.appatau sesuatu yang sama. Jika tidak valid, maka jangan lakukan ini untuk aplikasi yang membutuhkan pengecualian di firewall, atau perlu Keychain. Saya tidak yakin apa lagi yang bisa menjadi buruk dengan mengacaukan tanda tangan. (+1 untuk detail!)
Arjan
1
Edit BAH, saya membaca skim pertama kali dan tidak melihat metode alternatif Anda untuk memaksa pembaruan LS. meh, FWIW: Hanya satu hal setelah mengubah aplikasi (atau bundel / paket) Info.plist: Anda mungkin perlu ke touchtingkat root bundel untuk memperbarui tanggal modifikasinya. Kemudian di Finder, hapus pilihan dan pilih kembali aplikasi / bundel / paket dan ketika pemberitahuan tanggal modifikasi lebih lambat dari informasi yang di-cache dalam database Layanan Peluncuran, itu akan mendaftar ulang, sehingga mengenali setiap perubahan kamu sudah membuat.
NSGod
1
@ Arjan Anda ada benarnya. Sayangnya,, TextMate.app: code object is not signeddan saya tidak ingin melalui itu lagi. Saya curiga ini masalah nyata, saya tidak memikirkannya. Sunting : Setelah dipikir-pikir, pintasan keyboard khusus juga disimpan di Info.plist. Jadi itu mungkin bukan masalah, jika tidak. Satu-satunya masalah mungkin adalah penambahan file ikon tambahan dalam bundel aplikasi.
Daniel Beck
1
Saya menggunakan metode yang sama persis (meskipun membuat perubahan dalam xml Info.plist Sublime Text). Akibatnya, asosiasi file berfungsi, tetapi ini tidak mengubah ikon untuk file terkait. Adakah ide mengapa ini tidak berhasil?
gfrigon
2
Sedikit terlambat ke pesta, tapi saya harus setuju dengan @Arjan. Jika Anda memiliki aplikasi yang ditandatangani kode, seperti katakan, oh, saya tidak tahu, ... Xcode ... itu sebenarnya akan memberi tahu Anda bahwa aplikasi tersebut rusak dan untuk menghapusnya dan mengunduh ulang dari App Store. Yang saya benar-benar tidak suka adalah bagaimana aplikasi seperti Enthought Canopy membajak semua ikon ekstensi untuk mereka sendiri. Apple benar-benar harus memilikinya ketika Anda mengatur editor default untuk jenis file yang masuk sistem dan membuat semua perubahan yang diperlukan untuk hal-hal seperti asosiasi aplikasi.
AMR
1

Anda perlu mengganti file ICNS di dalam program yang ditetapkan sebagai program default untuk jenis file tertentu.

1 - Buat gambar untuk ikon yang diinginkan, lalu simpan sebagai tipe file png (png mendukung transparansi).

2 - Konversi file png ke filetype icns (FastIcns cukup bagus dan gratis).

3 - Klik CMD atau klik kanan aplikasi yang ditetapkan sebagai aplikasi default untuk tipe file tertentu, lalu pilih tampilkan konten paket.

4 - Cari file icns yang ditunjuk oleh aplikasi sebagai ikon untuk tipe file spesifik, mungkin akan ada dalam folder bernama Resources.

5 - Beri nama file icns yang Anda buat, nama file yang persis sama dengan yang ingin Anda ganti.

6 - Salin dan tempel, atau seret dan jatuhkan file icns baru yang Anda buat ke folder di mana folder yang ingin Anda ganti berada, dan pilih ganti ketika diberi opsi.

7 - Anda selesai! Semua ikon untuk tipe file itu telah diganti dengan ikon yang diinginkan baru.

daporterfizzle
sumber
Versi OSX mana yang terkait dengan jawaban ini ... cukup dengan waktu mencapnya ketika metode itu mau tidak mau berubah.
JoshP
0

Cara saya selalu melakukan ini adalah menemukan file dengan ekstensi itu, klik kanan »Dapatkan Info, atau Command-i, dan itu akan menarik Info Panel. Di bagian atas Anda melihat ikon yang saat ini digunakan untuk gambar. Anda dapat menyeret file gambar ke yang itu untuk mengubahnya, atau jika Anda menyalin gambar, Anda dapat mengklik gambar yang ingin Anda ubah dan lakukan tempel untuk mengubahnya.

jakehschwartz
sumber
Lihat juga gambar di Bagaimana saya bisa mengubah ikon aplikasi di Mac OS X? , dan perhatikan bahwa gambar apa pun yang dapat Anda buka di Pratinjau dapat digunakan sebagai ikon, dengan membukanya di Pratinjau, memilihnya, dan menyalinnya menggunakan Command-C. Itu akan menempatkan gambar di clipboard yang menyertakan format untuk digunakan sebagai ikon juga. Kemudian pilih ikon yang ada, dan rekatkan clipboard menggunakan Command-V.
Arjan
3
Ini tidak berfungsi. Ketika saya menyeret file .PNG ke gambar pada layar info saya mendapatkan ikon PNG daripada gambar di PNG. Dan itu mengubah file spesifik dan tidak semua file dengan ekstensi yang sama di seluruh sistem.
Eran Kampf