#!/bin/bash #Released under GNU General Public License version 3, see the file COPYING for details. progname=$0 let rc=0 o=`getopt -n$progname -o"r:R:mb" -- "$@"`||let rc=$? if test $rc -ne 0 then echo "usage: $0 [-r] [-R] [-m] [-b] []" exit $rc fi eval set -- "$o" restrict="" hide="" searchmime="" bookmark="" while test "$1" != "--";do if test "$1" = '-r' then restrict="$2" shift 2 elif test "$1" = '-m' then searchmime="y" shift 1 elif test "$1" = '-b' then bookmark="y" shift 1 elif test "$1" = "-R" then hide="$2" shift 2 fi done shift 1 test -n "$restrict"&&echo "only showing entries with $restrict" test -n "$hide"&&echo "hiding entries with $hide" runme='enter' runwithdir='right' #runwithdir is the right arrow down='down' up='up' quit='q' search='/' findnext='n' findprev='N' back='left' create='c' #create is c createdir='C' info='i' move='m' view='v' edit='e' print='p' home_dir='home' tty=`getterm` test ! -d $HOME/.kies&&mkdir $HOME/.kies let parms=$# command=$1 let vlak=50 movesource="" function getlist() { ls | sort > $HOME/.kies/"$tty"pick.txt einde=`wc -l $HOME/.kies/"$tty"pick.txt|cut -f1 -d' '` if (test $einde -eq 0) then echo -n $PWD" is empty" let einde=1 fi plek=1 wag='b' let passings=0 let next=1 } function move_data() { if test -z "$movesource" then movesource="$PWD/$lyn" echo "moving $movesource" let plek=$plek-1 return fi movetarget="$PWD/`basename $movesource`" read -e -p"moving $movesource to " -i "$movetarget" movetarget read -e -p"continue with the move? y/n " -i"y" go_on if test "$go_on" = "y" then mv "$movesource" "$movetarget"&&\ echo "moved $movesource"||echo "move failed" movesource="" getlist else echo "move canceled" fi } function read_bookmark() { if (test -e "$HOME"/.kies/."$tty"bookmark) then ouplek=`cut -f1 -d: "$HOME"/.kies/."$tty"bookmark` oufile=`cut -f2 -d: "$HOME"/.kies/."$tty"bookmark` oudir=`dirname "$oufile"` if test -e "$oudir" then cd "$oudir" getlist let plek=$ouplek test $plek -gt $einde&&let plek=$einde else echo "cannot change to bookmark: $oudir, reverting to $HOME" cd "$HOME" getlist fi fi } function activate() { if (test $parms -eq 0) then echo $PWD/$lyn > "$HOME"/.kies/."$tty"file else $command "$lyn" fi #write bookmark echo "$plek":$PWD/$lyn > "$HOME"/.kies/."$tty"bookmark } getlist if (test "$bookmark" = "y") then read_bookmark fi shown=0 while (test $plek -le $einde);do lyn=`sed -n "$plek"p $HOME/.kies/"$tty"pick.txt` if test "$searchmime" = "y" then wysdit=`file -Ni "$lyn"|cut -f2 -d' '|grep -c -i "$restrict"` else wysdit=`echo "$lyn"|grep -c -i "$restrict"` fi #echo "wysdit/$wysdit/ restricted /$restrict/ lyn /$lyn/" if test $wysdit -eq 1 -o -d "$lyn" then echo -n "$lyn " test -d "$lyn"&&echo -n " directory " wag=`catchkey` shown=1 fi clear if (test "$wag" = "$quit") then exit 3 fi if (test "$wag" = "$create") then read -p"new name? " lyn activate exit fi if (test "$wag" = "$createdir") then read -p"new directory name? " dirname mkdir "$dirname"&&\ getlist&&\ let plek=`sed -n /$dirname/= $HOME/.kies/"$tty"pick.txt`-1&&echo "plek $plek"||echo "Could not create $dirname" wag='z' fi if (test "$wag" = "$move") then move_data fi if (test "$wag" = "$up") then let plek=$plek-2 test $plek -lt 0&&let plek=$einde-1 fi if (test "$wag" = "$findnext") then if (test $passings -gt 0) then let next=$next+1 if (test $next -gt $passings) then let next=1 let plek=1 echo -n "wrapping " fi gekry=`echo $ooral|cut -f$next -d' '` while(test $gekry -lt $plek -a $next -lt $passings);do let next=$next+1 gekry=`echo $ooral|cut -f$next -d' '` done let plek=$gekry-1 wag='b' else wag=$search fi fi if (test "$wag" = "$findprev") then if (test $passings -gt 0) then let next=$next-1 if (test $next -lt 1) then let next=$passings echo -n "wrapping " fi gekry=`echo $ooral|cut -f$next -d' '` let plek=$gekry-1 wag='b' else wag=$search fi fi if (test "$wag" = "$search") then read -p "search for? " soek wag='b' ooral=`sed -n /$soek/= $HOME/.kies/"$tty"pick.txt` passings=`echo $ooral|wc -w` if (test $passings -gt 0) then gekry=`echo $ooral|cut -f$next -d' '` while(test $gekry -lt $plek -a $next -lt $passings);do let next=$next+1 gekry=`echo $ooral|cut -f$next -d' '` done let plek=$gekry-1 else echo "$soek not found" let plek=$plek-1 fi fi if (test "$wag" = "$info") then file "$lyn" let plek=$plek-1 wag="z" fi if (test "$wag" = "$view") then see "$lyn" let plek=$plek-1 wag="z" fi if (test "$wag" = 'w') then echo "you are in: $PWD" let plek=$plek-1 wag="z" fi if (test "$wag" = "$home_dir") then cd "$HOME" echo "Returning to home directory" getlist let plek=$plek-1 wag="z" fi if (test "$wag" = 'h') then echo "help keys" wag="z" fi if (test "$wag" = "$runwithdir") then activate exit fi if (test "$wag" = "$runme") then if (test ! -d "$lyn") then activate exit else echo $lyn is a directory let houplek[$vlak]=$plek cd "$lyn" let vlak=$vlak+1 shown=0 getlist let plek=0 fi fi if (test "$wag" = "$back") then cd .. let vlak=$vlak-1 getlist let plek=${houplek[$vlak]}-1 test $plek -lt 1&&let plek=0 fi if test $plek -eq $einde then let plek=0 if test $shown -eq 0 then echo -n "no entries with $restrict in this directory" wag=`catchkey` fi fi let plek=$plek+1 done