Hi,
I modified your original surf.sh because it makes two xprop calls every time
it is invoked, which is unnecessary overhead. I also attach below my own surf2.sh
which implements as minimally as I can figure out how the history functions mentioned
in the last e-mail.
================= surf.sh ==========================
#!/bin/sh
# $1 = $xid
# $2 = $p = _SURF_FIND _SURF_BMARK _SURF_URI (what SETPROP sets in config.h)
#
# // replace default setprop with this one
# #define SETPROP(p) { .v = (char *[]){ "/bin/sh", "-c", "surf.sh $1 $0", p, winid, NULL } }
#
# // fix shift+slash keybinding in spanish keyboard (f.example)
# { MODKEY, GDK_s, spawn, SETPROP("_SURF_FIND") },
# { MODKEY, GDK_b, spawn, SETPROP("_SURF_BMARK") },
# { MODKEY|GDK_SHIFT_MASK, GDK_g, spawn, SETPROP("_SURF_URI_RAW") },
font='-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*'
normbgcolor='#181818'
normfgcolor='#e9e9e9'
selbgcolor='#dd6003'
selfgcolor='#e9e9e9'
bmarks=~/.surf/bookmarks.txt
xid=$1
p=$2
dmenu="dmenu -e $xid -fn $font -nb $normbgcolor -nf $normfgcolor \
-sb $selbgcolor -sf $selfgcolor"
s_get_prop() {
xprop -id $xid $1 | cut -d '"' -f 2
}
s_set_prop() {
[ -n "$2" ] && xprop -id $xid -f $1 8s -set $1 "$2"
}
case "$p" in
"_SURF_FIND")
find="`echo $(s_get_prop _SURF_FIND) | $dmenu -p find:`"
s_set_prop _SURF_FIND "$find"
;;
"_SURF_BMARK")
uri=`s_get_prop _SURF_URI`
grep "$uri" $bmarks >/dev/null 2>&1 || echo "$uri" >> $bmarks
;;
"_SURF_URI_RAW")
uri=`echo $(s_get_prop _SURF_URI) | $dmenu -p "uri:"`
s_set_prop _SURF_URI "$uri"
;;
"_SURF_URI")
sel=`tac $bmarks 2> /dev/null | $dmenu -p "uri [dgtwy*]:"`
[ -z "$sel" ] && exit
opt=$(echo $sel | cut -d ' ' -f 1)
arg=$(echo $sel | cut -d ' ' -f 2-)
case "$opt" in
"d") # del.icio.us
uri="http://del.icio.us/save?url=`s_get_prop _SURF_URI`"
;;
"g") # google for it
uri="http://www.google.com/search?q=$arg"
;;
"t") # tinyurl
uri="http://tinyurl.com/create.php?url=`s_get_prop _SURF_URI`"
;;
"w") # wikipedia
uri="http://wikipedia.org/wiki/$arg"
;;
"y") # youtube
uri="http://www.youtube.com/results?search_query=$arg&aq=f"
;;
*)
uri="$sel"
;;
esac
s_set_prop _SURF_URI "$uri"
;;
*)
echo Unknown xprop
;;
esac
========================================surf2.sh======================
#!/bin/sh
# $1 = $xid
# $2 = $p = _SURF_FIND _SURF_BMARK _SURF_URI (what SETPROP sets in config.h)
#
# // replace default setprop with this one
# #define SETPROP(p) { .v = (char *[]){ "/bin/sh", "-c", "surf.sh $1 $0", p, winid, NULL } }
#
# // fix shift+slash keybinding in spanish keyboard (f.example)
# { MODKEY, GDK_s, spawn, SETPROP("_SURF_FIND") },
# { MODKEY, GDK_b, spawn, SETPROP("_SURF_BMARK") },
# { MODKEY|GDK_SHIFT_MASK, GDK_g, spawn, SETPROP("_SURF_URI_RAW") },
font='-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*'
normbgcolor='#181818'
normfgcolor='#e9e9e9'
selbgcolor='#dd6003'
selfgcolor='#e9e9e9'
bmarks=~/.surf/bookmarks.txt
ffile=~/.surf/find.txt # pjh
xid=$1
p=$2
dmenu="dmenu -e $xid -fn $font -nb $normbgcolor -nf $normfgcolor \
-sb $selbgcolor -sf $selfgcolor"
s_get_prop() {
xprop -id $xid $1 | cut -d '"' -f 2
}
s_set_prop() {
[ -n "$2" ] && xprop -id $xid -f $1 8s -set $1 "$2"
}
case "$p" in
"_SURF_FIND")
#find="`echo $(s_get_prop _SURF_FIND) | $dmenu -p find:`"
find="`tac $ffile 2>/dev/null | $dmenu -p find:`" # pjh
s_set_prop _SURF_FIND "$find"
grep "$find" $ffile >/dev/null 2>&1 || echo "$1" >> $ffile # pjh
;;
"_SURF_BMARK")
uri=`s_get_prop _SURF_URI`
grep "$uri" $bmarks >/dev/null 2>&1 || echo "$uri" >> $bmarks
;;
"_SURF_URI_RAW")
uri=`echo $(s_get_prop _SURF_URI) | $dmenu -p "uri:"`
s_set_prop _SURF_URI "$uri"
;;
"_SURF_URI")
sel=`tac $bmarks 2> /dev/null | $dmenu -p "uri [dgtwy*]:"`
[ -z "$sel" ] && exit
opt=$(echo $sel | cut -d ' ' -f 1)
arg=$(echo $sel | cut -d ' ' -f 2-)
case "$opt" in
"d") # del.icio.us
uri="http://del.icio.us/save?url=`s_get_prop _SURF_URI`"
;;
"g") # google for it
uri="http://www.google.com/search?q=$arg"
;;
"t") # tinyurl
uri="http://tinyurl.com/create.php?url=`s_get_prop _SURF_URI`"
;;
"w") # wikipedia
uri="http://wikipedia.org/wiki/$arg"
;;
"y") # youtube
uri="http://www.youtube.com/results?search_query=$arg&aq=f"
;;
*)
uri="$sel"
;;
esac
xprop -id $xid -f WM_ICON_NAME 8s -set WM_ICON_NAME "" >/dev/null 2>&1 # pjh because surf doesn't sometimes
s_set_prop _SURF_URI "$uri"
name=`xprop -id $xid WM_ICON_NAME | cut -d '"' -f 2` # pjh
while echo $name | grep "[*%\]" >/dev/null 2>&1; do # pjh
name=`xprop -id $xid WM_ICON_NAME | cut -d '"' -f 2` #pjh
done # pjh
if [[ $name != "Error" ]]; then # pjh
grep "$sel" $bmarks >/dev/null 2>&1 || echo "$sel" >> $bmarks #pjh
fi #pjh
;;
*)
echo Unknown xprop
;;
esac
Peter
-- sic dicit magister P. http://individual.utoronto.ca/peterjh/ On Fri, 2 Apr 2010, Nibble wrote: > On Fri, 2 Apr 2010 09:32:41 -0400 (EDT) > Peter John Hartman <peterjohnhartman_AT_gmail.com> wrote: > >> Hi nibbles (and pancake et al): > > Hi Peter, (it is *nibble* ;) > >> Looks even better (once more)! But you still don't store stuff to a >> local history file, except when one explicitly bookmarks the page. >> Two of the goals of the script, I think, are to: >> >> (1) store all find transactions to a find.history.txt file. > > In the last version of the script, only the last keyword is "stored". > From my point of view it is enough in most cases, I think that store > all the searched keywords adds unnecessary complexity. > >> (2) store all set uri transactions to a history.txt file, provided >> they are successful. also, i like storing my set uri transactions >> prior to any processing, e.g., store "g foobar" rather than the ugly >> looking "http://www.google.com/search?q=foobar". > > I've been talking with pancake and neither him nor me will use this > feature, that's because we didn't add it to the script. > > Anyway, these features could be useful for other people, so it's almost > sure that surf2.sh will be welcome :) > >> Best, >> Peter > > Best regards, > -- nibble >Received on Fri Apr 02 2010 - 15:20:12 UTC
This archive was generated by hypermail 2.2.0 : Fri Apr 02 2010 - 15:24:02 UTC