I've ended up creating a script to solve my problem. That's not exactly a backup solution but it works for me.
#!/bin/bash
folderToBeUpdated="$HOME/folderToInsertIconsRecursively"
iconsFolder="$HOME/.icons"
file="$(mktemp)"
# Generate a recursive list of all folders and files inside the folder $folderToBeUpdated
ls -R "$folderToBeUpdated" | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }' > $file
# Start inserting icons dynamically on files and folders
while IFS='' read -r line || [[ -n "$line" ]]; do
folderName="$(basename "${line}")"
pathName="$(dirname "${line}")"
if [ -f "$iconsFolder"/"$folderName".png ]
then
gvfs-set-attribute -t string "$pathName/$folderName" metadata::custom-icon "file://$iconsFolder/$folderName.png"
fi
done < $file
The idea of this script is that we need to give it the path of two folders:
- The path of a folder full of icons (
iconsFolder)
- The path of the folder we wish to put icons recursively (
folderToBeUpdated)
The script will check the icons and the folders with the same name and then it will insert icons on specific folders in case that's true, e.g a folder inside folderToBeUpdated is called example and I have an icon called example.png inside my iconsFolder, so the icon example.png will be inserted as the folder example's icon (if the name isn't the same the script won't do anything).
PS: It's necessary to press F5 after running the script in order to see the icons.
That's just a functional script but it turns out to be useful because I can easily replicate my icons on different computers. In any case, if anyone knows a way to do backups of icons in a more convenient way, feel free to write a new answer or give suggestions in the comments.