summaryrefslogtreecommitdiff
path: root/.uzbl/scripts/load_url_from_surfraw.sh
blob: 641ca3c0ad8b61b03cb8ed52241bd477960aec7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/bash

# Default search engine. If we really are at a loss, use this
DEFAULT_SEARCH=google

# The location of the surfraw bookmark file
BOOKMARKS="$HOME/.surfraw.bookmarks"

# Colors for dmenu
COLORS=" -nb #303030 -nf khaki -sb #CCFFAA -sf #303030"

# Prompt for dmenu
PROMPT="Open"

# Use surfraw to search for the words
function search()
{
    # Does surfraw know what to do with it?
    url=`surfraw -print $@`

    # If not, then use the default search engine
    if [ $? -ne 0 ]
    then
        url=`surfraw -print $DEFAULT_SEARCH $@`
    fi

    echo $url
}

# We assume that this is a URL
function goto()
{
    case "$1" in
        *:*) echo $1 ;;
        *) echo "http://$1" ;;
    esac
}

# Use dmenu to navigate through possible choices
function present_menu()
{
    elvi=`surfraw -elvi | cut -f 1 | tail --lines=+2`
    if [ -r "$BOOKMARKS" ]
    then
        bookmarks=" `cut -f 1 -d ' ' "$BOOKMARKS" 2>/dev/null`"
    else
        bookmarks=""
    fi

    echo "${elvi}${bookmarks}" | tr ' ' '\n' | sort | dmenu -p "$PROMPT" -i $COLORS
}

present_menu | \
    ( read car cdr
test -z "$car" && exit 1
( test -z "$cdr" && echo $car | fgrep -c '.
:' > /dev/null && goto $car ) || search "$car $cdr" )