Manipule os ícones de arquivos do Mac OS X do Automator ou da linha de comando

7

Existe uma maneira de manipular ícones em um arquivo do Mac OS X a partir do Automator ou do terminal?

No meu caso, eu quero remover ícones personalizados (isto é, o mesmo que fazer 'Get Info' e Editar- > Cortar no ícone) de um grande número de arquivos.

    
por joachim 22.04.2010 / 21:22

4 respostas

9

Eu fiz esta pergunta em 2007. Uma combinação de 3 ferramentas do OS X pode fazer isso. Você precisa de ferramentas de desenvolvimento instaladas e, em seguida, confira: / Developer / Tools / Rez, DeRez e SetFile.

Você pode usar 'sips' para dar a um arquivo de imagem um ícone personalizado de si mesmo ('sips' atua no arquivo original para que seja mais seguro trabalhar em uma cópia):

/bin/cp imagefile.jpg donorfile.jpg
/usr/bin/sips -i donorfile.jpg

Se você apenas quisesse dar a um arquivo de imagem um ícone personalizado em miniatura, você pode parar por aí.

Caso contrário, se você tiver as ferramentas "Desenvolvedor" / "Código X" instaladas, poderá usar 'DeRez' e 'Rez' para manipular os recursos para copiar o recurso 'icns' recém-criado em um arquivo:

/Developer/Tools/DeRez -only icns donorfile.jpg > tempicns.rsrc

Em seguida, copie o arquivo temporário para o recurso icns do arquivo do destinatário e configure o atributo do arquivo de ícone personalizado:

/Developer/Tools/Rez -append tempicns.rsrc -o recipientfile.xyz
/Developer/Tools/SetFile -a C recipientfile.xyz

Por fim, reinicie o "Finder" para ver as alterações:

/usr/bin/osascript -e 'tell application "Finder" to quit' -e 'delay 2' -e 'tell application "Finder" to activate'

Tópico original de perguntas e respostas: link

    
por 24.04.2010 / 12:08
3

Não tenho certeza sobre o Automator, mas é possível Cocoa usando

[[NSWorkspace sharedWorkspace] setIcon:nil
                               forFile:@"/path/to/file"
                               options:0];

ou como um script Python simples:

#!/usr/bin/python

from AppKit import NSWorkspace
import sys

for path in sys.argv[1:]:
    NSWorkspace.sharedWorkspace().setIcon_forFile_options_(None, path, 0)
    
por 22.04.2010 / 22:06
1

Obrigado pelo script python. Eu fiz uma versão para extrair o ícone como jpeg

#!/usr/bin/python
# python script that extract an icon from an OSX file and save it at jpeg

from AppKit import *
import sys

for path in sys.argv[1:]:
NSBitmapImageRep.imageRepWithData_(NSWorkspace.sharedWorkspace().iconForFile_(path).TIFFRepresentation()).representationUsingType_properties_(NSJPEGFileType, None).writeToFile_atomically_(path+".jpg", None)
    
por 11.05.2013 / 18:26
0

xattr removeria o ícone personalizado se o arquivo tiver um metadado associado a ele, pois tentei remover a metada e ela apenas removeu o ícone personalizado. No entanto, verifique se você tem outra metada associada ao arquivo além do ícone personalizado na tag com.apple.Finder . A maneira de fazer isso é:

xattr -d com.apple.Finder filename

Para mais opções:

xattr --help

Você pode verificar se o arquivo tem xattr associado para começar se você encontrar a marca @ logo após as permissões usando ls -l no arquivo. Novamente, eu não tinha nada além de um ícone personalizado associado ao arquivo e o comando acima o removeu nitidamente, talvez seu arquivo tenha mais do que apenas o ícone personalizado associado a essa tag. Eu não sou especialista em metadados.

    
por 22.08.2011 / 21:07