* Kalle Arvidsson <klaa...@gmail.com> [2010-03-20 21:23]:
> On Sat, Mar 20, 2010 at 02:45:40PM -0400, Paul O'Leary McCann wrote:
> > On Sat, Mar 20, 2010 at 01:53:17PM -0400, Brandon Ros wrote:
> > > The configuration file would contain the URL to append the URL-encoded
> > > terms to and a keyboard shortcut.
> > 
> > There's a patch for that:
> > 
> > http://surf.suckless.org/patches/searchengines
> > 
> > I'd appreciate its incorporation in the mainline, though, as well as
> > sourcing a file rather than having them compiled in. -POLM
> > 
> 
> I don't think this needs to be a part of the browser, why not use an
> external program? 

+1

It's better done outside surf. With the benefit of multiple sane (scriptable)
browser (or other apps) sharing history, bookmarks, keywords, whatever.  As an
example:

~/bin/bmark-keywords is a shell script that does:

- return $1 if it's an URL
- find the URL corresponding to keyword $1 according to simple bookmark file
  - substitute the rest of $@ for '%s' in the found URL
  - return the URL


I use it in wrappers for w3m, lynx, surf, like

        % www_dump leo cow

making use of the following item in the bookmarks file:
http://dict.leo.org/ende?lang=de&spellToler=on&relink=on&search=%s  :leo 


Or inside scriptable browsers, e.g. surf, uzbl, or with the dictionary binding
of w3m, for instance:

---->8--------- surf/config.h
[...]
#define SETURI()       { .v = (char *[]){ "/bin/sh", "-c", \
        "query=\"`xprop -id $0 _SURF_URI | cut -d '\"' -f 2 | dmenu `\" && " \
        "prop=\"`~/bin/bmark-keywords $query`\" && " \
        "xprop -id $0 -f _SURF_URI 8s -set _SURF_URI \"$prop\" " \
        winid, NULL } }
#define PASTEURI()       { .v = (char *[]){ "/bin/sh", "-c", \
        "query=\"`sselp`\" && " \
        "prop=\"`~/bin/bmark-keywords $query`\" && " \
        "xprop -id $0 -f _SURF_URI 8s -set _SURF_URI \"$prop\" " \
        winid, NULL } }
[...]
----8<--------- surf/config.h

Or with poor man's command line history enabled, if you like:

---->8--------- surf/config.h
[...]
#define SETURI()       { .v = (char *[]){ "/bin/sh", "-c", \
        "curr=\"`xprop -id $0 _SURF_URI | cut -d '\"' -f 2`\" && " \
        "query=\"`(echo $curr; cat ~/.surf/history-cl) | dmenu `\" && " \
        "prop=\"`~/bin/bmark-keywords $query`\" && " \
        "xprop -id $0 -f _SURF_URI 8s -set _SURF_URI \"$prop\"; " \
        "grep \"$query\" ~/.surf/history-cl || echo \"$query\" >> 
~/.surf/history-cl ", \
        winid, NULL } }
#define PASTEURI()       { .v = (char *[]){ "/bin/sh", "-c", \
        "query=\"`sselp`\" && " \
        "prop=\"`~/bin/bmark-keywords $query`\" && " \
        "xprop -id $0 -f _SURF_URI 8s -set _SURF_URI \"$prop\" ; " \
        "grep \"$query\" ~/.surf/history-cl || echo \"$query\" >> 
~/.surf/history-cl ", \
        winid, NULL } }
[...]
----8<--------- surf/config.h


cheers

-- 
 stanio_

Reply via email to