diff options
-rwxr-xr-x | surf-menu | 75 |
1 files changed, 60 insertions, 15 deletions
@@ -2,22 +2,31 @@ set -e BOOKMARDS=~/notes/bookmarks.md +# TODO history +#HISTORY=~/notes/.surf_history + +set_uri() { + if [ -n "$XID" ]; then + xprop -id "$XID" -f "_SURF_GO" 8s -set "_SURF_GO" "$1" + else + surf "$1" & + fi +} run() { - echo "Run $1" - echo "$1" | grep -qE '^~?/' || true - echo $? if echo "$1" | grep -qE '^\?'; then # We do search on duckduckgo - surf "https://duckduckgo.com/?q=${L#?}&t=surf&kk=-1&ia=web" & + set_uri "https://duckduckgo.com/?q=${L#?}&t=surf&kk=-1&ia=web" elif echo "$1" | grep -qE '^~?/'; then # This is local path - surf "${1/#\~/$HOME}" & + set_uri "${1/#\~/$HOME}" elif echo "$1" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'; then # This ipv4 address - surf "$1" & + set_uri "$1" + + # TODO ipv6 address else # We follow address @@ -44,17 +53,53 @@ run() { fi fi - surf "$LPROTOCOL://$LHOST/$LPATH" & + set_uri "$LPROTOCOL://$LHOST/$LPATH" fi } -if [ -n "$1" ]; then - run "$1" - exit -else - # Note: Bookmarks starts with '* ' - sed -n 's/\* //p' "$BOOKMARDS" | dmenu -p 'surf' | while read L; do - run "$L" - done +XID="" +ADDCH="" + +while [ $# -gt 0 ]; do + case "$1" in + -h|--h) + echo "This is menu script for surf web browser." + echo "Usage: $0 [OPTION]..." + echo + echo "Options:" + echo " --help, -h" + echo " Print this help text." + echo " --xid XID" + echo " Instead of opening new surf instance set url to existing one" + exit + ;; + --xid) + XID="$2" + shift + ;; + -a|--add) + shift + ADDCH="$ADDCH +$1" + ;; + *) + echo "Unknown option $1" >&2 + exit 1 + ;; + esac + shift +done + +# If XID is given then as first one add current uri +if [ -n "$XID" ]; then + ADDCH="$(xprop -id "$XID" _SURF_URI | sed 's/.*= "\(.*\)"/\1/')" fi + +# Note: Bookmarks starts with '* ' +CHOOSE="$ADDCH +$(sed -n 's/\* //p' "$BOOKMARDS")" + +echo "$CHOOSE" | sed '/^\s*$/d' | dmenu -p 'surf' | while read L; do + run "$L" +done |