#!/bin/bash

# Ajoute une application dans le panneau xfce, d'après un fichier xdg-desktop,
#  ou en cherchant lui-meme dans les fichiers .desktop

# usage xfdesktop2panel [fichier.desktop | nom_application]
#            exemple : xfdesktop2panel abiword
#		       xfdesktop2panel /usr/share/applications/abiword.desktop

# 0.0.20070115b
# 14/01/2007
# (C) Simon 

#besoin sed, awk grep, md5sum, killall, find, basename


TMP=/tmp/desktop$$
mkdir -p $TMP || exit 1
ISRUNNING=0
SOURCE=""
EXECUTABLE=""

if [ -e "$1" ] ; then
 SOURCE="$1"
else
 EXECUTABLE="`which \"$1\"`"
 if [ -n "$EXECUTABLE" ] ; then
  for i in `find /usr/share/applications/ -name "*.desktop"` \
    `find /var/lib/menu-xdg/applications/ -name "*.desktop"` ; do
   grep -q -e "^Exec=$EXECUTABLE" -e "^Exec=`basename $EXECUTABLE`" \
    "$i" && echo "$i" >>$TMP/desktopfiles
  done
  if [ -s $TMP/desktopfiles ] ; then
   SOURCE="`sed -e '1!d' $TMP/desktopfiles`"
  fi
 fi
fi

if [ -e "$SOURCE" ] ; then
 GREP="`sed -e '1!d' "$SOURCE" | grep -e '\[Desktop Entry\]'`"
 if [ -n "$GREP" ] ; then

  RUNNING=`ps -C xfce4-panel -o pid | sed -e '2!d'`
  if [ -n "$RUNNING" ] ; then
   echo "xfce4-panel déjà présent, arret temporaire" >&2
   ISRUNNING=1
   RELANCE="`ps -p $RUNNING -o cmd | sed -e '2!d'`"
   killall -9 xfce4-panel
  fi
  
  sed -e 's/^\[Desktop Entry\]/[Entry 0]/' -e '/Type=Application/d' \
   "$SOURCE" >$TMP/source
  
  MDS=`md5sum $TMP/source | awk '{print $1}'`
  
  cp $TMP/source ~/.config/xfce4/panel/launcher-$MDS.rc
 
  
  PANELS=~/.config/xfce4/panel/panels.xml
  
  NOLIGNE=`grep -n -e '<item name="launcher" id="' $PANELS |\
   awk '{print $1}' | sed -e '$!d' -e 's/:.*$//'`
  if [ -z "$NOLIGNE" ] ; then
   NOLIGNE=`grep -n -e '<item name="xfce4-menu" id="' $PANELS |\
    awk '{print $1}' | sed -e '1!d' -e 's/:.*$//'` 
  fi
  if [ -z "$NOLIGNE" ] ; then
   NOLIGNE=`grep -n -e '<items>' $PANELS |\
    awk '{print $1}' | sed -e '1!d' -e 's/:.*$//'`
  fi
  
  sed -e "${NOLIGNE}a\
  			<item name=\"launcher\" id=\"$MDS\" \/>" \
  $PANELS >$TMP/panels
  mv $TMP/panels $PANELS
 
 fi
fi


rm -r -f $TMP

if [ $ISRUNNING -eq 1 ] ; then
 exec $RELANCE
fi

exit

