#!/bin/bash # Set the path to include the local bins, including Xdialog export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH PROG_1="dndguitar" PROG_2="unrpm" # TAR_PROG=`which tar` # TAR_PROG="star" COMPLETION_TIME_OUT=1000 FAILURE_TIME_OUT=3000 # XTERM_FONT='6x13' XTERM_FONT='7x14' # XTERM_FONT='10x20' 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 if [[ $# = 0 ]] ; then # What to do if the icon is simply clicked exec ${PROG_1} elif [[ $1 == '--list' ]] ; then # What to do if an option is chosen by right-clicking the icon # This where the options box goes... later 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 ### Functions notify_completion () { Xdialog --title "SqueezeMe" --no-buttons \ --backtitle "$BACK_TITLE" \ --infobox "$MESSAGE" 6 30 $COMPLETION_TIME_OUT exit 0 } notify_failure () { Xdialog --title "SqueezeMe" --no-close \ --backtitle "$BACK_TITLE" \ --msgbox "$MESSAGE" 10 40 exit 1 } static_progress_box() { ( p=$1 echo "XXX";echo "$DEST_NAME";echo "XXX"; while [ -d /proc/$p ] do echo "XXX" ;echo "$DEST_NAME" ;echo "XXX" ;sleep 1 done echo "XXXX") | \ Xdialog --title "SqueezeMe" --no-close --no-buttons \ --class "WHILE_BOX" \ --backtitle "$BACK_TITLE" \ --infobox "$MESSAGE" 7 0 0 } while_box() { Xdialog --title "SqueezeMe" --no-close --no-buttons \ --class "WHILE_BOX" \ --backtitle "$BACK_TITLE" \ --infobox "$MESSAGE" 7 0 0 } # source SqueezeMe.FUNCTIONS.sh # Handle Links and get DROP_DIR DROPT_OBJ and DROP_NAME if [[ `readlink "$@"` ]] ; then # This is a link, so set DROP_OBJ to the real object DROPT_OBJ=`readlink -f "$@"` DROP_DIR=`dirname "$DROPT_OBJ"` cd $DROP_DIR ; DROP_NAME=`basename "$DROPT_OBJ"` ; DEST_DIR=`dirname "$@"` else DROPT_OBJ="$@" DROP_DIR=`dirname "$DROPT_OBJ"` cd $DROP_DIR ; DROP_NAME=`basename "$DROPT_OBJ"` ; DEST_DIR=$DROP_DIR fi # exec xterm -hold -e echo $DROPT_OBJ $DROP_DIR $DROP_NAME $DEST_DIR $DEFAULT_DIR if [[ -d "$@" ]] ; then # This is a directory # Get OPTIONS for Archive Creation Method OPTIONS=`Xdialog --stdout -title "Squeeze Me" \ --backtitle "Create a Compressed Archive" \ ---editable \ --combo "Choose Archive Type" 10 30 tgz tar.gz tbz tar.bz2` || exit 1 CHOICE=`echo $OPTIONS |cut -f1 -d ' '` case $CHOICE in tgz) TAR_COMMAND="tar -czf" ; TAR_SUFFIX=".tgz" ; ;; tar.gz) TAR_COMMAND="tar -czf" ; TAR_SUFFIX=".tar.gz" ; ;; tbz) TAR_COMMAND="tar -cjf" ; TAR_SUFFIX=".tbz" ; ;; tar.bz2) TAR_COMMAND="tar -cjf" ; TAR_SUFFIX=".tar.bz2" ; ;; esac # End Get OPTIONS for Archive Creation Method DEST_NAME=$DROP_NAME$TAR_SUFFIX BACK_TITLE="Creating Archive" MESSAGE="$DEST_NAME" # exec xterm -hold -e echo $DROPT_OBJ $DEST_DIR $DEST_NAME # cd $DEST_DIR ; # ( $TAR_COMMAND $DEST_NAME $DROPT_OBJ ) | while_box # BACK_TITLE="Archive Creation" MESSAGE="Finished!" # notify_completion ; # exit 0 cd $DROP_DIR ; ( $TAR_COMMAND $DEST_DIR/$DEST_NAME $DROP_NAME ) | while_box BACK_TITLE="Archive Creation" MESSAGE="Finished!" notify_completion ; exit 0 fi # End # 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 # get directory DEST_NAME=`basename "$DROP_NAME" ".deb"` DEB_DIR=$DEST_DIR/$DEST_NAME mkdir $DEB_DIR DEST_DIR=$DEB_DIR # exec xterm -hold -e echo $DROPT_OBJ $CLEANUP # Create Archive BACK_TITLE="Decompressing Debian Archive" MESSAGE="$DROP_NAME" ( cd "$DEST_DIR" ; \ ar -x "$DROPT_OBJ" ; \ 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 ) | while_box BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # UN-compress RPM archives PROG_2 if [[ `file $@ | grep 'RPM'` ]] ; then DEST_NAME=`basename "$DROP_NAME" ".rpm"` # Notice that we create an arbitrary directory for RPM archives RPM_DIR=$DEST_DIR/$DEST_NAME mkdir -p $RPM_DIR ; DEST_DIR=$RPM_DIR ; BACK_TITLE="Decompressing RPM Archive" MESSAGE="$DROP_NAME" ( cd $DEST_DIR ; \ $PROG_2 < "$@" | gzip -d | cpio -idmu ; \ gunzip -c *.tar.gz > $DEST_NAME.tar ; \ tar -xf $DEST_NAME.tar ; \ rm *.tar.gz *.tar ) | while_box BACK_TITLE="RPM Archive Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # UN-compress ARCHIVES and FILES (Simple: bz bz2 gz ) (Archive: tar.bz tbz tar.bz2 tbz2 tar.gz tgz ) if [[ `file $DROPT_OBJ | grep 'compressed'` ]] ; then DEST_NAME=$DROP_NAME DECOMPRESS_COMMAND="" if [[ `basename "$DROPT_OBJ" |grep ".tar.bz2"` ]] || [[ `basename "$DROPT_OBJ" |grep ".tbz2"` ]] \ || [[ `basename "$DROPT_OBJ" |grep ".tar.bz"` ]] || [[ `basename "$DROPT_OBJ" |grep ".tbz"` ]] ; then BACK_TITLE="Uncompressing tarred bzip2 archive..." # bunzip2 -c $DROPT_OBJ | tar -xf - DECOMPRESS_COMMAND="bunzip2 -c" ; TAR_COMMAND="tar -xf -" ; DEST_NAME=`basename "$DEST_NAME" ".tar.bz2"` ; DEST_NAME=`basename "$DEST_NAME" ".tbz2"` ; DEST_NAME=`basename "$DEST_NAME" ".tar.bz"` ; DEST_NAME=`basename "$DEST_NAME" ".tbz"` ; # exec xterm -hold -e echo "11" $DEST_NAME $DECOMPRESS_COMMAND $TAR_COMMAND elif [[ `basename "$DROPT_OBJ" |grep ".tar.gz"` ]] || [[ `basename "$DROPT_OBJ" |grep ".tgz"` ]] ; then BACK_TITLE="Uncompressing tarred gzip archive..." DECOMPRESS_COMMAND="gunzip -c" ; TAR_COMMAND="tar -xf -" ; DEST_NAME=`basename "$DEST_NAME" ".tar.gz"` ; DEST_NAME=`basename "$DEST_NAME" ".tgz"` ; # exec xterm -hold -e echo "12" $DEST_NAME $DECOMPRESS_COMMAND $TAR_COMMAND fi # Decompress Archives if [[ $DECOMPRESS_COMMAND != "" ]] ; then cd $DEST_DIR ; # exec xterm -hold -e echo $TAR_COMMAND $DROPT_OBJ $DEST_NAME $DEST_DIR BACK_TITLE="Decompressing Archive" MESSAGE="$DROPT_OBJ" ( $DECOMPRESS_COMMAND $DROPT_OBJ | $TAR_COMMAND ) | while_box BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # exec xterm -hold -e basename "$DROPT_OBJ" # Un-compress BZ, BZ2 if [[ `basename "$DROPT_OBJ" |grep "bz2"` ]] || [[ `basename "$DROPT_OBJ" |grep ".bz"` ]] ; then BACK_TITLE="Uncompressing bzip2 compressed file..." MESSAGE="$DROP_NAME" DECOMPRESS_COMMAND="bunzip2 -ck" ; DEST_NAME=`basename "$DEST_NAME" ".bz2"` ; # exec xterm -hold -e echo "13" $DEST_NAME $DECOMPRESS_COMMAND $TAR_COMMAND cd $DEST_DIR ; ( $DECOMPRESS_COMMAND $DROPT_OBJ > $DEST_NAME ) | while_box || exit 1 BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # End # UN-compress GZ ,BZ, BZ2 non-archive compressed files if [[ `basename "$DROPT_OBJ" |grep ".gz"` ]] ; then BACK_TITLE="Uncompressing gzip compressed file..." MESSAGE="$DROP_NAME" DECOMPRESS_COMMAND="gunzip -c" ; DEST_NAME=`basename "$DEST_NAME" ".gz"` ; # exec xterm -hold -e echo "14" $DEST_NAME $DECOMPRESS_COMMAND cd $DEST_DIR ; ( $DECOMPRESS_COMMAND $DROPT_OBJ > $DEST_NAME ) | while_box || exit 1 BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # End UN-compress GZ # UNKNOWN if [[ true ]] ; then BACK_TITLE="WARNING!" ; MESSAGE="Unrecognized compressed file type, \\n or no decompressor available for: \\n $DROPT_OBJ" ; notify_failure ; exit 1 fi # End UNKNOWN fi # End UN-compress ARCHIVES and FILES # COMPRESS PLAIN FILE if [[ -f $DROPT_OBJ ]] ; then # get compression method and suffix OPTIONS=`Xdialog --stdout --title "Squeeze Me" \ --backtitle "Create a Compressed File" \ --combo "Choose File Compression Type" 10 30 gz bz2` CHOICE=`echo $OPTIONS |cut -f1 -d ' '` case $CHOICE in gz) COMPRESS_COMMAND="gzip" ; SUFFIX=".gz" ; ;; bz2) COMPRESS_COMMAND="bzip2 -k" ; SUFFIX=".bz2" ; ;; esac # Get Destination Directory DEST_NAME=$DROP_NAME$SUFFIX # Concatenate Final Name BACK_TITLE="Creating Compressed File" ; MESSAGE="$DEST_NAME" # exec xterm -hold -e echo "14" $DEST_DIR $DEST_NAME $COMPRESS_COMMAND $SUFFIX if [[ $COMPRESS_COMMAND = "gzip" ]] ; then cd $DEST_DIR ; ( gzip -c $DROPT_OBJ > $DEST_NAME ) & static_while_box $! # or use: ( gzip -c $DROPT_OBJ > $DEST_NAME ) | while_box fi # Couldn't get this to work with '| while_box' if [[ $COMPRESS_COMMAND = "bzip2 -k" ]] ; then cd $DEST_DIR ; $COMPRESS_COMMAND $DROPT_OBJ & static_progress_box $! fi BACK_TITLE="File Compression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # End COMPRESS FILE fi exit 0