KDE: sending files to a script from the browser

Joel Hammer joel
Mon May 17 11:56:30 PDT 2004


Well, my first effort at a swarm script worked, but only for a small number
of files. If files > 10, my system slows down a lot.

So, version 2.

KDE starts up all the scripts with the open with command, but each script
immediately suspends itself with SIGSTOP.  This saves CPU time.

A master script is started or is running in the background, whatever, and
this wakes up each of the slave scripts sequentially by sending them a
SIGCONT signal.

This actually works for a large number of scripts, although KDEinit
starts taking up a lot of CPU time.

KDE is a weak sister, IMHO.

A slave (Comment.scr) script aborts the entire editing session by sending
a SIGUSR1 to the master script (Master.scr), which then sends all the
scripts a kill signal.

I think I could have gotten away without a separate master script by
having each slave script become the master script in turn, but, the
single master script seemed much easier to to.

Who says linux can't be fun and useful?

Now to label all those Hawaiian  photos. This is where my wife comes
in. I sure hope she likes vim.

Joel

The MASTER script, Master.scr

#!/bin/bash
abort()
{
rm junkwaiting
ps ax | grep Comment.scr | sed "s/^ *//" | cut -f1 -d " " > junkwaiting
[ -s junkwaiting ] && {
while read i
do
kill -9 $i
echo kill -9 $i
done < junkwaiting
}
}
trap abort SIGUSR1 
j=0
while [ "$j" -le 1 ]
do
	ps ax | grep -v grep | grep vim
  [ $? -eq 0 ] &&   echo "vim is running"  || {
    ps ax | grep Comment.scr  | sed "s/^ *//" | cut -f1 -d" " > junkwaiting
    read i < junkwaiting
    echo $i
		[ -z "$i" ] || kill -SIGCONT $i 
                 }
sleep 2
done

END OF MASTER SCRIPT

The slave script, Comment.scr

 
#!/bin/bash
AbortAll()
{
ps ax | grep Master.scr | sed "s/^ *//" | cut -f1 -d" " >  junk$2
read i < junk$2
rm junk$2
kill -SIGUSR1 $i 
}
editcomment()
{
MAGICK_HOME=/usr/bin/ImageMagick-5.5.7
  export MAGICK_HOME
  echo "This is the current comment in this file" > junkheader.txt
	echo "Edit the comment between  the =================" >> junkheader.
	echo "=================================================" >> junkheader.txt
  echo "=================================================" > junktail.txt
	echo "This was the last comment used " >> junktail.txt
  cat /root/junkcomment | sed -n "/^=/,/^=/p" | sed /^=/d >> junktail.txt
	rm /root/junkcomment
	echo Instructions: >> junktail.txt
	echo "To end all commenting, enter ABORT or Abort or abort on the first line of the page and :wq" >> junktail.txt
	echo "To erase the current comment, erase this entire page and exit" >> junktail.txt
	echo "To skip just this case, enter Cancel or CANCEL or cancel on the first line of this page and :wq" >> junktail.txt
  rm /root/.junkcomment.swp 2>/dev/null 
  rm /tmp/junk 2>/dev/null
	xv $1 &
  konsole -e /usr/bin/vim  /root/junkcomment \
     -c "r junkheader.txt"  \
		 -c "$" \
     -c "r ! identify -verbose $1 | \
  	          sed -n \"/comment/,/signature/p\" | \
              sed \"s/ *comment: *//\" | \
  					 sed \"/signature.*/d\" " \
     -c "$" \
     -c "r junktail.txt" 
killall xv
[ -s /root/junkcomment ] && 
     {
     read a < /root/junkcomment
		 echo This is a $a
		 case $a in
      *abort* ) echo "Will try to abort" >> junkmessages
			          AbortAll $0 $$;;
			*Abort* ) AbortAll $0 $$;;
			*ABORT* ) AbortAll $0 $$;;
      *CANCEL* ) d=e;;
			*cancel* ) echo Have tried to cancel;;
			*Cancel* ) d=e;;
		  *     )	
			        rm /tmp/file
			        convert -comment "`cat /root/junkcomment | sed -n "/^=/,/^=/p" | sed /^=/d ` " $1 /tmp/file 
              cp /tmp/file $1;;
			esac
	   }
}
# =================Start of program==================================
kill -SIGSTOP $$
editcomment $1 $$ 


More information about the Linux-users mailing list