#!/bin/bash # Based on https://github.com/mdouchement/docker-zoom-us PATH=/usr/sbin:/usr/bin:/sbin:/bin PALEMOON_USER=palemoon # do we need to use sudo to start docker containers? ( id -Gn | grep -q docker ) || SUDO=sudo USER_UID=$(id -u) USER_GID=$(id -g) XSOCK=/tmp/.X11-unix XAUTH=/tmp/.docker.xauth DOWNLOAD_DIR=$(xdg-user-dir DOWNLOAD) if [ -z "${DOWNLOAD_DIR}" ]; then DOWNLOAD_DIR="${HOME}/Downloads" fi; list_commands() { echo "" echo "Launch palemoon using:" echo " palemoon OR " echo " palemoon-wrapper palemoon" echo "" exit 1 } cleanup_stopped_palemoon_instances(){ echo "Cleaning up stopped palemoon instances..." for c in $(${SUDO} docker ps -a -q) do image="$(${SUDO} docker inspect -f {{.Config.Image}} ${c})" if [ "${image}" == "vasilev/palemoon:latest" ]; then running=$(${SUDO} docker inspect -f {{.State.Running}} ${c}) if [ "${running}" != "true" ]; then ${SUDO} docker rm "${c}" >/dev/null fi fi done } prepare_docker_env_parameters() { ENV_VARS+=" --env=USER_UID=${USER_UID}" ENV_VARS+=" --env=USER_GID=${USER_GID}" ENV_VARS+=" --env=DISPLAY=unix$DISPLAY" ENV_VARS+=" --env=XAUTHORITY=${XAUTH}" ENV_VARS+=" --env=TZ=$(date +%Z)" } prepare_docker_volume_parameters() { touch ${XAUTH} xauth nlist :0 | sed -e 's/^..../ffff/' | xauth -f ${XAUTH} nmerge - VOLUMES+=" --volume=${HOME}/.config/pulse/cookie:/home/${PALEMOON_USER}/.config/pulse/cookie" VOLUMES+=" --volume=${HOME}/.moonchildproductions:/home/${PALEMOON_USER}/.moonchildproductions" VOLUMES+=" --volume=${DOWNLOAD_DIR}:/home/${PALEMOON_USER}/Downloads" VOLUMES+=" --volume=${XSOCK}:${XSOCK}" VOLUMES+=" --volume=${XAUTH}:${XAUTH}" VOLUMES+=" --volume=/run/user/${USER_UID}/pulse:/run/pulse" } prog=$(basename $0) exec=$(which $prog) if [[ ${prog} == "palemoon-wrapper" ]]; then case ${1} in palemoon) prog=${1} shift ;; *|help) list_commands exit 1 ;; esac elif [[ -n ${exec} ]]; then # launch host binary if it exists exec ${exec} $@ fi cleanup_stopped_palemoon_instances prepare_docker_env_parameters prepare_docker_volume_parameters echo "Starting ${prog}..." PALEMOON_EXTRA_DOCKER_ARGUMENTS+=" --group-add $(getent group audio | cut -d: -f3) " ${SUDO} docker run -d \ ${ENV_VARS} \ ${VOLUMES} \ ${PALEMOON_EXTRA_DOCKER_ARGUMENTS} \ vasilev/palemoon:latest ${prog} $@ >/dev/null