Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

SweetCakeCraft

macrumors newbie
Original poster
Jul 12, 2020
17
2
Hello. I was wondering if there��s any free alternative for changing all the programs’s icons on Mac OS (including the system apps, such as finder and trash can). I saw there’s a paid option but many said it’s buggy. And you can’t exactly drag and drop the icons on the respective folder (for system programs) as one can’t have access for modifying those.
In older version there was lite icon, it did a nice job, but it doesn’t work on Big Sur and above.
 

mansplains

macrumors 6502a
Jan 8, 2021
972
1,530
There is no official way to change icons on system applications. The closest native alternatives are either making a .app file with symbolic linking, or using Shortcuts, and creating scripts that simply open the app of choice. These custom icons will only cover these duplicate launchers, and won't be reflected system wide. It's pretty lame Apple doesn't have an easier way to customize icons for all programs, and it's not really worth it in the current state imo. Changing folder icons is definitely handy, however. Another post of mine on the subject overall:
...You can change mac icons fairly easily already, with get info and dropping an .icns file on the current icon. There are a myriad of icons online. The main drawback is some apps will overwrite your customization after an update, or logging out/restarting. To prevent apps from overwriting, you can use show package contents, navigate to the .icns file, and swap another in. However, some apps recognize the tampering and make you reinstall (chrome for instance).
Personally, I wouldn't pay for a software to accomplish this task, especially if the reviews aren't clear, and when Sequoia could break it anyway.
 

Ben J.

macrumors 6502a
Aug 29, 2019
817
495
Oslo
I've been used to being able to change any icon in the get info box of any file or app since, idk, System Seven? Suddenly on Ventura, I couldn't. I found a solution on the web, which was to disable SIP. It worked. Now I could change the icon on a couple of apps. I haven't tried it on things like Finder or trash, also I'm not sure if turning SIP back on will remove the custom icons.
 
Last edited:

thebart

macrumors 6502
Feb 19, 2023
404
360
Here's a script I wrote to bulk change app icons. It does not work on system apps, only normal apps, but it saves me from having to do it manually in Finder. Not terribly user friendly, but hey it's free

AppleScript:
(*
 This applescript allows bulk setting custom icons for apps (or folders)
 It cannot set icons for system apps like Safari
   or apps you do not own such as those installed from the App store
 Tested working on Sonoma 14.5

 USAGE: Create a text file called replicons.cfg in your Documents folder
 following this format

<app1-posix-full-path>,<icon1-posix-full-path>
<app2-posix-full-path>,<icon2-posix-full-path>
...

 Icon may be of type .icns or an image type such as .png

 Example:

/Applications/Google Chrome.app,/Volumes/T7/icons/chrome dark.icns
/Applications/foobar2000.app,/Volumes/T7/Downloads/foobar2000.icns
/Applications/Spotify.app,/Users/me/Documents/icons/Spotify.png

 To revert an icon to the default, leave the icon field empty (note the comma)

/Applications/Spotify.app,

 Do not leave blank lines or leading / trailing white spaces.

 Stackexchange discussion
 https://apple.stackexchange.com/questions/473597/change-apps-icon-by-script
*)

use framework "Foundation"
use scripting additions

set configFile to (path to home folder as text) & "Documents:replicons.cfg"

-- Function to set the icon for a given application
on setAppIcon(appPath, iconPath)
    try
        -- the magic happens here
        if iconPath is "" then
            set image to missing value
        else
            set image to current application's NSImage's alloc()'s initByReferencingFile:iconPath
        end if
        set success to current application's NSWorkspace's sharedWorkspace's setIcon:image forFile:appPath options:0
        return success
    on error errStr number errorNumber
        display dialog errStr
        return false
    end try
end setAppIcon

-- Parse a line from the config file
on parseLine(aLine)
    set AppleScript's text item delimiters to ","
    set parsedList to text items of aLine
    set AppleScript's text item delimiters to ""
    return parsedList
end parseLine

-- Read the appIconPairs from an external text file
set appIconPairs to {}

try
    set fileContents to read (configFile as alias)
    set fileLines to paragraphs of fileContents
    
    repeat with aLine in fileLines
        if aLine is not "" then
            set {appPath, iconPath} to my parseLine(aLine)
            copy {appPath, iconPath} to end of appIconPairs
        end if
    end repeat
    
on error errStr number errorNumber
    display dialog errStr
    return
end try

set successCount to 0

repeat with appIconPair in appIconPairs
    set {appPath, iconPath} to appIconPair
    if setAppIcon(appPath, iconPath) then
        set successCount to successCount + 1
    end if
end repeat

if successCount > 0 then
    -- Restart the Dock to refresh the icons
    do shell script "killall Dock"
    display dialog "Successfully replaced " & (successCount as string) & " icons."
else
    display dialog "No change made."
end if
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.