วิธีการตั้งค่าไอคอนสำหรับประเภทไฟล์บน Mac


42

วิธีการตั้งค่าไอคอนสำหรับไฟล์บางประเภทคิดว่าทั้งระบบ?

ตัวอย่างเช่นฉันมีไฟล์ข้อความที่ลงท้ายด้วย. scala extension และฉันต้องการเชื่อมโยงไอคอนสำหรับไฟล์นั้นผ่านระบบทั้งหมดและสำหรับไฟล์ที่สร้างขึ้นใหม่ของส่วนขยายนี้

ขอบคุณ


เพิ่งสังเกตเห็นว่าคุณเป็น MAC ... แต่อย่างไรก็ตามใน Windows คุณจะเปลี่ยนแอปพลิเคชันเริ่มต้นที่เชื่อมโยงกับไฟล์ประเภทนั้น ไฟล์จะปรากฏบนไอคอนของแอปพลิเคชันนั้น
MrWhite

12
@ w3d: เขาไม่ได้อยู่บน MAC เขาอยู่บน Mac
Wuffers

คำตอบ:


41

ไอคอนสำหรับประเภทไฟล์ได้รับการจัดการโดย Launch Services (บริการกำหนดเหนือสิ่งอื่นใดซึ่งแอปพลิเคชันจัดการกับชนิดไฟล์) ไอคอนไฟล์มีให้โดยการจัดการแอปพลิเคชันการเปิดไฟล์ตามค่าเริ่มต้นเสมอ วิธีนี้เช่นดูตัวอย่างจะมีไอคอน PDF เป็นค่าเริ่มต้นและไอคอน PNG แต่หากคุณเปลี่ยนไฟล์ PNG ทั้งหมดเพื่อเปิดโดยใช้ Pixelmator แทนไฟล์เหล่านี้จะได้รับไอคอนสไตล์ Pixelmator หลังจากนั้น

สิ่งที่คุณต้องทำคือการเพิ่มการกำหนดประเภทไฟล์ของคุณไปยังโปรแกรมประยุกต์ที่เปิดได้โดยเริ่มต้นหรือสร้างเอง "จำลอง" แอพลิเคชันของคุณสำหรับประเภทของไฟล์


ตัวอย่างเช่นระบบของฉันยังไม่ทราบ.scalaและฉันต้องการTextMateจัดการกับมัน

ครั้งแรกผมแสดงบรรจุภัณฑ์ของTextMate.appนำทางไปContents/และเปิดInfo.plistทั้งที่มีโปรแกรมแก้ไขข้อความหรือProperty List Editorส่วนหนึ่งของแอปเปิ้ลเครื่องมือสำหรับนักพัฒนา

TextMate ใช้รูปแบบที่ผิดปกติสำหรับInfo.plist(โดยปกติคือไบนารีหรือ XML) ข้อความที่ตัดตอนมาซึ่งมีลักษณะดังนี้:

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

คีย์หลักCFBundleDocumentTypesคือสิ่งที่เราต้องการ อิลิเมนต์ลูกแรกขององค์ประกอบนั้นล้อมรอบด้วยเครื่องหมายปีกกาประกอบด้วยคำจำกัดความชนิดไฟล์พร้อมชื่อ (สำหรับคอลัมน์ประเภทไฟล์ใน Finder) นามสกุลไฟล์และชื่อไฟล์ไอคอน ( ADAสำหรับTextMate.app/Contents/Resources/ADA.icns)

เพื่อรองรับ.scalaเราจำเป็นต้องเพิ่มองค์ประกอบพี่น้องคล้ายกับองค์ประกอบด้านบนภายใต้องค์ประกอบหลักเดียวกันCFBundleDocumentTypes:

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

เพื่อประโยชน์ของความเรียบง่ายผมใช้ไฟล์ไอคอนเดียวกัน แต่เราสามารถสร้างตัวเองคัดลอกไปTextMate.app/Contents/Resources/SCALA.icnsและเรียกมันว่าในSCALAInfo.plist

ตอนนี้ให้ปิด TextMate หากใช้งานอยู่ย้ายแอปพลิเคชั่นTextMate.appไปยังโฟลเดอร์อื่นแล้วเปิดใหม่ ปิดแล้วเลื่อนกลับจากนั้นเปิดอีกครั้ง สิ่งนี้จะทำเพื่อเปิดบริการรับการเปลี่ยนแปลงที่Info.plistเราเพิ่งดำเนินการ

ผลลัพธ์จะมีลักษณะเช่นนี้ (โปรดจำไว้ว่าเราใช้ไอคอน TextMate Ada ซ้ำสำหรับ.scala):

ข้อความแสดงแทน

หากคุณไม่ต้องการเชื่อมโยงแอปพลิเคชันเพื่อเปิด.scalaไฟล์ (ไม่สามารถจินตนาการได้ว่าทำไม แต่มีวิธีการทำเช่นนี้): เปลี่ยนการเพิ่มไปยังไฟล์เป็นต่อไปนี้:

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

ตอนนี้แอปพลิเคชั่นจะประกาศประเภทไฟล์ แต่บอกระบบว่าไม่ทราบวิธีจัดการ (แอปเปิ้ลให้ตัวอย่างของ 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วาง ไอคอนที่เราต้องการ


หรือคุณสามารถเปิดไฟล์รูปภาพที่คุณต้องการใช้เป็นไอคอนใน Preview Cmd-Aเพื่อเลือกทั้งหมดCmd-Cเพื่อคัดลอกรูปภาพไปยังคลิปบอร์ด จากนั้นเปิดไดอะล็อกGet Infoของเอกสารเป้าหมายเลือกไอคอนเพื่อเปลี่ยนที่มุมบนซ้ายและCmd-Vวางภาพเหนือ


2
มีสิ่งหนึ่งที่ต้องตรวจสอบ: สิ่งนี้ทำให้ลายเซ็นดิจิทัลของแอปพลิเคชั่นใช้ไม่ได้หรือไม่ codesign --verify --verbose /Applications/TextMate.appหรืออะไรที่เหมือนกัน หากไม่ถูกต้องให้ทำเช่นนี้กับแอปพลิเคชันที่ต้องการข้อยกเว้นในไฟร์วอลล์หรือต้องการ Keychain ฉันไม่แน่ใจว่าสิ่งใดที่จะแย่ไปกว่านั้นโดยทำตัวยุ่งกับลายเซ็น (+1 สำหรับรายละเอียด!)
Arjan

1
แก้ไข BAH ฉันอ่านมันเป็นครั้งแรกและไม่เห็นวิธีอื่นในการบังคับให้อัปเดต LS meh, FWIW: เพียงสิ่งเดียวหลังจากเปลี่ยน Info.plist ของแอปพลิเคชัน (หรือชุด / แพ็คเกจใด ๆ ): คุณอาจต้องtouchใช้ระดับรูทของบันเดิลเพื่ออัปเดตวันที่แก้ไข จากนั้นใน Finder ให้ยกเลิกการเลือกและเลือกแอปพลิเคชั่น / บันเดิล / แพ็คเกจอีกครั้งและเมื่อพบว่าวันที่แก้ไขนั้นช้ากว่าข้อมูลแคชในฐานข้อมูล Launch Services มันจะลงทะเบียนอีกครั้งเพื่อรับรู้การเปลี่ยนแปลงใด ๆ คุณได้ทำ
NSGod

1
@Arjan คุณมีจุดมี น่าเสียดายที่TextMate.app: code object is not signedฉันไม่ต้องการทำสิ่งนั้นอีก ฉันคิดว่ามันเป็นปัญหาจริง แต่ฉันไม่ได้คิด แก้ไข : ในความคิดที่สองแป้นพิมพ์ลัดแบบกำหนดเองจะถูกจัดเก็บInfo.plistด้วยเช่นกัน นั่นอาจไม่ใช่ปัญหาจริง ๆ ถ้าสิ่งนั้นไม่ใช่ ปัญหาเดียวอาจเป็นการเพิ่มไฟล์ไอคอนเพิ่มเติมภายในชุดแอป
Daniel Beck

1
ฉันใช้วิธีการเดียวกันแน่นอน (แม้ว่าการเปลี่ยนแปลงใน Infolplist xml ของ Sublime Text) ดังนั้นการเชื่อมโยงไฟล์ใช้งานได้ แต่สิ่งนี้ไม่ได้เปลี่ยนไอคอนสำหรับไฟล์ที่เกี่ยวข้อง ความคิดใด ๆ ที่ว่าทำไมมันถึงไม่ทำงาน
gfrigon

2
สายไปงานเลี้ยงเล็กน้อย แต่ฉันต้องเห็นด้วยกับ @Arjan หากคุณมีแอพที่เซ็นชื่อรหัสเช่นพูดโอ้ฉันไม่รู้ ... Xcode ... อันที่จริงแล้วมันจะบอกคุณว่าแอพนั้นเสียหายและจะลบมันแล้วดาวน์โหลดมันใหม่จาก App Store สิ่งที่ฉันไม่ชอบคือแอพอย่าง EnAsiat Canopy จี้ไอคอนส่วนขยายทั้งหมดด้วยตนเอง Apple ควรมีไว้ให้เมื่อคุณตั้งค่าตัวแก้ไขเริ่มต้นสำหรับประเภทไฟล์ที่ระบบเข้าใช้และทำการเปลี่ยนแปลงที่จำเป็นทั้งหมดในสิ่งต่าง ๆ เช่นการเชื่อมโยงแอพ
AMR

1

คุณต้องแทนที่ไฟล์ ICNS ภายในโปรแกรมที่กำหนดให้เป็นโปรแกรมเริ่มต้นสำหรับประเภทไฟล์เฉพาะ

1 - สร้างภาพสำหรับไอคอนที่ต้องการจากนั้นบันทึกเป็นไฟล์ png (png รองรับความโปร่งใส)

2 - แปลงไฟล์ png เป็นประเภทไฟล์ icns (FastIcns นั้นยอดเยี่ยมมากและฟรี)

3 - คลิก CMD หรือคลิกขวาที่แอปพลิเคชันที่ตั้งค่าเป็นแอปเริ่มต้นสำหรับประเภทไฟล์เฉพาะจากนั้นเลือกแสดงเนื้อหาของแพ็คเกจ

4 - มองหาไฟล์ icns ที่แอปพลิเคชันกำหนดให้เป็นไอคอนสำหรับประเภทไฟล์เฉพาะมันอาจจะอยู่ในโฟลเดอร์ชื่อทรัพยากร

5 - ตั้งชื่อไฟล์ icns ที่คุณสร้างชื่อไฟล์เดียวกับที่คุณต้องการแทนที่

6 - คัดลอกและวางหรือลากและวางไฟล์ icns ใหม่ที่คุณสร้างไว้ในโฟลเดอร์ที่ไฟล์ที่คุณต้องการแทนที่นั้นอยู่และเลือกแทนที่เมื่อได้รับตัวเลือก

7 - เสร็จแล้ว! ไอคอนทั้งหมดสำหรับประเภทไฟล์นั้นถูกแทนที่ด้วยไอคอนใหม่ที่ต้องการ


OSX รุ่นใดที่คำตอบนี้เกี่ยวข้องกับ ... เพียงแค่ประทับเวลาเมื่อวิธีการเปลี่ยนแปลงอย่างหลีกเลี่ยงไม่ได้
JoshP

0

วิธีที่ฉันทำเกี่ยวกับเรื่องนี้คือการหาไฟล์ที่มีนามสกุลนั้นคลิกขวา»รับข้อมูลหรือ Command-i จากนั้นจะดึงแผงข้อมูลขึ้นมา ที่ด้านบนคุณจะเห็นไอคอนที่ใช้สำหรับภาพในปัจจุบัน คุณสามารถลากไฟล์รูปภาพไปยังไฟล์นั้นเพื่อเปลี่ยนหรือถ้าคุณคัดลอกรูปภาพคุณสามารถคลิกที่รูปภาพที่คุณต้องการเปลี่ยนและทำการวางเพื่อเปลี่ยนแปลง


ดูรูปภาพที่ฉันจะเปลี่ยนไอคอนแอปพลิเคชันใน Mac OS X ได้อย่างไร และโปรดทราบว่าภาพใด ๆ ที่คุณสามารถเปิดได้ในหน้าตัวอย่างสามารถใช้เป็นไอคอนได้โดยเปิดในภาพตัวอย่างเลือกและคัดลอกภาพโดยใช้ Command-C ที่จะใส่รูปภาพลงในคลิปบอร์ดที่มีรูปแบบสำหรับใช้เป็นไอคอนเช่นกัน จากนั้นเลือกไอคอนที่มีอยู่แล้ววางคลิปบอร์ดโดยใช้ Command-V
Arjan

3
มันใช้งานไม่ได้ เมื่อฉันลากไฟล์. PNG ไปที่ภาพบนหน้าจอข้อมูลฉันจะได้รับไอคอน PNG แทนภาพใน PNG และมันจะเปลี่ยนไฟล์เฉพาะและไม่ใช่ไฟล์ทั้งหมดที่มีนามสกุลเดียวกันตลอดทั้งระบบ
Eran Kampf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.