#!/bin/sh # The file from which to extract *.ico files. #rscFile="./KeePass.exe" rscFile=$1 # A regexp that can extract the image size from the file name. # sizeRegex='[^\.]+\.exe_[0-9]+_[0-9]+_[0-9]+_[0-9]+_([0-9]+x[0-9]+)x[0-9]+\.png' sizeRegex=$2 # sizeReplaceExp='\1' sizeReplaceExp=$3 # A regexp that can extract the name of the target image from the file name. # nameRegex='([^\.]+)\.exe.+' nameRegex=$4 # nameReplaceExp='\1' nameReplaceExp=$5 # out=./myOut out=$6 # An optional temp dir. TODO: Generate it randomly by default instead. tmp=./tmp if [ "" != "$4" ]; then tmp=$7 fi rm -rf $tmp/png $tmp/ico mkdir -p $tmp/png $tmp/ico # Extract the ressource file's extension. rscFileExt=`echo "$rscFile" | sed -re 's/.+\.(.+)$/\1/'` # Debug ressource file extension. echo "rscFileExt=$rscFileExt" if [ "ico" = "$rscFileExt" ]; then cp -p $rscFile $tmp/ico else wrestool -x --output=$tmp/ico -t14 $rscFile fi icotool --icon -x --palette-size=0 -o $tmp/png $tmp/ico/*.ico mkdir -p $out for i in $tmp/png/*.png; do fn=`basename "$i"` size=$(echo $fn | sed -re 's/'${sizeRegex}'/'${sizeReplaceExp}'/') name=$(echo $fn | sed -re 's/'${nameRegex}'/'${nameReplaceExp}'/') targetDir=$out/share/icons/hicolor/$size/apps targetFile=$targetDir/$name.png mkdir -p $targetDir mv $i $targetFile done rm -rf $tmp/png $tmp/ico