# lsdesktop
       
 (BIN) lsdesktop.c
       
       On peut l'utiliser pour générer un menu dans fluxbox :
       
       ```
       #!/bin/sh
       # Licence MIT
       # author: prx <prx@si3t.ch>
       # fill ~/.config/lsdesktop.exclude with files to
       # ignore. Example : 
       # $ cat ~/.config/lsdesktop.exclude
       # xdvi.desktop
       # mimeinfo.desktop
       # put menus in ~/.fluxbox/automenus/
       
       cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
       cache="$cachedir/lsdesktop.cache"
       menudir=$HOME/.fluxbox/automenus/
       desktopfilespath="$HOME/.local/share/applications \
       /usr/local/share/applications\
       /usr/share/applications"
       
       fluxboxmenu()
       {
           OLDIFS=$IFS
           IFS=':'
           while read -r c n cmd; do
               echo "[exec] (${n}) {${cmd}}"
           done 
           IFS=$OLDIFS
       }
       
       # update application list
       if [ ! -f "${cache}" -o -n "$(find ${desktopfilespath} -newer ${cache} 2>/dev/null)" ]
       then
           lsdesktop -s ':'  > ${cache}
           mkdir -p $menudir
           # a menu file for each categories
           grep "^Graphics" ${cache}    | fluxboxmenu > $menudir/graphics.menu
           grep "^Development" ${cache} | fluxboxmenu > $menudir/development.menu
           grep "^Settings" ${cache}    | fluxboxmenu > $menudir/settings.menu
           grep "^System" ${cache}      | fluxboxmenu > $menudir/system.menu
           grep "^Utility" ${cache}     | fluxboxmenu > $menudir/utility.menu
           grep "^Game" ${cache}        | fluxboxmenu > $menudir/game.menu
           grep "^Network" ${cache}     | fluxboxmenu > $menudir/network.menu
           grep "^Office" ${cache}      | fluxboxmenu > $menudir/office.menu
           grep "^Multimedia" ${cache}  | fluxboxmenu > $menudir/multimedia.menu
       fi
       ```
       
       Ou encore avec dmenu :
       
       ```
       #!/bin/sh
       # Licence MIT
       # author: prx <prx@si3t.ch>
       # print a list of available .desktop files in dmenu
       # works well with dmenu mouse patch
       # https://tools.suckless.org/dmenu/patches/mouse-support/
       ##
       # require lsdesktop
       # https://si3t.ch/code/lsdesktop/
       ##
       # fill ~/.config/lsdesktop.exclude with files to
       # ignore. Example : 
       # $ cat ~/.config/lsdesktop.exclude
       # xdvi.desktop
       # mimeinfo.desktop
       
       cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
       cache="$cachedir/ddesktop"
       desktopfilespath="$HOME/.local/share/applications /usr/local/share/applications"
       
       if [ ! -f "${cache}" -o -n "$(find ${desktopfilespath} -newer ${cache} 2>/dev/null)" ]
       then
           lsdesktop -s '::' | cut -d'::' -f2- | column -t -s '::' > ${cache}
       fi
       
       p="Run:"
       
       cat ${cache} |\
           match -p "$p" | \
           sed -e 's/^.*  //g' |\
           ${SHELL:-"/bin/sh"} &
       ```
       
       ---
 (DIR) /