#!/bin/bash # Set the name of the executable here. export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH PROG_1="dndguitar" PROG_2="unrpm" # 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 check_dir() { if [[ -d $CHOSEN_DIR ]] ; then return 0 else BACK_TITLE="Directory doesn't exist!" MESSAGE="Try again." notify_failure fi } choose_dir() { Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --dselect "$DEFAULT_DIR" 30 60 } choose_dir_check() { Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --check " $CHECK_PROMPT" off \ --dselect "$DEFAULT_DIR" 30 60 } file_selector() { Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --fselect "$DEFAULT_DIR" 30 60 } choose_file_compression_method() { Xdialog --stdout --title "Squeeze Me" \ --backtitle "Create a Compressed File" \ --check " Delete Original File" off \ --combo "Choose a Compression method" 12 35 gzip bzip2 } 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 } maybe_while_box() { ( p=$1 sleep 2 ;echo "XXX";echo "Beginning";echo "XXX";sleep .5 while [ -d /proc/$p ] do echo "XXX" ;echo -"//" ;echo "XXX" ;sleep .05 ; echo "XXX" ;echo "==" ;echo "XXX" ; sleep .05 ; echo "XXX" ;echo "\\" ;echo "XXX" ; sleep .05 ; echo "XXX" ;echo "||" ;echo "XXX" ; sleep .05 ; done echo "XXXX") | \ Xdialog --title "SqueezeMe" --no-close --no-buttons \ --backtitle "$BACK_TITLE" \ --infobox "$MESSAGE" 7 0 0 } simple_while_box() { ( p=$1 sleep 2 ;echo "XXX";echo "Beginning";echo "XXX";sleep .5 while [ -d /proc/$p ] do echo "XXX" ;echo -"Please Wait" ;echo "XXX" ;sleep .05 ; done echo "XXXX") | \ Xdialog --title "SqueezeMe" --no-close --no-buttons \ --backtitle "$BACK_TITLE" \ --infobox "$MESSAGE" 7 0 0 } 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 source SqueezeMe.FUNCTIONS.sh # Handle Links and get DROP_DIR DROPT_OBJ and DROP_NAME if [[ `readlink "$@"` ]] ; then # This is a link, so keep the old DEFAULT_DIR and DEST_DIR DROPT_OBJ="$@" DROP_DIR=`dirname "$@"` cd $DROP_DIR ; DROP_NAME=`basename "$@"` ; DEST_DIR="$DROP_DIR" DEFAULT_DIR=`pwd` DROPT_OBJ=`readlink -f "$@"` else DROPT_OBJ="$@" DROP_DIR=`dirname "$@"` cd $DROP_DIR ; DROP_NAME=`basename "$@"` ; DEST_DIR="$DROP_DIR" DEFAULT_DIR="$DROP_DIR" fi # exec xterm -hold -e echo $DROPT_OBJ $DROP_DIR $DROP_NAME $DEST_DIR $DEFAULT_DIR FILE_SIZE="`du -s $DROPT_OBJ |cut -f1 -d '/'`" # maybe set a style for the 'while' box WHILE_BOX="expander_box" COMPLETION_TIME_OUT=1500 FAILURE_TIME_OUT=3000 if [[ -d "$@" ]] ; then # This is a directory # Get OPTIONS for Archive Creation Method and CLEANUP OPTIONS=`Xdialog --stdout --title "Squeeze Me" \ --backtitle "Create a Compressed Archive" \ --check " Check Here to Delete Original Folder" off \ --combo "Choose Archive Type" 12 35 tgz tar.gz tbz tar.bz2` [[ `echo $OPTIONS |cut -f2 -d ' '` = "checked" ]] && CLEANUP="YES" 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 export TAR_COMMAND # End Get OPTIONS # Choose DEST_DIR -use simple choose_dir since we already have CLEANUP Option DEFAULT_DIR=${DEST_DIR} DEST_NAME=$DEST_NAME$TAR_SUFFIX BACK_TITLE="Choose Location to Create Compressed Archive" CHOSEN_DIR=`Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --dselect "${DEFAULT_DIR}" 30 60` || exit 1 check_dir || exit 1 DEST_DIR=$CHOSEN_DIR # exec xterm -hold -e echo $DE_BUG # Create Archive DEST_NAME=$DROP_NAME$TAR_SUFFIX ; export DEST_NAME BACK_TITLE="Creating Archive" MESSAGE="$DEST_NAME" cd $DROP_DIR ; $TAR_COMMAND $DEST_DIR/$DEST_NAME $DROP_NAME & compressor_box $! # [[ $? -eq 255 ]] && exec xterm -hold -e echo "err"$? "$!"$! "0"$0 "1"$1 "2"$2 # [[ $? -ne 0 ]] && kill $2 && kill $1 && exec xterm -hold -e echo $? $1 $2 # Clean up and notify completion [[ $CLEANUP = "YES" ]] && rm -rf $DROPT_OBJ 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"` CHECK_PROMPT=" Check Here to delete Original Archive" BACK_TITLE="Choose Location to Decompress Debian Archive:\\n$DEST_NAME" CHOICE=`Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --check " $CHECK_PROMPT" off \ --dselect "$DEFAULT_DIR" 30 60` [[ `echo $CHOICE |cut -f2 -d ' '` = "checked" ]] && CLEANUP="YES" CHOSEN_DIR=`echo $CHOICE |cut -f1 -d ' '` # CHOSEN_DIR=`choose_dir_check` && check_dir || exit 1 DEST_DIR=$CHOSEN_DIR # Note creation of arbitrary directory 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 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 ) & expander_box $! [[ $CLEANUP = "YES" ]] && rm -rf $DROPT_OBJ ; BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # Handle RPM archives PROG_2 if [[ `file $@ | grep 'RPM'` ]] ; then DEST_NAME=`basename "$DROP_NAME" ".rpm"` CHECK_PROMPT=" Check Here to delete Original Archive" BACK_TITLE="Choose Location to Decompress RPM Archive:\\n$DROP_NAME" CHOICE=`Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --check " $CHECK_PROMPT" off \ --dselect "$DEFAULT_DIR" 30 60` [[ `echo $CHOICE |cut -f2 -d ' '` = "checked" ]] && CLEANUP="YES" CHOSEN_DIR=`echo $CHOICE |cut -f1 -d ' '` # CHOSEN_DIR=`choose_dir_check` && check_dir || exit 1 DEST_DIR=$CHOSEN_DIR # Notice that we create an arbitrary directory for RPM archives RPM_DIR="$DEST_DIR/$DEST_NAME" ; mkdir -p $RPM_DIR ; DEST_DIR=$RPM_DIR ; ( 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 ) [[ $CLEANUP = "YES" ]] && rm -rf $DROPT_OBJ ; BACK_TITLE="RPM Archive Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # if [[ `file $DROPT_OBJ | grep 'compressed'` ]] ; then DEST_NAME=$DROP_NAME DECOMPRESS_COMMAND="" if [[ `basename "$DROPT_OBJ" |grep ".tar.bz"` ]] || [[ `basename "$DROPT_OBJ" |grep ".tbz"` ]] \ || [[ `basename "$DROPT_OBJ" |grep ".tar.bz2"` ]] || [[ `basename "$DROPT_OBJ" |grep ".tbz2"` ]] ; 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"` ; export DEST_NAME # 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"` ; export DEST_NAME # exec xterm -hold -e echo "12" $DEST_NAME $DECOMPRESS_COMMAND $TAR_COMMAND fi # Decompress Archives if [[ $DECOMPRESS_COMMAND != "" ]] ; then # Choose DEST_DIR CHECK_PROMPT=" Check Here to delete Original Archive" CHOSEN_DIR=`choose_dir_check` || exit 1 [[ `echo $CHOSEN_DIR |cut -f2 -d ' '` = "checked" ]] && CLEANUP="YES" CHOSEN_DIR=`echo $CHOSEN_DIR |cut -f1 -d ' '` DEST_DIR=$CHOSEN_DIR check_dir || exit 1 cd $DEST_DIR ; # exec xterm -hold -e echo $TAR_COMMAND $DROPT_OBJ $DEST_NAME $DEST_DIR MESSAGE="$DROPT_OBJ" $DECOMPRESS_COMMAND $DROPT_OBJ | $TAR_COMMAND & expander_box $! ## good $DECOMPRESS_COMMAND $DROPT_OBJ | $TAR_COMMAND | simple_while_box # if [[ -d $DEST_DIR/$DEST_NAME ]] ; then [[ $CLEANUP = 1 ]] && rm -rf $DROPT_OBJ BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi # exec xterm -hold -e basename "$DROPT_OBJ" # Now do Simple File Decompression if [[ `basename "$DROPT_OBJ" |grep "bz2"` ]] || [[ `basename "$DROPT_OBJ" |grep ".bz"` ]] ; then BACK_TITLE="Uncompressing bzip2 compressed file..." DECOMPRESS_COMMAND="bunzip2 -ck" ; DEST_NAME=`basename "$DEST_NAME" ".bz2"` ; export DEST_NAME # exec xterm -hold -e echo "13" $DEST_NAME $DECOMPRESS_COMMAND $TAR_COMMAND fi if [[ `basename "$DROPT_OBJ" |grep ".gz"` ]] ; then BACK_TITLE="Uncompressing gzip compressed file..." DECOMPRESS_COMMAND="gunzip -c" ; DEST_NAME=`basename "$DEST_NAME" ".gz"` ; export DEST_NAME # exec xterm -hold -e echo "14" $DEST_NAME $DECOMPRESS_COMMAND $TAR_COMMAND $BACK_TITLE fi ### SIMPLE Decompression ### if [[ $DECOMPRESS_COMMAND != "" ]] ; then # Choose DEST_DIR # DEFAULT_DIR=$DROP_DIR/ CHECK_PROMPT="Delete original file" CHOSEN_DIR=`choose_dir_check` || exit 1 [[ `echo $CHOSEN_DIR |cut -f2 -d ' '` = "checked" ]] && CLEANUP="YES" CHOSEN_DIR=`echo $CHOSEN_DIR |cut -f1 -d ' '` DEST_DIR=$CHOSEN_DIR # exec xterm -hold -e echo "14" $DEST_DIR $DROPT_OBJ $DECOMPRESS_COMMAND $CLEANUP MESSAGE="$DROPT_OBJ \\n in $DEST_DIR" #if [[ $CLEANUP = "YES" ]] ; then # cd $DEST_DIR ; # $DECOMPRESS_COMMAND $DROPT_OBJ & # expander_box $! #else cd $DEST_DIR ; $DECOMPRESS_COMMAND $DROPT_OBJ > $DEST_NAME & spinner_box $! #fi [[ $CLEANUP ]] && rm -f $DROPT_OBJ BACK_TITLE="Decompression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 # this is a compressed file but we don't know what it is, or have no method for it else BACK_TITLE="WARNING!" ; MESSAGE="Unrecognized file type, \\n or no decompressor available for: \\n $DROPT_OBJ" ; notify_failure ; exit 1 fi fi # This is a Regular File if [[ -f $DROPT_OBJ ]] ; then DEST_NAME=$DROP_NAME # get compression method and suffix OPTIONS=`choose_file_compression_method` || exit 1 [[ `echo $OPTIONS |cut -f2 -d ' '` = "checked" ]] && CLEANUP="YES" CHOICE=`echo $OPTIONS |cut -f1 -d ' '` case $CHOICE in gzip) COMPRESS_COMMAND="gzip -c" ; SUFFIX=".gz" ;; bzip2) COMPRESS_COMMAND="bzip2 -ck" ; SUFFIX=".bz2" ;; esac export COMPRESS_COMMAND SUFFIX # Get Destination Directory DEST_NAME=$DEST_NAME$SUFFIX BACK_TITLE="Choose Location to Create Compressed File:\\n$DEST_NAME" CHOSEN_DIR=`Xdialog --stdout --title "SqueezeMe" \ --backtitle "$BACK_TITLE" \ --dselect "$DEFAULT_DIR" 30 60` || exit 1 check_dir || exit 1 DEST_DIR=$CHOSEN_DIR # Concatenate Final Name BACK_TITLE="Creating Compressed File" ; MESSAGE="$DEST_NAME" # exec xterm -hold -e echo "14" $DEST_NAME $COMPRESS_COMMAND $CLEANUP cd $DEST_DIR ; ( $COMPRESS_COMMAND $DROPT_OBJ > $DEST_NAME ) & compressor_box $! [[ $CLEANUP = "YES" ]] && rm -f $DROPT_OBJ BACK_TITLE="File Compression" ; MESSAGE="Finished!" ; notify_completion ; exit 0 fi else # Must be a link BACK_TITLE="WARNING!" ; MESSAGE="What's this? Must be a link." ; notify_failure ; exit 1 fi fi exit 0