#!/bin/bash # Set the name of the executable here. export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH PROG_1="dndguitar" PROG_2="unrpm" HELPER_1="afxmsg2" HELPER_2="dndguitar" # XTERM_FONT='10x20' XTERM_FONT='7x14' # XTERM_FONT='6x13' if [ ! -L "$0" ] ; then APP_DIR=`dirname "$0"` APP_DIR=`cd "$APP_DIR";pwd`; else if [ ! -z `which readlink 2> /dev/null` ] ; then APP_DIR=`readlink -f "$1"` APP_DIR=`dirname "$APP_DIR"` else echo "$PROG: Can't get real path to AppRun!" 1>&2 fi fi export APP_DIR APP_NAME=`basename "$APP_DIR"` APP_BIN_DIR="${APP_DIR}/bin" export PATH=${APP_BIN_DIR}:$PATH ### Functions # Notify Completion of tasks TIME_OUT=2000 F_notify_completion () { Xdialog --backtitle "$BACK_TITLE" --title "SqueezeMe" --infobox "$MESSAGE" 0 0 $TIME_OUT exit 0 } F_notify_failure () { Xdialog --backtitle "$BACK_TITLE" --title "SqueezeMe" --infobox "$MESSAGE" 0 0 $TIME_OUT exit 0 } proc_dot() { p=$1 while [ -d /proc/$p ] do echo -en '\E[32;40m/' ; sleep .05 echo -en '\E[32;40m-' ; sleep .05 echo -en '\E[32;40m\' ; sleep .05 echo -en '\E[32;40m|' ; sleep .05 echo -en '\E[32;42mS' ; tput sgr0 ; sleep .2 done } F_fail_check () { for i in $?; do case $i in 0) . ;; 1) rm -rf $TMP ; exit 1 ;; 255) rm -rf $TMP ; exit 1 ;; esac done } # if [[ $# = 0 ]] ; then # What to do if the icon is simply clicked # exec sudo xterm -fn $XTERM_FONT -geometry 76x26 -e $PKGTOOL exec ${PROG_1} elif [[ $1 == '--list' ]] ; then # What to do if an option is chosen by right-clicking the icon exec xterm -hold -fn $XTERM_FONT -geometry 45x25 -e 'echo DUMMY_COMMAND_FOR_OPIONS_BOX' elif [[ $# > 0 ]] ; then # What to do if a file or selection of files is dropped on the icon # Get source path and shortname of Dropped Object export DROPT_OBJ="$@" export DROP_DIR=`dirname "$@"` cd $DROP_DIR ; export DROP_NAME=`basename "$@"` ; FILE_SIZE="`du -s $DROPT_OBJ |cut -f1 -d '/'`" export DEST_DIR="$DROP_DIR" ACTION="" OPTIONS="" # CLEANUP="NO" if [[ -d "$@" ]] ; then ACTION=`Xdialog --stdout --wrap --title "SqueezeMe" \ --backtitle "Create a Compressed Archive" \ --check " Delete original folder" off \ --menubox "Choose the archive type from below:" 15 35 3 \ "tgz" " tar archive compressed with gzip" \ "tbz" " tar archive compressed with bzip2" \ ` ; for i in $ACTION ; do [[ $i = "tgz" ]] && { TAR_COMMAND="tar -czf" TAR_SUFFIX=".tgz" } [[ $i = "tbz" ]] && { TAR_COMMAND="tar -cjf" TAR_SUFFIX=".tar.bz2" } [[ $i = "checked" ]] && { CLEANUP=1 } done export TAR_COMMAND TAR_SUFFIX CLEANUP # ACTION="`echo $ACTION |cut -f1 -d '/'`" DEST_NAME="$DROP_NAME" DEST_NAME="$DROP_NAME$TAR_SUFFIX" ; export DEST_NAME ; # exec xterm -hold -e echo $ACTION $CLEANUP $TAR_COMMAND $DEST_NAME $FILE_SIZE cd $DROP_DIR ; $TAR_COMMAND $DEST_NAME $DROPT_OBJ && \ [[ $CLEANUP ]] && rm -rf $DROPT_OBJ F_fail_check BACK_TITLE="Archive Creation" MESSAGE="Finished!" F_notify_completion exit 0 fi #fi # Handle ZIP's if [[ `file $@ | grep 'Zip'` ]] ; then cd "$DROP_DIR" && exec ${PROG_1} "$@" exit 0 fi # Handle Debian archives if [[ `file $@ | grep 'Debian'` ]] ; then cd $DROP_DIR ; DEB_DIR=`echo "$@" | cut -f1 -d '_'` ; #deb_dir=`echo "$@" | cut -f1 -d '_'` ; #deb_dir="$DROP_DIR/unpack" ; mkdir "$DEB_DIR" ; ( cd "$DEB_DIR" ; \ ar -x "$@" ; \ gunzip -c data.tar.gz > data.tar ; \ tar -xf data.tar ; \ rm data.tar.gz data.tar ; \ gunzip -c control.tar.gz > control.tar ; \ tar -xf control.tar ; \ rm control.tar.gz control.tar ) ; exit 0 fi # Handle RPM archives PROG_2 if [[ `file $@ | grep 'RPM'` ]] ; then cd $DROP_DIR ; RPM_NAME=`file "$@" | cut -f 6 -d ' '` ; # exec xterm -hold -fn $XTERM_FONT -geometry 45x25 -e echo "$RPM_NAME" RPM_DIR="$DROP_DIR/$RPM_NAME" ; mkdir -p $RPM_DIR ; ( cd $RPM_DIR ; \ $PROG_2 < "$@" | gzip -d | cpio -idmu ; \ gunzip -c *.tar.gz > $RPM_NAME.tar ; \ tar -xf $RPM_NAME.tar ; \ rm *.tar.gz *.tar ) BACK_TITLE="RPM Archive Decompression" ; MESSAGE="Finished!" ; F_notify_completion ; exit 0 fi if [[ `file $@ | grep 'compressed'` ]] ; then if [[ `basename $@ |grep .tar.bz2` ]] ; then TAR_COMMAND="tar -xf" DEST_DIR=$DROP_DIR cd $DEST_DIR ; # exec xterm -hold -e echo $DEST_DIR $TAR_COMMAND $DROPT_OBJ $FILE_SIZE P_ACTION="Uncompressing" PERCENT=0 EST_TIME=`expr $FILE_SIZE / 250` INTERVAL=`expr $EST_TIME / 10` INCREMENT=`expr $INTERVAL + 2` $TAR_COMMAND $DROPT_OBJ | \ ( echo "XXX" ; echo "$PERCENT percent" ; echo "\\n" ; echo "uncompressed"; echo "XXX" echo "$PERCENT" ; while [[ $PERCENT -lt 100 ]] ; do # while [[ $1 ]] ; do echo "XXX" ; echo "$PERCENT percent" ; echo "\\n" ; echo "uncompressed"; echo "XXX" echo "$PERCENT" ; sleep $INTERVAL PERCENT=`expr $PERCENT + $INTERVAL + $INCREMENT` done ) | \ Xdialog --title "SqueezeMe" --no-close --no-buttons \ --backtitle "$P_ACTION Archive" \ --gauge "$DROPT_OBJ" 0 0 BACK_TITLE="Tarred Bzipped Archive Decompression" ; MESSAGE="Finished!" ; F_notify_completion ; exit 0 fi fi fi exit 0