#!/bin/bash # Image crop selector #set -x #If NO, then for real TESTRUN=NO #DIR=/home/houghi/Pictures/to_work_on/wpm/to_sort DIR=/home/houghi/Pictures/to_work_on/wpm/sorted/crop TARGET=/home/houghi/Pictures/to_work_on/wpm/sorted # Settings #clear WTERM_A="DISPLAY=:0.0 /home/houghi/bin/link/wterm5 -g" WTERM_B="-tr -bg green -sh +sb &" killall wterm3 > /dev/null 2>&1 & # Testrun? if [ "$TESTRUN" == "NO" ] then CP=mv else CP=cp TARGET=~/tmp fi #Add the directories, if needed for TDIR in crop add delete wait do test -d $TARGET/$TDIR || mkdir -p $TARGET/$TDIR done # Character codes generated by the keypresses. arrowup='\[A' arrowdown='\[B' arrowrt='\[C' arrowleft='\[D' insert='\[2' delete='\[3' STARTTIME=`date +%s` SUCCESS=0 OTHER=65 PICSCOUNT=0 # Show the overlay OVERLAY () { SIZE=`jhead $FILE|grep ^Resolution` echo $SIZE A1=`echo $SIZE|awk '{print $3}'` # WIDTH B1=`echo $SIZE|awk '{print $5}'` # HIGTH SCALE=`echo "($A1/$B1)*1000"|bc -l|awk -F\. '{print $1}'` killall wterm5 > /dev/null 2>&1 & if [ "$SCALE" -le "1600" ] then HOR=`echo "(1200-(1200/1920*($A1*(1200/$B1))))/2"|bc -l|awk -F\. '{print $1}'` # H1 DISPLAY=:0.0 /home/houghi/bin/link/wterm5 -g \ 290x1-0+$HOR \ -tr -bg green -sh +sb & DISPLAY=:0.0 /home/houghi/bin/link/wterm5 -g \ 290x1-0-$HOR \ -tr -bg green -sh +sb & else VER=`echo "(1920-(1920/1200*($B1*(1920/$A1))))/2"|bc -l|awk -F\. '{print $1}'` # V1 DISPLAY=:0.0 /home/houghi/bin/link/wterm5 -g \ 1x150+$VER-0 \ -tr -bg green -sh +sb & #V2 DISPLAY=:0.0 /home/houghi/bin/link/wterm5 -g \ 1x150-$VER-0 \ -tr -bg green -sh +sb & fi } #What to do First level # UP : Crop the file UP () { echo "To crop" #$CP $FILE $TARGET/crop/ mogrify -crop 1920x1200+0+0 $FILE } # DOWN : Delete the file DOWN () { echo "To delete " #$CP $FILE $TARGET/delete/ GO=`echo "$B1-1200"|bc -l|awk -F\. '{print $1}'` mogrify -crop 1920x1200+0+$GO $FILE } # LEFT : Decide later LEFT () { echo "To decide later " #$CP $FILE $TARGET/wait/ $CP $FILE /home/houghi/Pictures/to_work_on/wpm/to_sort } # RIGHT : Add to the file RIGHT () { echo "To add " #$CP $FILE $TARGET/add/ GO=`echo "($B1-1200)/2"|bc -l|awk -F\. '{print $1}'` mogrify -crop 1920x1200+0+$GO $FILE } # INSERT : Quit INSERT () { echo "Quiting " killall wterm5 > /dev/null 2>&1 & DISPLAY=:0.0 /home/houghi/bin/link/wterm3 -g 150x5-64+1142 \ -tr -bg green -fg yellow -sh +sb -e tail -f \ /home/houghi/Pictures/to_work_on/files/wallpaper_list & exit $SUCCESS } # ENTER : Crop the file ENTER () { echo "Refresh " OVERLAY DISPLAY=:0.0 /usr/bin/wmsetbg -a $FILE & KEYPRESS_1 } # Find the key pressed KEYPRESS_1 () { # May need to also press ENTER if a key not listed above pressed. read -n3 key # Read 3 characters. echo -n "$key" | grep "$arrowup" #Check if character code detected. if [ "$?" -eq $SUCCESS ] then SELECT=UP fi echo -n "$key" | grep "$arrowdown" if [ "$?" -eq $SUCCESS ] then SELECT=DOWN fi echo -n "$key" | grep "$arrowrt" if [ "$?" -eq $SUCCESS ] then SELECT=RIGHT fi echo -n "$key" | grep "$arrowleft" if [ "$?" -eq $SUCCESS ] then SELECT=LEFT fi echo -n "$key" | grep "$insert" if [ "$?" -eq $SUCCESS ] then SELECT=INSERT fi if [ "$key" == "" ] then SELECT=ENTER fi clear } # Show some stats SET_TIMERS () { # Set the timers let PICSCOUNT=PICSCOUNT+1 ENDTIME=`date +%s` ((DIFF_SEC=ENDTIME-STARTTIME)) TOTTIME=`echo - | awk '{printf "%d:%d:%d","'"$DIFF_SEC"'"/(60*60),"'"$DIFF_SEC"'"%(60*60)/60,"'"$DIFF_SEC"'"%60}'` AVGTIME=`echo "scale=1; $DIFF_SEC/$PICSCOUNT"|bc -l` echo "Running time is $TOTTIME" echo "You have done $PICSCOUNT images at an average of $AVGTIME seconds per image" echo "" } # The first part of the sorting for FILE in `find $DIR -type f -name "*.jpg"` do OVERLAY DISPLAY=:0.0 /usr/bin/wmsetbg -a $FILE & echo "" echo -n "Press a key... " echo " " echo " Crop" echo "No change Add" echo " Delete" echo " " echo "Insert is quit" echo " " KEYPRESS_1 case "$SELECT" in UP) UP;; DOWN) DOWN;; RIGHT) RIGHT;; LEFT) LEFT;; INSERT) INSERT;; ENTER) ENTER;; esac SET_TIMERS done INSERT