dotfiles/.local/bin/duck

32 lines
571 B
Bash
Executable File

#! /bin/bash --
command -v lynx >/dev/null 2>&1 || { echo "Need lynx"; exit 1; }
urlencode () {
local str="$*"
local encoded=
local i c x
for (( i=0; i < ${#str}; ++i )); do
c=${str:$i:1}
case "$c" in
[-_.~a-zA-Z0-9] ) x="$c" ;;
* ) printf -v x '%%%02x' "'$c" ;;
esac
encoded+="$x"
done
printf %s "$encoded"
}
if [ -t 0 ]; then
query=$(urlencode "$*")
dump=
else
query=$(urlencode "$(tr -d '\n')")
dump="-dump"
fi
base="https://duckduckgo.com/lite?q="
[ "$0" = "ggl" ] && base="https://www.google.com/search?q="
exec lynx $dump "$base$query"