#!/bin/sh CONFDIR="$HOME/.config/CCP" EVECONF="$CONFDIR/EVE.conf" SHAREDIR="$HOME/.eve" check_elv() { ELBIN=$(getdate $LAUNCHER/evelauncher) ELBIN=$(expr $ELBIN / 180 \* 180) ELARC=$(getdate $SETUPDIR/lib/evelauncher-$ELVER.tar.?z) ELARC=$(expr $ELARC / 180 \* 180) if [ "$ELBIN" -lt "$ELARC" ] ;then if [ -d "$LAUNCHER" ] ;then rm -rf $LAUNCHER desktop_msg "Update EVE Launcher binaries" fi tar xf $SETUPDIR/lib/evelauncher-$ELVER.tar.?z -C $EVEDIR mv $EVEDIR/evelauncher $LAUNCHER if [ -f "$HOME/.config/devilspie2/evelauncher.lua" ] ;then sed -i 2\ s,[0-9].*\",$ELVER\", \ $HOME/.config/devilspie2/evelauncher.lua fi fi } check_env() { if [ -d "$CONFDIR" ] ;then if [ -r "$EVECONF" ] ;then SHAREDIR=$(getval SharedCacheFolder) fi fi [ ! -d "$SHAREDIR" ] && SHAREDIR="" if [ "x$SHAREDIR" != "x$EVEDIR/SharedCache/" ] ;then desktop_msg "Please wait, preparing environment in $EVEDIR" mkdir -p $CONFDIR echo "[General]" >$EVECONF echo "SharedCacheFolder=$EVEDIR/SharedCache/" >>$EVECONF echo "UseCustomWine=true" >>$EVECONF echo "CustomWinePath=$WINEPATH/wine" >>$EVECONF mkdir -p $EVEDIR/SharedCache if [ -d "$SHAREDIR/ResFiles/" ] ;then mv $SHAREDIR/ResFiles/ $EVEDIR/SharedCache/ mv $SHAREDIR/*.txt $EVEDIR/SharedCache/ rm -rf $SHAREDIR fi fi } check_steam() { if [ ! -r "$LAUNCHER/steam_appid.txt" -a -x "$(which steam)" ] ;then echo "8500" >$LAUNCHER/steam_appid.txt fi } check_wine() { CUSTOMWP=$(getval CustomWinePath) SHAREDIR=$(getval SharedCacheFolder) UCW=$(getval UseCustomWine) WINEPREFIX=${SHAREDIR}wineenv if [ "x$UCW" = "xtrue" ] ;then WINEPATH=${CUSTOMWP%/*} [ -d "${SHAREDIR}wine" ] && rm -rf ${SHAREDIR}wine else CUSTOMWP=${SHAREDIR}wine WINEPATH=${SHAREDIR}wine/bin fi if [ -x "$WINEPATH/wine64" ] ;then WINE=$WINEPATH/wine64 else WINE=$WINEPATH/wine fi if [ ! -x "$WINE" ] ;then desktop_msg "ERROR: \"$CUSTOMWP\" not found!" exit 1 fi DXVKLIBDIR=$SETUPDIR/lib/dxvk DXVKFILELIST="d3d10core d3d11 dxgi" WINSYSDIR=$WINEPREFIX/drive_c/windows/system32 W32SYSDIR=${WINSYSDIR%/*}/syswow64 INSTWINE=$(cat $WINEPREFIX/.update-timestamp | tr -dc [:digit:]) || true WINEINFP=$(readlink -f $CUSTOMWP) WINECONF=$(find ${WINEINFP%bin*}share/wine* -name 'wine.inf') WINEDATE=$(getdate $WINECONF) if [ "x$WINEDATE" != "x$INSTWINE" ] ;then desktop_msg "Prepare wine environment for EVE" for DXVKFILE in d3d10_1 d3d10core d3d10 d3d11 d3d9 dxgi ;do rm $WINSYSDIR/$DXVKFILE.dll* || true rm $W32SYSDIR/$DXVKFILE.dll* || true sed -i /\"$DXVKFILE\"=\"/d $WINEPREFIX/user.reg || true done env WINEPREFIX=$WINEPREFIX \ WINEDEBUG=-all \ WINEDLLOVERRIDES="mscoree,mshtml=d" \ $WINE wineboot env WINEPREFIX=$WINEPREFIX \ $WINE reg add \ 'HKCU\Software\Wine\FileOpenAssociations' \ /v Enable /d N /f >/dev/null if [ -d "$DXVKLIBDIR" ] ;then for DXVKFILE in $DXVKFILELIST ;do cp $DXVKLIBDIR/x64/$DXVKFILE.dll $WINSYSDIR/$DXVKFILE.dll if [ -d "$W32SYSDIR" ] ;then cp $DXVKLIBDIR/x32/$DXVKFILE.dll $W32SYSDIR/$DXVKFILE.dll fi env WINEPREFIX=$WINEPREFIX \ $WINE reg add \ 'HKCU\Software\Wine\DllOverrides' \ /v $DXVKFILE /d native >/dev/null done fi fi if [ "x$(grep -csw winemenubuilder $WINEPREFIX/system.reg)" != "x0" ] ;then env WINEPREFIX=$WINEPREFIX \ $WINE reg delete \ 'HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices' \ /v winemenubuilder /f >/dev/null fi } desktop_msg() { if [ -x "$(which notify-send)" ] ;then notify-send -i eve $(basename $0) "$@" fi printf "$(basename $0): $@\n" } getdate() { printf $(ls -l --time-style=+%s $1 | cut -d' ' -f6) || printf 180 } getval() { if [ ! -r "$EVECONF" ] ;then desktop_msg "ERROR: EVE Configuration not found!" exit 1 fi printf $(grep "$1" $EVECONF | cut -d= -f2) }