Skip to content

Instantly share code, notes, and snippets.

@fpytloun
Created August 22, 2016 16:23
Show Gist options
  • Save fpytloun/9d416d14db250a91947adbbdd295a350 to your computer and use it in GitHub Desktop.
Save fpytloun/9d416d14db250a91947adbbdd295a350 to your computer and use it in GitHub Desktop.
Wrapper to run desktop app of Docker container
#!/bin/bash
[ ${DEBUG:-0} -eq 1 ] && set -x
XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/run/user/${UID}}
XDG_DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD)
IMAGE=${IMAGE:-"apps/$1"}
EXTRA_OPTS=${OPTS:-""}
DOCKER_OPTS_COMMON=(
"-it"
"--rm=true"
"--name=$1"
)
DOCKER_OPTS=(
"-e DISPLAY=unix$DISPLAY"
"-e XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR"
"-e LC_ALL=$LC_ALL"
# X11
"-v /tmp/.X11-unix:/tmp/.X11-unix"
# pulseaudio
#"-v /dev/shm:/dev/shm"
"-v ${HOME}/.pulse:${HOME}/.pulse"
"-v ${XDG_RUNTIME_DIR}:${XDG_RUNTIME_DIR}"
# dbus
"-v /etc/machine-id:/etc/machine-id"
)
case $1 in
firefox)
[ ! -d ${HOME}/.docker/apps/$1 ] && mkdir -p ${HOME}/.docker/apps/$1
DOCKER_OPTS+=(
"-v ${XDG_DOWNLOAD_DIR}:${XDG_DOWNLOAD_DIR}"
"-v ${HOME}/.docker/apps/firefox:${HOME}/.mozilla/firefox"
"-v ${HOME}/.vimperatorrc:${HOME}/.vimperatorrc"
"--device=/dev/dri/card0:/dev/dri/card0"
"--device=/dev/video0:/dev/video0"
)
;;
webex)
[ ! -d ${HOME}/.docker/apps/$1 ] && mkdir -p ${HOME}/.docker/apps/$1
DOCKER_OPTS+=(
"-v ${XDG_DOWNLOAD_DIR}:${XDG_DOWNLOAD_DIR}"
"-v ${HOME}/.docker/apps/webex:${HOME}/.mozilla/firefox"
"-v ${HOME}/.vimperatorrc:${HOME}/.vimperatorrc"
"--device=/dev/dri/card0:/dev/dri/card0"
"--device=/dev/video0:/dev/video0"
)
;;
torbrowser)
[ ! -d ${HOME}/.docker/apps/$1 ] && mkdir -p ${HOME}/.docker/apps/$1
DOCKER_OPTS+=(
"-v ${HOME}/.docker/apps/torbrowser/Downloads:${HOME}/Downloads"
"--device=/dev/dri/card0:/dev/dri/card0"
)
;;
esac
xhost +local:`docker inspect --format='{{ .Config.Hostname }}' $IMAGE`
docker run ${DOCKER_OPTS_COMMON[@]} ${DOCKER_OPTS[@]} $EXTRA_OPTS $IMAGE
xhost -local:`docker inspect --format='{{ .Config.Hostname }}' $IMAGE`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment