Como definir um ícone para um tipo de arquivo no Mac?


42

Como definir um ícone para alguns tipos de arquivo em todo o sistema?

Por exemplo, tenho arquivos de texto que terminam com a extensão .scala e desejo associar um ícone a esses arquivos em todo o sistema e a qualquer arquivo recém-criado dessa extensão.

Obrigado.


Só notei que você é um MAC ... mas, de qualquer maneira, no Windows, você alteraria o aplicativo padrão associado a esse tipo de arquivo. O arquivo assume o ícone desse aplicativo.
MrWhite

12
@ w3d: Ele não está em um MAC, ele está em um Mac.
Wuffers

Respostas:


41

Ícones para tipos de arquivo são manipulados pelo Launch Services (o serviço que determina, entre outras coisas, qual aplicativo manipula um tipo de arquivo). O ícone do arquivo é sempre fornecido pelo aplicativo que gerencia a abertura de um arquivo por padrão. Dessa forma, por exemplo, a Visualização fornece ícones PDF por padrão e ícones PNG, mas se você alterar todos os arquivos PNG para abrir usando o Pixelmator, esses arquivos obterão um ícone no estilo Pixelmator posteriormente.

O que você precisa fazer é adicionar sua definição de tipo de arquivo ao aplicativo que a abre por padrão ou criar seu próprio aplicativo "fictício" para o tipo de arquivo .


Como exemplo, meu sistema ainda não conhece .scalae quero TextMatelidar com isso.

Primeiro, mostro o conteúdo do pacoteTextMate.app , navego Contents/e abro Info.plist, com um editor de texto ou Property List Editorparte das ferramentas de desenvolvedor da Apple.

O TextMate usa um formato incomum para Info.plist(geralmente é binário ou XML), cujo trecho se parece com isso:

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

A chave dos pais CFBundleDocumentTypesé o que queremos. O primeiro elemento filho dele, entre chaves, contém uma definição de tipo de arquivo, completa com nome (para a coluna de tipo de arquivo no Finder), extensões de arquivo e o nome do arquivo de ícone ( ADApara TextMate.app/Contents/Resources/ADA.icns).

Para dar suporte .scala, precisamos adicionar um elemento irmão semelhante ao acima, sob o mesmo elemento pai CFBundleDocumentTypes:

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

Por uma questão de simplicidade, estou usando o mesmo arquivo de ícone, mas podemos criar um nós mesmos, copiá-lo TextMate.app/Contents/Resources/SCALA.icnse consultá-lo como SCALAem Info.plist.

Agora, feche o TextMate, se estiver em execução, mova o aplicativo TextMate.apppara uma pasta diferente e abra-o novamente. Feche e mova-o para trás, depois abra-o novamente. Isso é feito para que o Launch Services capte as alterações Info.plistque acabamos de executar.

O resultado é semelhante a este (lembre-se, reutilizamos o ícone TextMate Ada para .scala):

texto alternativo

Se você não deseja associar um aplicativo a abrir .scalaarquivos (não consegue imaginar o porquê, mas há uma maneira de fazer isso): Altere as adições ao arquivo para o seguinte:

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

Agora, o aplicativo declara o tipo de arquivo, mas informa ao sistema que ele não sabe como manipulá-lo (a Apple fornece o exemplo do Finder que declara os tipos de fonte, embora não possa abri-los).

* Observe que qualquer atribuição permanente de aplicativo ao tipo de arquivo substitui o ícone, provavelmente do tipo "documento desconhecido".


Se você já possui um aplicativo associado .scalae deseja alterar o ícone do arquivo sem alterar o aplicativo associado:

Abra o aplicativo Info.plist, procure a entrada do tipo de arquivo CFBundleDocumentTypese obtenha o CFBundleTypeIconFile. Modifique este arquivo .../Contents/Resources/e ele deve ser refletido no Finder logo depois.


Informações sobre bônus:

Como alterar o ícone de um único documento ou pasta para um arquivo de imagem

Suponha que você tenha uma imagem na ~/Desktop/test.pngqual deseja usar um ícone (é a captura de tela usada acima para ilustrar a .scalaalteração do ícone / TextMate / Ada.

Abra /Applications/Utilities/Terminal.appe digite:

sips -i ~/Desktop/test.png

Isso mudará o test.pngícone do arquivo para sua imagem. Desde que eu gosto de recursão, vamos tentar o seguinte:

Antes, o pngícone de visualização simples (a visualização da imagem está desativada):

texto alternativo

Depois, o próprio arquivo de imagem é sua visualização:

texto alternativo

Agora podemos abrir a caixa de diálogo Obter informações do arquivo , clicar no ícone de documento futuro desejado no canto superior esquerdo, Cmd-Cpara copiá-lo, abrir a caixa de diálogo Obter informações do arquivo de documento , clicar no ícone de documento atual indesejado no canto superior esquerdo e Cmd-Vcolar o ícone que queremos.


Como alternativa, você pode abrir o arquivo de imagem que deseja usar como ícone na Visualização, Cmd-Apara selecionar tudo, Cmd-Cpara copiar a imagem para a área de transferência. Em seguida, abra a caixa de diálogo Obter informações do documento de destino , selecione o ícone para alterar no canto superior esquerdo e Cmd-Vcole a imagem sobre ele.


2
Uma coisa a verificar: isso invalida a assinatura digital do aplicativo? codesign --verify --verbose /Applications/TextMate.appou algo parecido. Se invalidado, não faça isso para aplicativos que precisam de exceções no firewall ou precisam de chaveiro. Não tenho certeza do que mais poderia dar errado ao mexer na assinatura. (+1 para detalhes!)
Arjan

11
Edit BAH, eu olhei pela primeira vez e não vi seu método alternativo para forçar uma atualização do LS. meh, FWIW: Apenas uma coisa após alterar o Info.plist de um aplicativo (ou qualquer pacote / pacote): você provavelmente precisará touchdo nível raiz do pacote para atualizar sua data de modificação. Em seguida, no Finder, desmarque e selecione novamente o aplicativo / pacote configurável / pacote e, quando perceber que a data da modificação é posterior à das informações armazenadas em cache no banco de dados dos Serviços de Ativação, o registrará novamente, reconhecendo assim quaisquer alterações. você fez.
NSGod

11
@ Arjan Você tem razão. Infelizmente, TextMate.app: code object is not signede não quero passar por isso novamente. Eu suspeito que é um problema real, eu não pensei nisso. Editar : Pensando bem, os atalhos de teclado personalizados também são armazenados Info.plist. Portanto, isso pode não ser realmente um problema, se não for. O único problema pode ser a adição de um arquivo de ícone adicional ao pacote de aplicativos.
Daniel Beck

11
Eu usei exatamente o mesmo método (apesar de fazer as alterações no xml Info.plist do Sublime Text). Como resultado, a associação do arquivo funcionou, mas isso não mudou o ícone do arquivo associado. Alguma idéia de por que isso não funcionaria?
Gfrigon

2
Um pouco atrasado para a festa, mas eu tenho que concordar com @Arjan. Se você tem um aplicativo com código assinado, como digamos, oh, eu não sei, ... Xcode ... na verdade, ele diz que o aplicativo está danificado e para excluí-lo e baixá-lo novamente na App Store. O que eu realmente não gosto é como aplicativos como o Enthought Canopy sequestram todos os ícones de extensão. A Apple realmente deve ter em mente que, quando você define o editor padrão para um tipo de arquivo em que o sistema entra e faz todas as alterações necessárias em coisas como associação de aplicativos.
AMR

1

Você precisa substituir o arquivo ICNS dentro do programa designado como o programa padrão para o tipo de arquivo específico.

1 - Crie uma imagem para o ícone desejado e salve como um tipo de arquivo png (o png suporta a transparência).

2 - Converta o arquivo png em um tipo de arquivo icns (o FastIcns é ótimo e gratuito).

3 - Clique no CMD ou clique com o botão direito do mouse no aplicativo definido como o aplicativo padrão para o tipo de arquivo específico e selecione mostrar o conteúdo do pacote.

4 - Procure o arquivo icns que o aplicativo está designando como ícone para o tipo de arquivo específico, provavelmente estará em uma pasta chamada Recursos.

5 - Nomeie o arquivo icns que você criou, exatamente o mesmo nome de arquivo que você deseja substituir.

6 - Copie e cole, ou arraste e solte o novo arquivo icns que você criou na pasta onde está o arquivo que você deseja substituir e escolha substituir quando tiver a opção.

7 - Você terminou! Todos os ícones desse tipo de arquivo foram substituídos pelo novo ícone desejado.


A qual versão do OSX essa resposta se refere ... apenas para marcar o tempo para quando o método inevitavelmente muda.
21712 JoshP

0

O modo como sempre procuro isso é encontrar um arquivo com essa extensão, clique com o botão direito do mouse em »Obter Informações ou Command-i, e isso abrirá o Painel de Informações. Na parte superior, veja o ícone atualmente usado para a imagem. Você pode arrastar um arquivo de imagem para aquele para alterá-lo ou, se você copiou a imagem, pode clicar na imagem que deseja alterar e colar para alterá-la.


Consulte também a imagem em Como posso alterar o ícone de um aplicativo no Mac OS X? e observe que qualquer imagem que você pode abrir na Visualização pode ser usada como um ícone, abrindo-a na Visualização, selecionando-a e copiando-a usando o Comando-C. Isso colocará uma imagem na área de transferência que inclui um formato para uso como ícone. Em seguida, selecione o ícone existente e cole a área de transferência usando o Command-V.
Arjan

3
Isso não funciona. Quando arrasto um arquivo .PNG para a imagem na tela de informações, obtenho o ícone PNG em vez da imagem no PNG. E altera o arquivo específico e nem todos os arquivos com a mesma extensão em todo o sistema.
Eran Kampf
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.