|
@@ -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"
|
|
|
}
|
|
|
|