Skip to content

Instantly share code, notes, and snippets.

@geoff-nixon
Created October 15, 2013 07:20
Show Gist options
  • Save geoff-nixon/6987777 to your computer and use it in GitHub Desktop.
Save geoff-nixon/6987777 to your computer and use it in GitHub Desktop.
Inline web browser and web search for your terminal.
#!/bin/sh ## browse -- Written by Geoff Nixon, 2013. Public domain.
## Drop path as browse', symlink as 'search' or your favorite search engine.
scheme(){ case "$@" in *://*) echo "$@" | sed -e 's/\:\/\/.*//'; esac }
canonicalize(){ if [ $(scheme "$@") ]; then URI="$@"
elif [ -e $(echo $(pwd)/$(dirname "$@")/$(basename "$@")) ]; then
URI=$(echo file://$(pwd)/$(dirname "$@")/$(basename "$@"))
elif [ -e $(echo $(dirname "$@")/$(basename "$@")) ]; then
URI=$(echo file://$(dirname "$@")/$(basename "$@"))
else URI=$(echo http://"$@"); fi; echo $URI
}
inlinebrowser(){ if [ "$(uname)" = "Darwin" ]; then echo '
H4sICHBVWlICA3dmbG93LndmbG93AKVWbW/aMBD+zq/gD5g4jpPYE6pkx8lUad2q
vm2TKlUudVk2iCPHVGO/fiYECIZNpeUDSnJ3z91z58f2uJ6VjT0bP5UT9/9LLc/k
xJa6asbB6mUsjZHLQ3NnbT8P2u/s4lIaOVdWmUuja2VsqZq+W+v1Ik0pH2fq9vZc
HGI0aqYmVj3dHXgNxo01ZTU9ixEXsRAcYJFCgLMQAYIYA6IQtAiLAoWYjYPOeRys
Mwf9Otv6+aJ6mqlLaX94+MH1srFqHnwqH400y4AtrJ5Lq03wUdnhnZwt1FA/DzcV
jjbt6ML7Obb9eE0b3kVwnXXN6fxJVbZ8LpXxgCd6PpJ17Wrecho5Tg8tpwf9/LDh
5JHJZrJphp8dlY5GZ31N7HlVL2xv1p2RQEcC5TFIaSwA5igCLMMpiKIi5RFCHLHC
Q/qysEehWIKwaw8EhCU5wCjNAGdJBEJMIREFoXnCPahDEJjkUSZIBPIoR67xCQKU
FBwkOWSY0ixMSeSBzPRE9oTQ2SJIRzFc/T5gko7aJ+hFVuXjbt2duOzuB97CCzJd
WTfwJrhSjV6YiWoCLhs1mtVG/wzmsqxGLmGvhD1J/FfX75PLV/XYlFYNL3W9qN8o
E90O/WZZqxs57ayl4ztV5gyNg83jGq3WLp/DO3QNd67rbab8owptXJ1b38HWmVLP
20ozVfbaxXzzcMlqtvtF7Jy/e85pQjzgRaMMm7rhHamiB7wZ1Rsl3s3hoZ3DbuM4
puwtDrvoolyQi2L7wzum7G1oiHJOBY8BD9MYYMoxYIQiUBDCQ5jBLOV0H8lX9q4K
EYYwEhnIClEATJwqCS8g4DBlLC1YImIP6lg9bj8hJMudtDEFGJIYEJohEGcRjSOY
E8ijfZB9ZQ+OSDsi2Jf2obJPkMj9oC+SUyXtH3JBd2SvipjoqnInqt7X1nqpFmGe
poznIMbQtZcLCmjmGp3mOU9DnidRIQ4U+Wz03OP3ms1zCBzJk3bZtZr0G6bZ5jpt
7EeuCZsT+p/3oHcf3avQ8hQlb7f+G/XbeivvUMO3V+f7Pi+rQ6TPJtgR79htXtd3
wr8PX5ASGwoAAA=='| openssl base64 -d | gzcat>/tmp/.browser.wflow
automator -D URI="$@" /tmp/.browser.wflow 2>&1 >/dev/null &
fi
}
identifybrowser(){ if [ "$(uname)" = "Darwin" ]; then case "$@" in
*urora) BUNDLEIDENTIFIER=org.mozilla.aurora ;;
*amino) BUNDLEIDENTIFIER=org.mozilla.camino ;;
*anary) BUNDLEIDENTIFIER=com.google.Chrome.canary ;;
*hrome) BUNDLEIDENTIFIER=com.google.chrome ;;
*hromium) BUNDLEIDENTIFIER=org.chromium.Chromium ;;
*irefox) BUNDLEIDENTIFIER=org.mozilla.firefox ;;
*axthon) BUNDLEIDENTIFIER=com.maxthon.Maxthon ;;
*etscape|*avigator) BUNDLEIDENTIFIER=com.netscape.navigator ;;
*ext) BUNDLEIDENTIFIER=com.operasoftware.OperaNext ;;
*pera) BUNDLEIDENTIFIER=com.operasoftware.opera ;;
*afari) BUNDLEIDENTIFIER=com.apple.safari ;;
*ebkit) BUNDLEIDENTIFIER=org.webkit.nightly.WebKit ;;
esac; echo $BUNDLEIDENTIFIER; fi
}
searchengine(){ case "$SEARCHENGINE" in
*ing*) ENGINE=http://bing.com/search ;;
*ahoo*) ENGINE=http://search.yahoo.com/search ;;
*uck*o*) ENGINE=http://duckduckgo.com/ ;;
*oogle*|*) ENGINE=http://google.com/search ;;
esac; echo $ENGINE
}
browse(){
if [ "$BROWSER" = "browse" ]; then BROWSER=$WEB_BROWSER; fi
if [ $(identifybrowser "$BROWSER") ]; then
open -b $(identifybrowser "$BROWSER") $(canonicalize "$@")
elif [ x"$BROWSER" != x"" ]; then "$BROWSER" $(canonicalize "$@")
elif [ "$(uname)" = "Darwin" ]; then inlinebrowser $(canonicalize "$@")
else echo "Sorry, I can't find your web browser. Please set BROWSER."; fi
}
search(){ browse "$(searchengine)?q=$(echo "$@"|sed -e 's/\ /\+/g')" ;}
case "$(basename $0)" in
browse) browse "$@" ;;
search) search "$@" ;;
*ing*|*ahoo*|*uck*o*|*oogle*) SEARCHENGINE=$(basename $0) search "$@" ;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment