使用终端命令更改Mac应用程序图标

使用终端命令更改Mac应用程序图标

我喜欢为一些应用使用自定义图标。但是,当然,当应用更新时,图标会被重置。我希望能够运行脚本来立即自动更新我所有的自定义应用图标。

目前,我右键单击某个应用程序并选择获取信息。然后,我可以将 .icns 文件拖到此窗口顶部的原始图标上。重新启动 Dock,就完成了!就像本教程

有人知道是否有终端命令可以实现相同的功能吗?我见过一些变体,它们深入到应用程序的资源文件夹并更改那里的 .icns 文件,但这是一个不同的过程,我对此没有进行过多的了解。

有任何想法吗?

答案1

我的 Dropbox 中有一个名为“App Icons”的文件夹。里面有一个名为的 shell 脚本install.sh,旁边是我想要自定义图标的每个应用程序的文件夹。目前是 Atom 和 Mattermost。

在每个目录中我分别有atom.icnsMattermost.icns

为了更新两个应用程序,我运行了以下脚本:

#!/usr/bin/env bash

set -euf -o pipefail
umask 077
has_copied=0

for atom in Atom "Atom Beta"; do
    path="/Applications/${atom}.app"
    [ -d "${path}" ] && \
    cp ./Atom/atom.icns "${path}/Contents/Resources/atom.icns" && \
    touch "${path}" && \
    has_copied=1
done

for mattermost in Mattermost; do
    path="/Applications/${mattermost}.app"
    [ -d "${path}" ] && \
    cp ./Mattermost/Mattermost.icns "${path}/Contents/Resources/Mattermost.icns" && \
    touch "${path}" && \
    has_copied=2
done

[ ${has_copied} = "2" ] && killall Dock

Atom 通常会立即更新该[ ${has_copied} = "2" ] && killall Dock行。Mattermost 不会,但我猜这是个案。我怀疑有一种更聪明的方法来循环遍历所有可用图标并更新其各自的应用程序,但我不是 bash 大师,所以我保持简单。

为了自动运行它,您可以使用 Automator,或者更好的是,按照此 SO 答案中的说明进行操作:https://stackoverflow.com/a/13372744/347884

如果你选择第二种方式,请确保你的 shell 脚本是可执行的:

chmod a+x /path/to/script.sh

玩得开心!

相关内容