#!/bin/bash X11_MANDATORY=0 if [ -z "$DISPLAY" ]; then echo "\$DISPLAY is not set" DISPLAYS=( $(netstat -lnt | awk '/127.0.0.1:60/ { split($4,a,":"); print "localhost:" substr(a[2],3) ".0" }') ) if [ "${#DISPLAYS[@]}" = 0 ]; then echo "No X11 ports available" if [ $X11_MANDATORY = 1 ]; then exit 1 fi fi if [ "${#DISPLAYS[@]}" -gt 1 ]; then echo "More than 1 X11 port available. Which one do you want?" for i in "${DISPLAYS[@]}"; do echo "export DISPLAY=\"$i\"" done exit 1 else export DISPLAY="${DISPLAYS[0]}" fi fi docker run -ti --rm --net=host \ -e TERM \ -e DISPLAY \ -e XAUTHORITY=$HOME/.Xauthority \ -v $HOME/.Xauthority:$HOME/.Xauthority:ro \ -v /usr/share/zoneinfo/America/Los_Angeles:/etc/localtime:ro \ -v $HOME/bin:$HOME/bin \ -v $HOME/.vim:$HOME/.vim \ -v $HOME/.vimrc:$HOME/.vimrc \ -v $HOME/amazon-bin:$HOME/amazon-bin:ro \ -v $HOME/.mutt:$HOME/.mutt \ -v $HOME/share:$HOME/share \ -v $HOME/.exchange.pass:$HOME/.exchange.pass \ mutt