Browse Source

Auto-increment display num for xvnc

bryan 2 years ago
parent
commit
547ce2d3ec
1 changed files with 27 additions and 8 deletions
  1. 27 8
      installJRMC

+ 27 - 8
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"
 }