#!/usr/bin/env sh perror() { >&2 printf '\033[1;31mERROR:\033[0m \033[1m%s\033[0m\n' "$*" } usage() { name=$(basename "$0") cat << EOF ${name}: usage ${name} [status] - show if the server is running ${name} start|stop|restart - control the server ${name} help|usage - show help EOF } error_usage() { perror "invalid usage" >&2 usage exit 1 } is_running() { vncserver -list | grep -q '^:1' } start() { if ! is_running; then set -- vncserver \ -localhost -alwaysshared \ -securitytypes none [ -x ~/.vnc/xstartup ] && set -- "$@" -xstartup ~/.vnc/xstartup "$@" else perror "server already started" return 2 fi } stop() { if is_running; then vncserver -kill :1 else perror "server is not running" return 2 fi } status() { if is_running; then printf '\033[1;32m*\033[0m \033[1m%s\n' "the server is running" else printf '\033[1;31m*\033[0m \033[1m%s\n' "the server is not running" fi } case "$1" in ""|stat*) status ;; star*) start ;; sto*) stop ;; r*) stop start ;; *) error_usage ;; esac