#!/usr/bin/env bash USER="$(whoami)" # get new display TAKEN_PORTS=( $(cat /var/lib/vnc/* | sort -n) ) [ -f "/var/lib/vnc/${USER}" ] && TAKEN_PORTS=( "${TAKEN_PORTS[@]/$(<"/var/lib/vnc/${USER}")}" ) DISPLAY=0; for TAKEN_PORT in ${TAKEN_PORTS[@]}; do if [ "$TAKEN_PORT" -le "$DISPLAY" ];then DISPLAY=$((DISPLAY + 1)) fi done unset TAKEN_PORTS TAKEN_PORT # add user file OLD_UMASK="$(umask)" umask 0022 echo "$DISPLAY" > "/var/lib/vnc/${USER}" umask $OLD_UMASK PORT=$((DISPLAY + 5900)) unset DISPLAY OLD_UMASK /usr/local/bin/startvnc echo echo "Your port number is ${PORT}; please note it down." echo "You might like to see https://wiki.thunix.net/wiki/vnc for further information."