dotfiles/bin/headlessvnc

71 lines
1.1 KiB
Bash
Executable file

#!/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
;;
h*|u*) usage ;;
*)
error_usage
;;
esac