[deskmenu] Dmenu utilsant les fichiers desktop.

Autres projets et contributions
xenom
archer
Messages : 100
Inscription : dim. 23 mars 2008, 18:50
Localisation : Nancy

[deskmenu] Dmenu utilsant les fichiers desktop.

Message par xenom »

Bonjour.

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
J'ai aussi commencé une version en perl, avec un tableau associatif pour eviter le fichier cache, mais il est pas encore au point.

Toutes les remarques sont les bienvenues.
Répondre