J'ai ecrit un petit script pour dmenu qui permet d'afficher les applications installé en se basant sur les fichiers desktop, les mêmes fichiers qui sont utilisés pour générer les menus. Ca permet d'avoir juste les applications graphiques, et d'utiliser leur nom.
L'utilisation est simple, lancer deskmenu -update pour générer le fichier de cache qui contient les applications, et deskmenu pour lancer le script.
Code : Tout sélectionner
#!/bin/bash
dmenucache=~/.config/dmenucache
dmenuopt='-i -nb #111111 -nf #ffffff -sf #959595 -sb #111111 -fn -misc-*-*-*-normal-*-*-*-*-*-*-*-iso8859-*'
if [ "$1" == "" ]; then
selapp=$(cut -f1 -d: $dmenucache | dmenu $dmenuopt)
if [[ $selapp != "" ]]; then
selapp=$(grep "$selapp:" $cache | cut -f2 -d:)
fi
exec $selapp &
elif [ "$1" == "-update" ]; then
if [ -f $dmenucache ]; then
rm $dmenucache
fi
for x in $(ls /usr/share/applications)
do
if [ -f /usr/share/applications/$x ]; then
while IFS== read key value
do
if [[ $key == "Name" ]]
then
ProgName=$value
fi
if [[ $key == "Exec" ]]
then
ProgExec=$(echo $value | cut -d% -f1)
fi
done < /usr/share/applications/$x
echo "$ProgName:$ProgExec" >> $dmenucache
fi
done
sort -f -u -o $dmenucache $dmenucache
else
echo "Argument invalide"
echo "Utilisez -update pour mettre à jour le cache"
fi
Toutes les remarques sont les bienvenues.