From 41b008f554c288068fc9fb7122c82787d25016b4 Mon Sep 17 00:00:00 2001 From: div0 Date: Sun, 31 Dec 2006 11:01:55 +0000 Subject: [PATCH] new cvar vid_x11_display for use by nexuiz-linux-*.sh git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2077 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/default.cfg | 7 ++++ nexuiz-linux-glx.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++- nexuiz-linux-sdl.sh | 78 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 161 insertions(+), 2 deletions(-) diff --git a/data/default.cfg b/data/default.cfg index e58182350..3e6da8279 100644 --- a/data/default.cfg +++ b/data/default.cfg @@ -81,6 +81,13 @@ scr_conforcewhiledisconnected 0 scr_menuforcewhiledisconnected 1 v_deathtilt 0 // needed for spectators (who are dead to avoid prediction) +// nexuiz-linux-*.sh will use this +seta vid_x11_display "" +// This can have three possible settings: +// "" run as usual +// ":n" use DISPLAY=:n, create it if needed +// ":n layout" use DISPLAY=:n, create it if needed with ServerLayout layout + // server settings seta hostname "Nexuiz Server" seta sv_maxrate 10000 diff --git a/nexuiz-linux-glx.sh b/nexuiz-linux-glx.sh index b5a9d4476..54f9b4216 100755 --- a/nexuiz-linux-glx.sh +++ b/nexuiz-linux-glx.sh @@ -11,4 +11,80 @@ case "$(uname -m)" in *) nexuiz="nexuiz-linux-686-glx" ;; esac -exec ./${nexuiz} "${@}" +set -- ./${nexuiz} "${@}" + +xserver= +xlayout= + +# now how do we execute it? +if [ -r ~/.nexuiz/data/config.cfg ]; then + while read -r CMD KEY VALUE; do + VALUE=${VALUE#\"} + VALUE=${VALUE%\"} + case "$CMD:$KEY" in + seta:vid_x11_display) + case "$VALUE" in + :*) + ;; + *) + VALUE=:$VALUE + ;; + esac + VALUE="$VALUE " + xserver="${VALUE%% *}" + xserver=${xserver#:} + xlayout=${VALUE#* } + xlayout=${xlayout% } + ;; + esac + done < ~/.nexuiz/data/config.cfg +fi + +case "$xserver" in + '') + ;; + *[!0-9]*) + echo "Not using display ':$xserver': evil characters" + ;; + *) + msg= + lf=' +' + prefix= + + # check for a listening X server on that socket + if netstat -nl | grep -F " /tmp/.X11-unix/X$xserver" >/dev/null; then + # X server already exists + export DISPLAY=:$xserver + prefix="DISPLAY=:$xserver " + msg=$msg$lf"- Running Nexuiz on already existing display :$xserver" + else + set -- startx "$@" -- ":$xserver" + msg=$msg$lf"- Running Nexuiz on a newly created X server :$xserver." + case "$xlayout" in + '') + ;; + *[!A-Za-z0-9]*) + echo >&2 "Not using layout '$xlayout': evil characters" + xlayout= + ;; + *) + set -- "$@" -layout "$xlayout" + msg=$msg$lf"- Using the ServerLayout section named $xlayout." + ;; + esac + fi + + echo "X SERVER OVERRIDES IN EFFECT:$msg" + echo + echo "Resulting command line:" + echo " $prefix$*" + echo + echo "To undo these overrides, edit ~/.nexuiz/data/config.cfg and remove the line" + echo "starting with 'seta vid_x11_display'." + echo + echo + ;; +esac + +exec "$@" diff --git a/nexuiz-linux-sdl.sh b/nexuiz-linux-sdl.sh index 07ed2a9ce..24ca51327 100755 --- a/nexuiz-linux-sdl.sh +++ b/nexuiz-linux-sdl.sh @@ -11,4 +11,80 @@ case "$(uname -m)" in *) nexuiz="nexuiz-linux-686-sdl" ;; esac -exec ./${nexuiz} "${@}" +set -- ./${nexuiz} "${@}" + +xserver= +xlayout= + +# now how do we execute it? +if [ -r ~/.nexuiz/data/config.cfg ]; then + while read -r CMD KEY VALUE; do + VALUE=${VALUE#\"} + VALUE=${VALUE%\"} + case "$CMD:$KEY" in + seta:vid_x11_display) + case "$VALUE" in + :*) + ;; + *) + VALUE=:$VALUE + ;; + esac + VALUE="$VALUE " + xserver="${VALUE%% *}" + xserver=${xserver#:} + xlayout=${VALUE#* } + xlayout=${xlayout% } + ;; + esac + done < ~/.nexuiz/data/config.cfg +fi + +case "$xserver" in + '') + ;; + *[!0-9]*) + echo "Not using display ':$xserver': evil characters" + ;; + *) + msg= + lf=' +' + prefix= + + # check for a listening X server on that socket + if netstat -nl | grep -F " /tmp/.X11-unix/X$xserver" >/dev/null; then + # X server already exists + export DISPLAY=:$xserver + prefix="DISPLAY=:$xserver " + msg=$msg$lf"- Running Nexuiz on already existing display :$xserver" + else + set -- startx "$@" -- ":$xserver" + msg=$msg$lf"- Running Nexuiz on a newly created X server :$xserver." + case "$xlayout" in + '') + ;; + *[!A-Za-z0-9]*) + echo >&2 "Not using layout '$xlayout': evil characters" + xlayout= + ;; + *) + set -- "$@" -layout "$xlayout" + msg=$msg$lf"- Using the ServerLayout section named $xlayout." + ;; + esac + fi + + echo "X SERVER OVERRIDES IN EFFECT:$msg" + echo + echo "Resulting command line:" + echo " $prefix$*" + echo + echo "To undo these overrides, edit ~/.nexuiz/data/config.cfg and remove the line" + echo "starting with 'seta vid_x11_display'." + echo + echo + ;; +esac + +exec "$@" -- 2.39.2