#/bin/bash
# 狗头
echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'
echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`***,@@@@@@@@'
echo '@@@@^*****,\@@@@@@@@@@@@@@@@@@@@`*.....*\@@@@@@'
echo '@@@@*.......**\@[`***......*****.....*..*\@@@@@'
echo '@@@@^*..............................***...@@@@@'
echo '@@@@@*...............................**..*\@@@@'
echo '@@@@@^*..*............................*..*=@@@@'
echo '@@@@@^**................................**=@@@@'
echo '@@@@@/*..................................*=@@@@'
echo '@@@@@*.....      .....        ............*@@@@'
echo '@@@@`*. .]]]]`    ...   ]/[[[O/O]`........*,@@@'
echo '@@@@*.=`  =O.,OO......=`   .OOOOOO^........*@@@'
echo '@@@^*.\   =OOOOO^.....=`   .OOOOOO^........*=@@'
echo '@@@^*..,\].=OO/.........,[\]]O/[`    ......*=@@'
echo '@@@@*......................               .*@@@'
echo '@@@@`.    ......,]]......                 .,@@@'
echo '@@@@@*.       OOOOOOO^                   .*@@@@'
echo '@@@@@\*.       \OOOO`                   .*/@@@@'
echo '@@@@@@\*.        =.       /            .*/@@@@@'
echo '@@@@@@@@`*. ,\OOOOOOO]]OO`           .*,@@@@@@@'
echo '@@@@@@@@@@`*.               .      .*,@@@@@@@@@'
echo '@@@@@@@@@@@@\**.. .........    ..**/@@@@@@@@@@@'
echo '@@@@@@@@@@@@@@@@]`***......***,]@@@@@@@@@@@@@@@'
echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'

# 使 UEngine 能在 Wayland 下运行
export XDG_SESSION_TYPE=x11
export QT_QPA_PLATFORM=xcb
unset WAYLAND_DISPLAYCOPY
# 判断是否是开机后第一次运行（无用）
#if [[ ! -f /tmp/uengine-loading-ubuntu ]]; then
#    # 需等待一段时间等系统全部加载完成
#    notify-send -i /opt/apps/com.gitee.uengine.runner.spark/files/icon.png "UEngine 服务正在加载" -a uengine-runner
#    sleep 10
#    touch /tmp/uengine-loading-ubuntu
#fi
# 修复程序显示问题
XDG_CURRENT_DESKTOP="Deepin"
export LD_LIBRARY_PATH=/usr/share/uengine/lib64/ 
# 判断 UEngine 是否被正确安装
which uengine
if [[ $? != 0 ]]; then
    notify-send -i /opt/apps/com.gitee.uengine.runner.spark/files/icon.png "未安装 UEngine，结束！" -a uengine-runner
    exit
fi
uname -r | grep 5.17.3
if [[ $? != 0 ]]; then
	if [[ -f /usr/bin/uengine-loading-binder ]]; then
	    echo 加载 binder
	    pkexec /usr/bin/uengine-loading-binder
	fi
fi
notify-send -i /opt/apps/com.gitee.uengine.runner.spark/files/icon.png "UEngine 服务启动完成" -a uengine-runner
bad=0
# 守护进程，防止异常退出
while [[ true ]]; do
    uengine session-manager -platformtheme=deepin
    # 让用户可以强制结束
    if [[ -f "/tmp/uengine-loading-ubuntu-end" ]]; then
        rm /tmp/uengine-loading-ubuntu-end
        echo UEngine 服务异常崩溃，不再重启服务
        notify-send -i /opt/apps/com.gitee.uengine.runner.spark/files/icon.png "UEngine 服务异常崩溃，不再重启服务" -a uengine-runner
        exit
    fi
    if [[ $bad -gt 9 ]]; then
        # 错误次数太多，结束
        notify-send -i /opt/apps/com.gitee.uengine.runner.spark/files/icon.png "UEngine 服务异常崩溃次数过多，不再重启服务" -a uengine-runner
        echo UEngine 服务异常崩溃次数过多，不再重启服务
        exit
    fi
    bad=$(($bad+1))
    echo "UEngine 服务异常结束，重新启动（$bad次）"
    notify-send -i /opt/apps/com.gitee.uengine.runner.spark/files/icon.png "UEngine 服务异常结束，重新启动（$bad次）" -a uengine-runner
    
done
