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.