#!/bin/sh CONFDIR="$HOME/.config/CCP" EVECONF="$CONFDIR/EVE.conf" SHAREDIR="$HOME/.eve" check_elv() { ELBIN=$(getdate $LAUNCHER/evelauncher) ELARC=$(getdate $SETUPDIR/lib/evelauncher-$ELVER.tar.?z) if [ "$ELBIN" -lt "$ELARC" ] ;then if [ -d "$LAUNCHER" ] ;then rm -rf $LAUNCHER desktop_msg "Update EVE Launcher binaries" fi tar xmf $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 for ELCACHE in $HOME/.cache $HOME/.local/share ;do if [ -d "$ELCACHE/CCP/EVE/QtWebEngine" ] ;then rm -rf $ELCACHE/CCP/EVE/QtWebEngine fi done fi } check_env() { if [ -r "$EVECONF" ] ;then SHAREDIR=$(getval SharedCacheFolder) ;fi if [ ! -d "$SHAREDIR" ] ;then SHAREDIR="" ;fi if [ "x$SHAREDIR" != "x$EVEDIR/SharedCache/" ] ;then desktop_msg "Please wait, prepare environment in $EVEDIR" mkdir -p $CONFDIR cat >$EVECONF <$LAUNCHER/steam_appid.txt fi } check_wine() { CUSTOMWP=$(getval CustomWinePath) SHAREDIR=$(getval SharedCacheFolder) UCW=$(getval UseCustomWine) DXVKLIBDIR=$SETUPDIR/lib/dxvk DXVKFILELIST="d3d10core d3d11 d3d9 dxgi" WINEPREFIX=${SHAREDIR}wineenv WINSYSDIR=$WINEPREFIX/drive_c/windows/system32 W32SYSDIR=${WINSYSDIR%/*}/syswow64 if [ "$UCW" = "true" ] ;then WINEPATH=${CUSTOMWP%/*} if [ -d "${SHAREDIR}wine" ] ;then rm -rf ${SHAREDIR}wine ;fi 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 INSTWINE=$(tr -dc [:digit:] 2>/dev/null < $WINEPREFIX/.update-timestamp || printf 0) WINEINFP=$(readlink -f $CUSTOMWP) WINECONF=$(find ${WINEINFP%bin*}share/wine* -name 'wine.inf') WINEDATE=$(getdate $WINECONF) if [ "$WINEDATE" != "$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 fi if [ -d "$DXVKLIBDIR" ] ;then DXVKARC=$(getdate $DXVKLIBDIR/x64/d3d10core.dll) INSTDX=$(getdate $WINSYSDIR/d3d10core.dll) if [ "$INSTDX" != "$DXVKARC" ] ;then for DXVKFILE in $DXVKFILELIST ;do cp --preserve=timestamps $DXVKLIBDIR/x64/$DXVKFILE.dll $WINSYSDIR/$DXVKFILE.dll if [ -d "$W32SYSDIR" ] ;then cp --preserve=timestamps $DXVKLIBDIR/x32/$DXVKFILE.dll $W32SYSDIR/$DXVKFILE.dll fi env WINEPREFIX=$WINEPREFIX \ $WINE reg add \ 'HKCU\Software\Wine\DllOverrides' \ /v $DXVKFILE /d native /f >/dev/null done fi fi if [ "$(grep -csw winemenubuilder $WINEPREFIX/system.reg)" != "0" ] ;then env WINEPREFIX=$WINEPREFIX \ $WINE reg delete \ 'HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices' \ /v winemenubuilder /f >/dev/null fi else desktop_msg "Info: Wine environment test skipped." 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 0 } getval() { if [ ! -r "$EVECONF" ] ;then desktop_msg "ERROR: EVE Configuration not found!" exit 1 fi printf $(grep "$1" $EVECONF | cut -d= -f2) }