Executando verificação de segurança...
1

Como trocar ícone de apps no macOS e como converter .png ou .webp para um ícone de formato e tamanho válidos (.icns)

Para trocar o ícone de um app no macOS é muito simples, você pode ir para o site macOS Icons procurar e baixar um ícone já no formato e tamanho correto e aplicar ele seguindo o seguinte tutorial.

Porém muitas das vezes o ícone para o app que você deseja não existe no site anterior ou você criou um ícone próprio para o app e deseja utiliza-lo. Esse foi o meu caso, e abaixo eu conto mais sobre como desenvolvi um script que faz a conversão de qualquer arquivo .png ou .webp em escala 1:1 para o formato de ícones do macOS.

Vale a pena lembrar também que ícones no macOS não são completamente quadrados, eles possuem um pequeno arredondamento das bordas, mas que este, não incluí no meu script. Ele espera que sua imagem já tenha os cantos arredondados corretamente.

Hoje, eu quis trocar o ícone de um app no macOS por uma versão no tema claro. Parecia simples, mas eu não achava o arquivo em .icns e cada conversão que eu tentava ficava errada: às vezes enorme, às vezes minúsculo, nunca encaixava no Dock. Depois de apanhar um pouco, entendi o truque que faltava: não preencher 100% do quadrado, e sim manter o conteúdo em cerca de 86% do canvas. Abaixo deixo o passo a passo objetivo que usei e que funcionou.

O pulo do gato

  • O .icns é um pacote com vários tamanhos do mesmo ícone.
  • Se a arte ocupa 100% do quadrado, tende a parecer grande demais no Dock.
  • Resolvi usando escala de conteúdo 220/256 (aprox. 0,859375), centralizada em um canvas transparente. Ficou visualmente igual aos ícones nativos.

Pré-requisitos

  • macOS com iconutil disponível.

  • Python 3 e Pillow:

    pip3 install pillow
    
  • Uma arte quadrada em PNG ou WebP. Se não for quadrada, recorte para 1:1. Ideal ter 1024×1024 ou maior.

Script

Crie create-icon.sh:

#!/bin/bash

INPUT="$1"
OUTPUT="$2"

if [ -z "$INPUT" ] || [ -z "$OUTPUT" ]; then
    echo "Uso: $0 input.png output.icns"
    exit 1
fi

ICONSET="${OUTPUT%.icns}.iconset"
mkdir -p "$ICONSET"

python3 << EOF
from PIL import Image
import os

original = Image.open("$INPUT").convert("RGBA")
source_1024 = original.resize((1024, 1024), Image.Resampling.LANCZOS)
content_scale = 220 / 256

sizes = [(16, "icon_16x16.png"), (32, "[email protected]"), (32, "icon_32x32.png"),
         (64, "[email protected]"), (128, "icon_128x128.png"), (256, "[email protected]"),
         (256, "icon_256x256.png"), (512, "[email protected]"), (512, "icon_512x512.png"),
         (1024, "[email protected]")]

for canvas_size, filename in sizes:
    content_size = int(canvas_size * content_scale)
    padding = (canvas_size - content_size) // 2
    content_img = source_1024.resize((content_size, content_size), Image.Resampling.LANCZOS)
    canvas = Image.new("RGBA", (canvas_size, canvas_size), (0, 0, 0, 0))
    canvas.paste(content_img, (padding, padding), content_img)
    canvas.save(f"$ICONSET/{filename}", "PNG")
EOF

iconutil --convert icns "$ICONSET" --output "$OUTPUT"
rm -rf "$ICONSET"
echo "Criado $OUTPUT"

Torne executável e rode seguindo o seguinte formato: ./create-icon.sh input.png output.icns

chmod +x create-icon.sh
./create-icon.sh app-icon-25d-light.webp app-icon.icns

Por que funciona: a escala de 0,859375 cria uma margem visual. No tamanho 256 px, o padding fica perto de 18 px por lado. A base em 1024 garante nitidez quando reduzir.

Dica rápida: se não atualizar de primeira, reinicie o Dock e o Finder.

killall Dock
killall Finder

Se ainda não funcionar feche o app, remova o da dock e adicione novamente.

Ajuste fino e solução de problemas

  • Ficou grande ou pequeno no Dock
    Ajuste a variável content_scale. Teste de 0,84 a 0,90 até ficar do seu gosto.

  • Ícone borrado nos tamanhos menores
    Garanta uma base nítida em 1024×1024 e bons contrastes. Evite detalhes muito finos.

  • Quer preencher 100% do quadrado
    Substitua o trecho que calcula padding por um resize direto para canvas_size. Fica visualmente maior, eu preferi 86%.

Pronto. Foi assim que eu passei do caos de conversões para um .icns limpinho e alinhado com o visual do macOS.

Carregando publicação patrocinada...