Pourquoi une telle question ?
Parce-qu'il arrive que mon bureau décide tout seul de réorganiser les icones... Dans la majorité des cas cela est consécutif que fait qu'il ait redimensionné l'affichage suite à la découverte d'un nouveau écran secondaire (moniteur, vidéo projecteur, etc.) dont la résolution est quelque peu étrange... Et voir tous mes icônes dans le désordre est pénible... Ainsi avoir la possibilité d'enregistrer leur position pour ensuite être en mesure de la rappeler est devenue un obsession... D'ailleurs pour quelle raison cette option est accessible sous Windows via de très nombreux FreeWare et pas sous l'environnement linux ?
Je ne suis pas un spécialiste du langage de script, ainsi je suis ouvert à toute remarque pour améliorer l'opération, je vous livre donc cette version en développement :
Environnement :
Kernel: 4.12.0-041200-generic x86_64 (64 bit)
Desktop: Cinnamon 3.4.4
Distro: Linux Mint 18.2 Sonya
Nemo: 3.4.6
desktop-save-icons.sh
Code :
#!/bin/sh
DESKTOPDIR=$(cat /home/$USER/.config/user-dirs.dirs | grep DESKTOP | cut -d\" -f 2 | cut -d\/ -f 2-)
if [ ! -d "/home/$USER/.$DESKTOPDIR" ]
then echo ">>> file /home/$USER/.$DESKTOPDIR is missing then creating /home/$USER/.$DESKTOPDIR"
mkdir "/home/$USER/.$DESKTOPDIR"
fi
gvfs-info "/home/$USER/$DESKTOPDIR/"*.desktop | grep -E 'standard::name:|icon-position:' | awk -F : '{print $(NF)}' | sed 's/^ *//;s/ *$//' > "/home/$USER/.$DESKTOPDIR/desktop-icons-coord.dat"
desktop-restore-icons.sh
Code :
#!/bin/sh
CurrentLine=0
iCurrentFile=-1
sCurrentLine="aa"
sCurrentFile="bbb"
iParity=1
iImpair=1
DESKTOPDIR=$(cat /home/$USER/.config/user-dirs.dirs | grep DESKTOP | cut -d\" -f 2 | cut -d\/ -f 2-)
echo "Entrée dans desktop-restore-icons.sh" > "/home/$USER/.$DESKTOPDIR/test.txt"
if [ ! -f "/home/$USER/.$DESKTOPDIR/desktop-icons-coord.dat" ]
then
echo "file /home/$USER/.$DESKTOPDIR/icones.dat is missing."
echo "use desktop-save-icons.sh before."
echo "bash aborted."
exit
fi
while read sCurrentLine
do iCurrentLine=$((iCurrentLine+1))
if [ $iParity -eq $iImpair ]
then
#echo "++ iParity" $iParity $iCurrentLine $sCurrentLine
if [ -f "/home/$USER/$DESKTOPDIR/$sCurrentLine" ]
then
#echo ">>> file /home/$USER/$DESKTOPDIR/$sCurrentLine exists."
sCurrentFile="$sCurrentLine"
iCurrentFile=$iCurrentLine
else
sCurrentFile="aa"
iCurrentFile=-1
fi
else
#echo "-- iParity" $iParity $iCurrentLine
#echo "-- sCurrentFile" $sCurrentFile "/" $iCurrentFile
# Vérifier que la ligne actuelle correspond bien
# aux coordonnées du dernier fichier testé existant
if [ $iCurrentLine -eq $((iCurrentFile+1)) ]
then
#echo "-- Coord. ok" $sCurrentFile $sCurrentLine
gvfs-set-attribute "/home/$USER/$DESKTOPDIR/$sCurrentFile" metadata::nemo-icon-position $sCurrentLine
# Déplacer le fichier .desktop pour le mettre ensuite
# dans le dossier bureau de telle sorte
# à forcer le rafraichissement du bureau
mv "/home/$USER/$DESKTOPDIR/$sCurrentFile" /var/tmp/; mv "/var/tmp/$sCurrentFile" "/home/$USER/$DESKTOPDIR/"
#touch "/home/$USER/$DESKTOPDIR/$sCurrentFile"
# Une fois le traitement fait, valeurs initialisées
sCurrentFile="cc"
iCurrentFile=-1
fi
fi
iParity=$((1-iParity))
done < "/home/$USER/.$DESKTOPDIR/desktop-icons-coord.dat"
Après quoi, vous pouvez les rendre exécutables :
Code :
chmod +x desktop-save-icons.sh
chmod +x desktop-restore-icons.sh