From 58ee6d737ab7a0c1452628e40f8d7b9cbf65ddbe Mon Sep 17 00:00:00 2001 From: Ahurac Date: Thu, 4 Apr 2024 15:26:55 +0200 Subject: [PATCH] =?UTF-8?q?headlessvnc=20:=20r=C3=A9-=C3=A9criture=20compl?= =?UTF-8?q?=C3=A8te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/headlessvnc | 138 ++++++++++++++++-------------------------------- 1 file changed, 45 insertions(+), 93 deletions(-) diff --git a/bin/headlessvnc b/bin/headlessvnc index 5cd1514..e3cffe9 100755 --- a/bin/headlessvnc +++ b/bin/headlessvnc @@ -1,107 +1,59 @@ -#!/bin/bash - -# cd to the local VNC directory, exit if it fails -cd "${HOME}/.vnc" || exit 5 - -# Variable -verbs="start status stop restart help" - -# echo bold text -echobf() { - printf '\033[1m%s\033[0m\n' "$*" +#!/usr/bin/env sh +perror() { + >&2 printf '\033[1;31mERROR:\033[0m \033[1m%s\033[0m\n' "$*" } -# Print an error message -print_error() { - ( - printf '\033[1;31m%s\033[0m ' "ERROR:" - echobf "$*" - ) > /dev/stderr +error_usage() { + perror "invalid usage" + >&2 usage + + exit 1 } -# Print an error and exit -error() { - print_error "$1" - shift - exit "$1" -} - -# Check if the VNC server is running is_running() { - vncserver -list | grep -q '^:1' + vncserver -list | grep -q '^:1' } -# Show a help message -public_help() { - local name - name="$(basename "$0")" - cat << EOF -${name} - Start a VNC server +start() { + if ! is_running; then + set -- vncserver \ + -localhost -alwaysshared \ + -securitytypes none + [ -x ~/.vnc/xstartup ] && set -- "$@" -xstartup ~/.vnc/xstartup -Usage: - ${name} ${verbs// /|} -EOF + "$@" + else + perror "server already started" + exit 2 + fi } -# Show the same help with an error -error_help() { - print_error "Invalid usage" - >&2 public_help - return 1 +stop() { + if is_running; then + vncserver -kill :1 + else + perror "server is not running" + exit 2 + fi } -# Start the VNC server -public_start() { - if ! is_running; then - set -e - vncserver \ - -xstartup ./xstartup \ - -localhost \ - -alwaysshared \ - -securitytypes none \ - -nocursor \ - -geometry 1600x900 - else - error "The VNC server is already running!" 4 - 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 } -# Check if the server is running -public_status() { - if is_running; then - echobf "The VNC server is running." - tail "./$(cat /proc/sys/kernel/hostname):1.log" | sed 's/^/\t/g' - else - echobf "The VNC server is not running." - fi -} - -# Stop the VNC server -public_stop() { - if is_running; then - vncserver -kill :1 - else - error "The VNC server is not running!" 3 - fi -} - -# Restart the VNC server -public_restart() { - public_stop - public_start -} - -# Parse argument -if [ -n "$1" ]; then - arg="$1" -else - arg=status -fi - -# Main switch -if echo "$verbs" | tr ' ' '\n' | grep -q "$arg"; then - "public_${arg}" -else - error_help -fi - +case "$1" in + ""|status) status ;; + start) start ;; + stop) stop ;; + restart) + stop + start + ;; + *) + error_usage + ;; +esac