From 547ce2d3ecaefcfd66f4f1418389c0e6a2efeb20 Mon Sep 17 00:00:00 2001 From: bryan Date: Tue, 24 Jan 2023 13:25:26 -0500 Subject: [PATCH] Auto-increment display num for xvnc --- installJRMC | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/installJRMC b/installJRMC index 614948b..637e6fa 100755 --- a/installJRMC +++ b/installJRMC @@ -1234,23 +1234,37 @@ service_jriver-mediaserver() { ####################################### # Starts and enables (at startup) JRiver Media Center in a new Xvnc session +# TODO https://github.com/TigerVNC/tigervnc/blob/master/unix/vncserver/HOWTO.md ####################################### service_jriver-xvnc() { debug "Running: ${FUNCNAME[0]}" setServiceVars "${FUNCNAME[0]##*_}" setDisplay - declare start_cmd + declare -a start_cmd declare -g PORT=$(( NEXT_DISPLAYNUM + 5900 )) installPackage tigervnc-server setVNCPass xvnc + start_cmd=( + /usr/bin/vncserver "$NEXT_DISPLAY" + -geometry 1440x900 + -alwaysshared + -autokill + -xstartup "/usr/bin/mediacenter$MVERSION" + ) + if (( NOVNCAUTH )); then - start_cmd="/usr/bin/vncserver $NEXT_DISPLAY -geometry 1440x900 -alwaysshared -name jriver$NEXT_DISPLAY -SecurityTypes None -autokill -xstartup /usr/bin/mediacenter$MVERSION" + start_cmd+=( + -name "jriver$NEXT_DISPLAY" + -SecurityTypes None + ) else - start_cmd="/usr/bin/vncserver $NEXT_DISPLAY -geometry 1440x900 -alwaysshared -rfbauth $HOME/.vnc/jrmc_passwd -autokill -xstartup /usr/bin/mediacenter$MVERSION" + start_cmd+=( + -rfbauth "$HOME/.vnc/jrmc_passwd" + ) fi sudo bash -c "cat <<-EOF > $SERVICE_FNAME @@ -1262,7 +1276,7 @@ service_jriver-xvnc() { Type=forking $USER_STRING ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill $NEXT_DISPLAY &>/dev/null || :' - ExecStart=$start_cmd + ExecStart=${start_cmd[*]} ExecStop=/usr/bin/vncserver -kill $NEXT_DISPLAY Restart=always @@ -1270,10 +1284,15 @@ service_jriver-xvnc() { WantedBy=multi-user.target EOF" - systemctl_reload_cmd && - systemctl_enable_cmd "$SERVICE_NAME" && - echo "Xvnc running on localhost:$PORT" && - openFirewall "jriver-xvnc" && + systemctl_reload_cmd + if ! systemctl_enable_cmd "$SERVICE_NAME"; then + err "vncserver failed to start on DISPLAY $NEXT_DISPLAY" + err "Incrementing DISPLAY by one and retrying" + NEXT_DISPLAY=":$(( NEXT_DISPLAYNUM + 1 ))" service_jriver-xvnc + return + fi + echo "Xvnc running on localhost:$PORT" + openFirewall "jriver-xvnc" openFirewall "jriver-mediacenter" }