From d8ef00c1fd50b4eb3b436118e6a5634ce01334aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Tue, 15 Jun 2010 03:04:30 +0200 Subject: Merge functions.sh and templates/default back into play.sh Thus the goal of one-file-install can be kept. --- play.sh | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 2 deletions(-) (limited to 'play.sh') diff --git a/play.sh b/play.sh index 5667e81..2a4f3f1 100755 --- a/play.sh +++ b/play.sh @@ -1,5 +1,6 @@ #!/bin/zsh -f +# initialization {{{ PLAY_DEBUG=${PLAY_DEBUG:-0} [[ $PLAY_DEBUG == 2 ]] && setopt xtrace @@ -10,10 +11,95 @@ PLAY_TEMPLATES="${PLAY_TEMPLATES:-$PLAY_DIR/templates}" typeset -A ENV EENV BIN=$0 +# }}} -source $PLAY_DIR/functions.sh +# global functions {{{ +out () { + echo ">>> $@" +} -inherit default +log () { + [[ $PLAY_DEBUG > 0 ]] && echo "*** $@" +} + +exp () { + log "Setting envvar '$1' to '$2'" + export $1=$2 +} + +exc () { + cmd="eval" + + if [[ $1 == "-e" ]]; then + cmd="exec" + shift + fi + + if [[ $PLAY_DEBUG > 0 ]]; then + log "Executing (using '$cmd'):" + log "> $@" + + sleep 3 + fi + + $cmd "$@" +} + +EXPORT () { + local name=$1 + shift + + for f in $@; do + eval "$f () { ${name}_${f}; }" + done +} + +inherit () { + source $PLAY_TEMPLATES/$1 +} +# }}} + +# default template {{{ + +# exporting variables +EENV[WINEPREFIX]='eval echo $PREFIX' +ENV[WINEDEBUG]="-all" +ENV[DISPLAY]=":1" + +PREFIX="~/.wine" + +# functions +default_execute () { + exc -e startx $BIN -x $GAME -- :1 -ac -br -quiet ${=EXARGS} +} + +default_prepare () { + nvidia-settings -l + + # set display size + [[ -n $SIZE ]] && xrandr -s $SIZE +} + +default_setenv () { + for e v in ${(kv)ENV}; do + exp $e $v + done + + for e v in ${(kv)EENV}; do + exp $e `eval $v` + done +} + +default_run () { + # start game + exc wine start $GPATH "$ARGS" + + # wait for wine to shutdown + exc wineserver -w +} + +EXPORT default execute prepare setenv run +# }}} if [[ $1 == "-x" ]]; then source $PLAY_GAMES/$2 @@ -41,3 +127,5 @@ else execute fi fi + +# vim: foldmethod=marker -- cgit v1.2.3