|
|
- #!/bin/bash
- ##############################################################################
- # browser-exec
- # -----------
- # Opens a hyperlink in the browser that is currently being run in a container.
- # First checks if firefox is running then chrome.
- # If neither are running it starts a firefox container.
- #
- # Usage:
- # browser-exec $uri
- #
- # Based on the amazing work of Jess Frazelle
- #
- # Dependancies: firefox, chrome, nsenter, xdg
- #
- # :authors: Levi Olson
- # :date: 1 Feb 2018
- # :version: 0.0.1
- ##############################################################################
- #set -e
- set -o pipefail
-
- browser_exec() {
- # check if firefox container is running
- firefox_state=$(docker inspect --format "{{.State.Running}}" firefox 2>/dev/null)
- if [[ "$firefox_state" == "true" ]]; then
- docker exec -i firefox /usr/bin/firefox "$@" 2>/dev/null
- else
- # check if chrome container is running
- chrome_state=$(docker inspect --format "{{.State.Running}}" chrome 2>/dev/null)
- if [[ "$chrome_state" == "true" ]]; then
- docker exec -i chrome /usr/bin/google-chrome --user-data-dir=/data "$@" 2>/dev/null
- else
- # maybe we are running in runc
- chrome_pid=$(pgrep -f "chrome --user-data" | head -n 1 2>/dev/null)
- if [[ ! -z "$chrome_pid" ]]; then
- # nsenter the chrome runc container
- sudo nsenter -t "$chrome_pid" --pid --user --net --uts --mount --ipc /usr/bin/google-chrome --user-data-dir=/data "$@" 2>/dev/null
- else
- # neither are currently running so lets try xdg-open
- xdg-open "$@"
- fi
-
- fi
- fi
- }
-
- browser_exec "$@"
|