Làm cách nào để đặt biểu tượng cho loại tệp trên Mac?


41

Làm thế nào để thiết lập một biểu tượng cho một số loại tệp nghĩ toàn bộ hệ thống?

Ví dụ: tôi có các tệp văn bản kết thúc bằng phần mở rộng .scala và tôi muốn liên kết một biểu tượng cho các tệp đó thông qua toàn bộ hệ thống và cho bất kỳ tệp nào mới được tạo của tiện ích mở rộng này.

Cảm ơn.


Chỉ cần lưu ý bạn là MAC ... nhưng dù sao, trên Windows, bạn sẽ thay đổi ứng dụng mặc định được liên kết với loại tệp đó. Các tập tin sau đó có biểu tượng của ứng dụng đó.
MrWhite

11
@ w3d: Anh ấy không dùng MAC, anh ấy dùng Mac.
Wuffers

Câu trả lời:


40

Các biểu tượng cho loại tệp được xử lý bởi Launch Services (dịch vụ xác định, trong số những thứ khác, ứng dụng nào xử lý loại tệp). Biểu tượng tệp luôn được cung cấp bởi ứng dụng xử lý mở tệp theo mặc định. Bằng cách này, ví dụ: Preview cung cấp các biểu tượng PDF theo mặc định và các biểu tượng PNG, nhưng nếu bạn thay đổi tất cả các tệp PNG để mở bằng Pixelmator thay vào đó, các tệp này sẽ có biểu tượng kiểu Pixelmator sau đó.

Những gì bạn cần làm là thêm định nghĩa loại tệp của bạn vào ứng dụng mở theo mặc định hoặc tạo ứng dụng "giả" của riêng bạn cho loại tệp .


Ví dụ, hệ thống của tôi chưa biết .scalavà tôi muốn TextMatexử lý nó.

Trước tiên, tôi Hiện Package Contents của TextMate.app, điều hướng đến Contents/và cởi mở Info.plist, hoặc với một trình soạn thảo văn bản, hoặc Property List Editor, một phần của công cụ phát triển của Apple.

TextMate sử dụng một định dạng bất thường cho Info.plist(thường là nhị phân hoặc XML), một đoạn trích trông giống như sau:

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

Khóa cha CFBundleDocumentTypeslà những gì chúng ta muốn. Phần tử con đầu tiên của nó, được đặt trong dấu ngoặc nhọn, chứa định nghĩa loại tệp, hoàn chỉnh với tên (cho cột loại tệp trong Finder), phần mở rộng tệp và tên của tệp biểu tượng ( ADAcho TextMate.app/Contents/Resources/ADA.icns).

Để hỗ trợ .scala, chúng ta cần thêm một phần tử anh chị em tương tự như phần tử ở trên, dưới cùng một phần tử cha CFBundleDocumentTypes:

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

Để đơn giản, tôi đang sử dụng cùng một tệp biểu tượng, nhưng chúng ta có thể tự tạo một tệp, sao chép nó vào TextMate.app/Contents/Resources/SCALA.icnsvà tham chiếu nó như SCALAtrong Info.plist.

Bây giờ, hãy đóng TextMate nếu nó đang chạy, di chuyển ứng dụng TextMate.appsang một thư mục khác và mở lại. Đóng nó và di chuyển nó trở lại, sau đó mở lại. Điều này được thực hiện để Launch Services chọn ra những thay đổi Info.plistmà chúng tôi vừa thực hiện.

Kết quả trông như thế này (hãy nhớ rằng chúng tôi đã sử dụng lại biểu tượng TextMate Ada cho .scala):

văn bản thay thế

Nếu bạn không muốn liên kết một ứng dụng để mở .scalatệp (không thể tưởng tượng được tại sao, nhưng có một cách để làm điều này): Thay đổi các bổ sung cho tệp thành như sau:

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

Bây giờ, ứng dụng khai báo loại tệp, nhưng nói với hệ thống rằng nó không biết cách xử lý (Apple đưa ra ví dụ về Finder khai báo các loại phông chữ, mặc dù nó không thể tự mở chúng).

* Lưu ý rằng bất kỳ sự gán ứng dụng vĩnh viễn nào cho loại tệp sẽ ghi đè biểu tượng, có thể là loại "tài liệu không xác định".


Nếu bạn đã có một ứng dụng được liên kết .scalavà chỉ muốn thay đổi biểu tượng tệp mà không thay đổi ứng dụng được liên kết:

Mở ứng dụng Info.plist, tìm mục nhập loại tệp CFBundleDocumentTypesvà lấy CFBundleTypeIconFile. Sửa đổi tệp này .../Contents/Resources/và nó sẽ được phản ánh trong Finder ngay sau đó.


Thông tin tiền thưởng:

Cách thay đổi biểu tượng của một tài liệu hoặc thư mục thành tệp hình ảnh

Giả sử bạn có một hình ảnh ~/Desktop/test.pngmà bạn muốn sử dụng một biểu tượng (đó là ảnh chụp màn hình được sử dụng ở trên để minh họa cho sự .scalathay đổi biểu tượng / TextMate / Ada.

Mở /Applications/Utilities/Terminal.appvà nhập:

sips -i ~/Desktop/test.png

Điều này sẽ thay đổi test.pngbiểu tượng tập tin thành hình ảnh của nó. Vì tôi thích đệ quy, hãy thử điều này:

Trước đó, pngbiểu tượng Xem trước đơn giản (xem trước hình ảnh bị vô hiệu hóa):

văn bản thay thế

Sau đó, tệp hình ảnh chính là bản xem trước của nó:

văn bản thay thế

Bây giờ chúng ta có thể mở hộp thoại Nhận thông tin của tệp , nhấp vào biểu tượng tài liệu tương lai mong muốn ở trên cùng bên trái, Cmd-Cđể sao chép, mở hộp thoại Nhận thông tin của tệp tài liệu , nhấp vào biểu tượng tài liệu hiện tại không mong muốn ở trên cùng bên trái và Cmd-Vđể dán biểu tượng chúng tôi muốn.


Ngoài ra, bạn có thể mở tệp hình ảnh bạn muốn sử dụng làm biểu tượng trong Bản xem trước, Cmd-Ađể chọn tất cả, Cmd-Cđể sao chép hình ảnh vào bảng tạm. Sau đó mở hộp thoại Nhận thông tin của tài liệu đích , chọn biểu tượng để thay đổi ở trên cùng bên trái và Cmd-Vđể dán hình ảnh lên trên đó.


1
Một điều cần xác minh: điều này có làm mất hiệu lực chữ ký số của ứng dụng không? codesign --verify --verbose /Applications/TextMate.apphoặc một cái gì đó giống nhau. Nếu không hợp lệ, thì đừng làm điều này cho các ứng dụng cần ngoại lệ trong tường lửa hoặc cần Keychain. Tôi không chắc điều gì khác có thể trở nên tồi tệ bằng cách làm hỏng chữ ký. (+1 để biết chi tiết!)
Arjan

1
Chỉnh sửa BAH, tôi đã đọc lướt lần đầu tiên và không thấy phương pháp thay thế của bạn để buộc cập nhật LS. meh, FWIW: Chỉ một điều sau khi thay đổi Info.plist của một ứng dụng (hoặc bất kỳ gói / gói nào): bạn có thể sẽ cần đến touchcấp gốc của gói để cập nhật ngày sửa đổi của ứng dụng. Sau đó, trong Finder, bỏ chọn và chọn lại ứng dụng / gói / gói và khi thông báo ngày sửa đổi muộn hơn thông tin được lưu trong cơ sở dữ liệu Launch Services, nó sẽ đăng ký lại, từ đó nhận ra mọi thay đổi Bạn đã thực hiện.
NSGod

1
Tôi đã sử dụng cùng một phương thức (mặc dù thực hiện các thay đổi trong xml Info.plist của Sublime Text). Kết quả là, hiệp hội tập tin đã hoạt động, nhưng điều này không thay đổi biểu tượng cho tập tin liên quan. Bất cứ ý tưởng tại sao điều này sẽ không làm việc?
gfrigon

2
Đến bữa tiệc muộn một chút, nhưng tôi phải đồng ý với @Arjan. Nếu bạn có một ứng dụng đã ký mã, như nói, ồ, tôi không biết, ... Xcode ... thực tế nó sẽ cho bạn biết rằng ứng dụng đó bị hư hại và xóa nó và tải xuống từ App Store. Điều tôi thực sự không thích là làm thế nào các ứng dụng như Enth think Canopy chiếm quyền điều khiển tất cả các biểu tượng mở rộng cho chính chúng. Apple thực sự nên biết rằng khi bạn đặt trình chỉnh sửa mặc định cho loại tệp mà hệ thống đi vào và thực hiện tất cả các thay đổi cần thiết cho những thứ như liên kết ứng dụng.
AMR

1
FWIW, trên El Capitan (OS X 10.11.1), ngay cả khi ví dụ Sublime Text được đặt làm ứng dụng mặc định để mở, ví dụ như một .cpptệp, biểu tượng Xcode được ưu tiên. Đây có thể là một số sự cố hệ thống cục bộ kỳ lạ hoặc là một lỗi khá khập khiễng trong OS X ...
Kevin Ushey

1

Bạn cần thay thế tệp ICNS bên trong chương trình được chỉ định làm chương trình mặc định cho loại tệp cụ thể.

1 - Tạo hình ảnh cho biểu tượng mong muốn, sau đó lưu dưới dạng tệp png (png hỗ trợ độ trong suốt).

2 - Chuyển đổi tệp png thành tệp icns (FastIcns khá tuyệt vời và hoàn toàn miễn phí).

3 - Nhấp chuột hoặc nhấp chuột phải vào ứng dụng được đặt làm ứng dụng mặc định cho loại tệp cụ thể, sau đó chọn hiển thị nội dung gói.

4 - Tìm tệp icns mà ứng dụng đang chỉ định làm biểu tượng cho loại tệp cụ thể, nó có thể sẽ nằm trong một thư mục có tên là Tài nguyên.

5 - Đặt tên cho tệp icns mà bạn đã tạo, cùng tên chính xác với tên tệp bạn muốn thay thế.

6 - Sao chép và dán, hoặc kéo và thả tệp icns mới mà bạn đã tạo vào thư mục chứa tệp bạn muốn thay thế và chọn thay thế khi được cung cấp tùy chọn.

7 - Bạn đã hoàn tất! Tất cả các biểu tượng cho loại tệp đó đã được thay thế bằng biểu tượng mong muốn mới.


Phiên bản nào của OSX thực hiện câu trả lời này liên quan đến ... chỉ để đóng dấu thời gian cho nó khi phương thức chắc chắn thay đổi.
JoshP

0

Cách tôi luôn làm về vấn đề này là tìm một tệp có phần mở rộng đó, nhấp chuột phải »Nhận thông tin hoặc Command-i và điều đó sẽ kéo Bảng thông tin lên. Ở đầu bạn nhìn thấy biểu tượng hiện đang được sử dụng cho hình ảnh. Bạn có thể kéo một tập tin hình ảnh vào tập tin đó để thay đổi nó, hoặc nếu bạn đã sao chép hình ảnh, bạn có thể nhấp vào hình ảnh bạn muốn thay đổi và thực hiện dán để thay đổi nó.


Xem thêm hình ảnh tại Làm cách nào tôi có thể thay đổi biểu tượng ứng dụng trong Mac OS X? và lưu ý rằng bất kỳ hình ảnh nào bạn có thể mở trong Bản xem trước đều có thể được sử dụng làm biểu tượng, bằng cách mở nó trong Bản xem trước, chọn nó và sao chép nó bằng Command-C. Điều đó sẽ đặt một hình ảnh vào bảng tạm bao gồm một định dạng để sử dụng như một biểu tượng. Sau đó chọn biểu tượng hiện có và dán bảng tạm bằng Command-V.
Arjan

2
Điều này không hoạt động. Khi tôi kéo tệp .PNG vào hình ảnh trên màn hình thông tin, tôi nhận được biểu tượng PNG thay vì hình ảnh trong PNG. Và nó thay đổi tệp cụ thể và không phải tất cả các tệp có cùng phần mở rộng trên toàn hệ thống.
Eran Kampf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.