#!/bin/bash set -e display=:10 interface=0.0.0.0 cert_group=ssl-cert declare -A all_desktop_environments=([Cinnamon]=cinnamon-session) detected_desktop_environments=() print_detected_desktop_environments() { declare -i i=1 echo "Detected DEs:" for detected_de in "${detected_desktop_environments[@]}"; do echo "[$i] $detected_de" i+=1 done } detect_desktop_environments() { for de_name in "${!all_desktop_environments[@]}"; do local executable=${all_desktop_environments[$de_name]} detected_desktop_environments+=("$de_name") detect_desktop_environment "$de_name" "$executable" done } detect_desktop_environment() { local de_name="$1" local executable="$2" if command -v "$executable" &>/dev/null; then echo "Detected $de_name" fi } if [[ "$1" = "--help" ]]; then cat >&2 <<-USAGE Usage: `basename $0` [options] -d Debug output -kill Kill vncserver --help show this help USAGE exit fi if [[ "$1" = "-d" ]]; then log_option="-log *:stderr:100" fi action=start if [[ "$1" = "-kill" ]]; then action=kill fi if groups | grep -qvw ssl-cert; then cat <<-EOF Can't access TLS certificate. Please add your user to $cert_group via 'addgroup ssl-cert' EOF exit 1 fi if [[ "$action" = "kill" ]]; then vncserver -kill $display exit fi detect_desktop_environments print_detected_desktop_environments echo "Please choose DE to run" vncserver $display -interface $interface vncserver -kill $display vncserver $display -depth 24 -geometry 1280x1050 -websocketPort 8443 \ -cert /etc/ssl/certs/ssl-cert-snakeoil.pem \ -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 \ -interface $interface -httpd /usr/share/kasmvnc/www $log_option