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