Mac'te bir dosya türü için simge nasıl ayarlanır?


42

Bazı dosya türleri için bir simge nasıl ayarlanır tüm sistem düşündüm ?

Örneğin, .scala uzantısıyla biten metin dosyalarım var ve bu dosyalar için tüm sistemi ve bu uzantının yeni oluşturulan dosyaları için bir simgeyi ilişkilendirmek istiyorum.

Teşekkürler.


Bir MAC olduğunuzu fark ettim ... ama yine de, Windows’ta bu dosya türüyle ilişkilendirilmiş olan varsayılan uygulamayı değiştirirsiniz. Dosya daha sonra uygulamanın simgesini alır.
MrWhite

12
@ w3d: MAC'de değil, Mac'te.
Wuffers

Yanıtlar:


41

Dosya türleri için simgeler Başlatma Hizmetleri tarafından yönetilir (diğerlerinin yanı sıra hangi uygulamanın bir dosya türünü işlediğini belirleyen hizmet). Dosya simgesi her zaman varsayılan olarak bir dosyayı açma uygulama işleme tarafından sağlanır. Bu şekilde, örneğin Önizleme varsayılan olarak PDF simgeleri ve PNG simgeleri sağlar, ancak tüm PNG dosyalarını Pixelmator kullanarak açacak şekilde değiştirirseniz, bu dosyalar daha sonra Pixelmator tarzı bir simge alır.

Yapmanız gereken , dosya türü tanımınızı varsayılan olarak onu açan uygulamaya eklemek veya dosya türü için kendi "boş" uygulamanızı oluşturmaktır .


Örnek olarak, sistemim henüz bilmiyor .scalave ben de TextMatebunun üstesinden gelmek istiyorum .

Öncelikle, bir metin editörüyle veya Apple'ın geliştirici araçlarının bir parçası olan Paket İçeriğini gösterir TextMate.app, Contents/açılır veya açılır .Info.plistProperty List Editor

TextMate Info.plist, bir alıntıya benzeyen olağandışı bir biçim (genellikle ikili veya XML) kullanır :

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

Ana anahtar CFBundleDocumentTypesistediğimiz şey. Kıvrımlı parantez içine alınan ilk alt öğe, adla (Finder'da dosya türü sütunu için), dosya uzantılarını ve simge dosyasının ( ADAfor TextMate.app/Contents/Resources/ADA.icns) adını içeren bir dosya türü tanımı içerir .

Desteklemek için .scala, aynı ana öğenin altına, yukarıdakine benzer bir kardeş öğe eklememiz gerekir CFBundleDocumentTypes:

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

Sadelik uğruna, aynı simge dosyasını kullanıyorum, ancak kendimiz oluşturabilir, kopyalayabilir TextMate.app/Contents/Resources/SCALA.icnsve SCALAiçinde olduğu gibi başvurabiliriz Info.plist.

Şimdi çalışıyorsa, TextMate'i kapatın, uygulamayı TextMate.appfarklı bir klasöre taşıyın ve tekrar açın. Kapatın ve geri alın, sonra tekrar açın. Bu, Launch Services'ın yeni Info.plistyaptığımız değişiklikleri toplaması için yapılır.

Sonuç şöyle görünür (unutmayın, TextMate Ada simgesini yeniden kullandık .scala):

alt metin

.scalaDosyaları açmak için bir uygulamayı ilişkilendirmek istemiyorsanız (nedenini hayal edemiyorum, ancak bunu yapmanın bir yolu var): Dosyaya yapılan eklemeleri aşağıdaki gibi değiştirin:

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

Şimdi, uygulama dosya türünü bildirir, ancak sisteme nasıl işleneceğini bilmediğini söyler (Apple, kendisini açmasa da, font türlerini bildiren Finder örneğini verir).

* Dosya türüne yapılan kalıcı bir uygulama atamasının, muhtemelen "bilinmeyen belge" türündeki simgeyi geçersiz kıldığını unutmayın.


Zaten ilişkili bir uygulamanız varsa .scalave ilişkili uygulamayı değiştirmeden sadece dosya simgesini değiştirmek istiyorsanız:

Uygulamanın içinden açın Info.plist, dosya türü girişini arayın CFBundleDocumentTypesve onu alın CFBundleTypeIconFile. Bu dosyayı değiştirin .../Contents/Resources/ve kısa süre sonra Finder'a yansıtılmalıdır.


Bonus bilgisi:

Tek bir belgenin veya klasörün simgesini bir görüntü dosyasına nasıl değiştirebilirim?

~/Desktop/test.pngBir simge kullanmak istediğiniz bir görüntünüz olduğunu varsayalım (yukarıda .scala/ TextMate / Ada simgesi değişimini göstermek için kullanılan ekran görüntüsüdür) .

/Applications/Utilities/Terminal.appve gir:

sips -i ~/Desktop/test.png

Bu, test.pngdosya simgesini görüntüsüne değiştirecektir. Özyinelemeyi sevdiğim için, şunu deneyelim:

Öncesinde, düz Önizleme pngsimgesi (görüntü önizleme devre dışı bırakılır):

alt metin

Sonra görüntü dosyasının kendisi önizlemesidir:

alt metin

Şimdi, dosyanın Bilgi Al iletişim kutusunu açabilir, sol üstte istediğiniz, gelecekteki belge simgesini tıklayabilir, Cmd-Ckopyalamak, belge dosyasının Bilgi Al iletişim kutusunu açabilir, sol üstte istenmeyen, mevcut belge simgesine tıklayabilir Cmd-Vve İstediğimiz simge.


Alternatif olarak, görüntüyü panoya kopyalamak için Önizleme'de simge olarak kullanmak istediğiniz görüntü dosyasını Cmd-Aaçarak hepsini seçin Cmd-C. Ardından, hedef belgenin Bilgi Al iletişim kutusunu açın, üst soldaki değiştirilecek simgeyi seçin Cmd-Vve görüntüyü üzerine yapıştırın.


2
Doğrulanması gereken bir şey: bu, uygulamanın dijital imzasını geçersiz kılıyor mu? codesign --verify --verbose /Applications/TextMate.appya da benzer bir şey. Geçersiz kılınmışsa, güvenlik duvarında istisnalar gerektiren veya Anahtarlık gerektiren uygulamalar için bunu yapmayın. İmzayla uğraşarak başkasının neyin kötü gidebileceğinden emin değilim. (Detay için +1!)
Arjan

1
BAH düzenleme , ilk kez yağsız ve bir LS güncelleme zorlamak için alternatif bir yöntem görmedim. meh, FWIW: Bir uygulamanın (veya herhangi bir paket / paketin) değiştirildikten sonra sadece bir şey Info.plist: touchDeğişiklik tarihini güncellemek için muhtemelen paketin kök seviyesine ihtiyacınız olacak . Daha sonra Finder'da, uygulama / paket / paket seçimini kaldırın ve yeniden seçin ve değişiklik tarihi Başlatma Hizmetleri veritabanındaki önbellek bilgilerinden daha geç olduğunu fark ettiğinde, bunları yeniden kaydeder, böylece değişiklikleri kabul eder. sen yaptın.
NSGod,

1
@Arjan Orada bir noktaya değindin. Ne yazık ki, TextMate.app: code object is not signedve bunu tekrar yapmak istemiyorum. Bunun gerçek bir sorun olduğundan şüpheleniyorum, düşünmedim. Düzenleme : İkinci düşüncede, özel klavye kısayolları da saklanır Info.plist. Öyleyse, eğer değilse, bu aslında bir sorun olmayabilir. Tek sorun, uygulama paketine ek bir simge dosyasının eklenmesi olabilir.
Daniel Beck

1
Tam olarak aynı yöntemi kullandım (Sublime Text'in xml Info.plistinde değişiklikler yaparken). Sonuç olarak, dosya ilişkisi işe yaradı, ancak bu ilişkili dosyanın simgesini değiştirmedi. Bunun neden işe yaramayacağına dair bir fikrin var mı?
gfrigon,

2
Partiye biraz geç kaldım ama @Arjan ile aynı fikirdeyim. Bir kod imzalı bir uygulamanız varsa, söylediğiniz gibi, oh, bilmiyorum, ... Xcode ... aslında uygulamanın hasarlı olduğunu ve onu silmek ve App Store'dan yeniden indirmek olduğunu söyleyecektir. Gerçekten sevmediğim şey, Enthought Canopy gibi uygulamaların kendileri için tüm uzantı simgelerini nasıl kaçırdıkları. Apple, sistemin girdiği bir dosya türü için varsayılan düzenleyiciyi ayarladığınızda ve uygulama ilişkilendirme gibi şeylerde gerekli tüm değişiklikleri yaptığınızda gerçekten buna sahip olmalıdır.
AMR

1

Belirli bir dosya türü için varsayılan program olarak atanan programın içindeki ICNS dosyasını değiştirmeniz gerekir.

1 - İstediğiniz simge için bir resim oluşturun, sonra png dosya tipi olarak kaydedin (png şeffaflığı destekler).

2 - png dosyasını bir icns dosya tipine dönüştürün (FastIcns oldukça iyi ve ücretsiz).

3 - CMD, belirli bir dosya türü için varsayılan uygulama olarak ayarlanan uygulamaya tıklayın veya sağ tıklayın, ardından paket içeriğini göster öğesini seçin.

4 - Uygulamanın belirli bir dosya tipi için simge olarak belirttiği icns dosyasını arayın, muhtemelen Kaynaklar adlı bir klasörde olacaktır.

5 - Oluşturduğunuz icns dosyasını ve değiştirmek istediğinizle aynı dosya adını belirtin.

6 - Oluşturduğunuz yeni icns dosyasını kopyalayıp yapıştırın veya sürükleyip bırakın, değiştirmek istediğiniz dosyanın bulunduğu klasöre bırakın ve seçenek verildiğinde değiştir'i seçin.

7 - Sen bittin! Bu dosya türüne ait tüm simgeler, istenen yeni simgeyle değiştirildi.


Bu yanıtın OSX'in hangi sürümü ... ... kaçınılmaz bir şekilde değiştiği zaman için onu damgalamakla ilgilidir.
JoshP

0

Her zaman bununla ilgili yolum bu uzantıya sahip bir dosya bulmak, »Bilgi al veya Command-i öğesine sağ tıklamak ve Bilgi Panelini açmaya devam etmektir. En üstte görüntü için şu anda kullanılan simgeyi görüyorsunuz. Bir görüntü dosyasını değiştirmek için üzerine sürükleyebilir veya görüntüyü kopyaladıysanız, değiştirmek istediğiniz görüntüye tıklayıp değiştirmek için bir yapıştırma yapabilirsiniz.


Ayrıca bkz : Mac OS X'te bir uygulama simgesini nasıl değiştirebilirim? ve Önizleme'de açabileceğiniz herhangi bir görüntünün Önizleme'de açarak, seçerek ve Command-C kullanarak kopyalayarak bir simge olarak kullanılabileceğini unutmayın. Bu, bir simge olarak kullanılmak üzere bir format içeren panoya bir görüntü koyacaktır. Sonra varolan simgeyi seçin ve panoya Command-V kullanarak yapıştırın.
Arjan

3
Bu işe yaramıyor. Bir .PNG dosyasını bilgi ekranındaki görüntüye sürüklediğimde, PNG'deki görüntü yerine PNG simgesini alıyorum. Ve sistemde aynı uzantıya sahip tüm dosyaları değil, belirli dosyayı değiştirir.
Eran Kampf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.