วิธีการตั้งค่าไอคอนสำหรับไฟล์บางประเภทคิดว่าทั้งระบบ?
ตัวอย่างเช่นฉันมีไฟล์ข้อความที่ลงท้ายด้วย. scala extension และฉันต้องการเชื่อมโยงไอคอนสำหรับไฟล์นั้นผ่านระบบทั้งหมดและสำหรับไฟล์ที่สร้างขึ้นใหม่ของส่วนขยายนี้
ขอบคุณ
วิธีการตั้งค่าไอคอนสำหรับไฟล์บางประเภทคิดว่าทั้งระบบ?
ตัวอย่างเช่นฉันมีไฟล์ข้อความที่ลงท้ายด้วย. scala extension และฉันต้องการเชื่อมโยงไอคอนสำหรับไฟล์นั้นผ่านระบบทั้งหมดและสำหรับไฟล์ที่สร้างขึ้นใหม่ของส่วนขยายนี้
ขอบคุณ
คำตอบ:
ไอคอนสำหรับประเภทไฟล์ได้รับการจัดการโดย 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
และเรียกมันว่าในSCALA
Info.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
วางภาพเหนือ
codesign --verify --verbose /Applications/TextMate.app
หรืออะไรที่เหมือนกัน หากไม่ถูกต้องให้ทำเช่นนี้กับแอปพลิเคชันที่ต้องการข้อยกเว้นในไฟร์วอลล์หรือต้องการ Keychain ฉันไม่แน่ใจว่าสิ่งใดที่จะแย่ไปกว่านั้นโดยทำตัวยุ่งกับลายเซ็น (+1 สำหรับรายละเอียด!)
touch
ใช้ระดับรูทของบันเดิลเพื่ออัปเดตวันที่แก้ไข จากนั้นใน Finder ให้ยกเลิกการเลือกและเลือกแอปพลิเคชั่น / บันเดิล / แพ็คเกจอีกครั้งและเมื่อพบว่าวันที่แก้ไขนั้นช้ากว่าข้อมูลแคชในฐานข้อมูล Launch Services มันจะลงทะเบียนอีกครั้งเพื่อรับรู้การเปลี่ยนแปลงใด ๆ คุณได้ทำ
TextMate.app: code object is not signed
ฉันไม่ต้องการทำสิ่งนั้นอีก ฉันคิดว่ามันเป็นปัญหาจริง แต่ฉันไม่ได้คิด แก้ไข : ในความคิดที่สองแป้นพิมพ์ลัดแบบกำหนดเองจะถูกจัดเก็บInfo.plist
ด้วยเช่นกัน นั่นอาจไม่ใช่ปัญหาจริง ๆ ถ้าสิ่งนั้นไม่ใช่ ปัญหาเดียวอาจเป็นการเพิ่มไฟล์ไอคอนเพิ่มเติมภายในชุดแอป
คุณต้องแทนที่ไฟล์ ICNS ภายในโปรแกรมที่กำหนดให้เป็นโปรแกรมเริ่มต้นสำหรับประเภทไฟล์เฉพาะ
1 - สร้างภาพสำหรับไอคอนที่ต้องการจากนั้นบันทึกเป็นไฟล์ png (png รองรับความโปร่งใส)
2 - แปลงไฟล์ png เป็นประเภทไฟล์ icns (FastIcns นั้นยอดเยี่ยมมากและฟรี)
3 - คลิก CMD หรือคลิกขวาที่แอปพลิเคชันที่ตั้งค่าเป็นแอปเริ่มต้นสำหรับประเภทไฟล์เฉพาะจากนั้นเลือกแสดงเนื้อหาของแพ็คเกจ
4 - มองหาไฟล์ icns ที่แอปพลิเคชันกำหนดให้เป็นไอคอนสำหรับประเภทไฟล์เฉพาะมันอาจจะอยู่ในโฟลเดอร์ชื่อทรัพยากร
5 - ตั้งชื่อไฟล์ icns ที่คุณสร้างชื่อไฟล์เดียวกับที่คุณต้องการแทนที่
6 - คัดลอกและวางหรือลากและวางไฟล์ icns ใหม่ที่คุณสร้างไว้ในโฟลเดอร์ที่ไฟล์ที่คุณต้องการแทนที่นั้นอยู่และเลือกแทนที่เมื่อได้รับตัวเลือก
7 - เสร็จแล้ว! ไอคอนทั้งหมดสำหรับประเภทไฟล์นั้นถูกแทนที่ด้วยไอคอนใหม่ที่ต้องการ
วิธีที่ฉันทำเกี่ยวกับเรื่องนี้คือการหาไฟล์ที่มีนามสกุลนั้นคลิกขวา»รับข้อมูลหรือ Command-i จากนั้นจะดึงแผงข้อมูลขึ้นมา ที่ด้านบนคุณจะเห็นไอคอนที่ใช้สำหรับภาพในปัจจุบัน คุณสามารถลากไฟล์รูปภาพไปยังไฟล์นั้นเพื่อเปลี่ยนหรือถ้าคุณคัดลอกรูปภาพคุณสามารถคลิกที่รูปภาพที่คุณต้องการเปลี่ยนและทำการวางเพื่อเปลี่ยนแปลง