En Sonoma 14.5. Tengo algunas aplicaciones a las que quiero establecer un icono personalizado. Es bastante fácil de hacer en Finder: haga clic derecho en la aplicación, elija obtener información y arrastre y suelte el icono que deseo en el icono de la ventana de obtener información. Sin embargo, cuando la aplicación se actualiza, el icono vuelve al predeterminado y esto tiene que hacerse de nuevo. Obviamente quiero automatizar esto.
Intenté una aplicación llamada Pictogram pero no parece estar funcionando. No aparecen aplicaciones. Intenté usar la terminal para copiar el icono en la carpeta de recursos de la aplicación pero obtuve un permiso denegado, incluso con sudo.
Finalmente, intenté abordar esto en Applescript, usando variaciones de esto
tell application "Finder"
-- pseudocódigo
set icon of to
end tell
pero no pude hacer que funcionara. Finalmente, recurrí a la escritura de interfaz de usuario. Básicamente repliqué el arrastrar y soltar el icono en la ventana de obtener información en el código. La función está a continuación. Copia el icono al portapapeles, abre la ventana de obtener información de la aplicación, mueve el enfoque al icono, presiona cmd+v para pegar, luego actualiza el dock.
-- Función para establecer el icono de una aplicación dada
on setAppIcon(appPath, iconPath)
-- Convertir rutas POSIX a referencias de archivo de Finder
set appFile to POSIX file appPath as alias
set iconFile to POSIX file iconPath as alias
-- Verificar si la aplicación existe
tell application "Finder"
if not (exists appFile) then
display notification "Aplicación no encontrada: " & appPath with title "Replicons"
return false
end if
end tell
-- Verificar si el archivo de icono existe
tell application "Finder"
if not (exists iconFile) then
display notification "Archivo de icono no encontrado: " & iconPath with title "Replicons"
return false
end if
0 entonces
-- Reiniciar el Dock para actualizar los iconos
do shell script "killall Dock"
mostrar diálogo "Se reemplazaron correctamente " & (éxito como cadena) & " iconos." botones {"OK"} botón predeterminado "OK"
sino
mostrar diálogo "No se hizo ningún cambio."
fin si
Esto es torpe. ¿Puedo hacerlo mejor?
Gracias de antemano