#!/bin/bash

MAX_BACKUP_NUM=9
LOG_NAME=".kwin.log"
BACKUP_SUFFIX=".old"

dde-dconfig --get -a org.deepin.dde.lightdm-deepin-greeter -r org.deepin.dde.lightdm-deepin-greeter -k defaultGreeterSession | grep "wayland"
if [ $? -eq 0 ];then
    export KWIN_COMPOSE=O2ES
fi

export GDK_BACKEND=x11
export KWIN_USE_BUFFER_AGE=1
export KWIN_DISABLE_XWL_CLIPBOARD=1

if [ ! -f "$HOME/.config/kglobalshortcutsrc" ]; then
    cp -n /etc/xdg/kglobalshortcutsrc $HOME/.config/kglobalshortcutsrc
fi

export QT_LOGGING_RULES="kwin*=true;kwin_libinput=false;"
# TODO 调整缩放系数并注销后需要通过scale-factor计算xft-dpi值，后续需要定位部分设备和Qt版本无法通过Qt获取正确DPI的问题
CALCULATE_DPI_FROM_X=$(echo "scale=0;`gsettings get com.deepin.xsettings scale-factor` * 96 / 1" | bc)
if [[ -n "$CALCULATE_DPI_FROM_X" ]]; then
        export QT_WAYLAND_FORCE_DPI="$CALCULATE_DPI_FROM_X"
fi
export QT_MESSAGE_PATTERN="[%{time yyyy-MM-dd hh:mm:ss.zzz}] %{function}:%{line} - %{message}"

if [ -f "$HOME/.config/locale.conf" ]; then
    source $HOME/.config/locale.conf
fi

# rename old log name
# params $1 log name
# params $2 old log name
# params $3 backup suffix
# params $4 index
_log_rename() {
    local LOGNAME=$1
    local SUFFIX=$2
    local OLDLOG=$3
    local INDEX=$4
    local target_file=${LOGNAME}

    if [[ "${OLDLOG}" == "" ]]; then
        OLDLOG=${LOGNAME}
    fi

    if [[ "${INDEX}" == "" ]]; then
        target_file+=${SUFFIX}
    else
        target_file+=${SUFFIX}"."${INDEX}
    fi

    if [[ -f ${OLDLOG} && ${INDEX} -lt $(( ${MAX_BACKUP_NUM} - 1 )) && -f ${OLDLOG} ]]; then
        _log_rename ${LOGNAME} ${SUFFIX} ${target_file} $(( ${INDEX} + 1 ))
    fi
    if [[ -f ${OLDLOG} ]]; then
        mv ${OLDLOG} ${target_file}
    fi
}

#崩溃后重新登录会冲掉崩溃时候的kwin日志，此处加入一次拷贝，保证可以获取到kwin崩溃时候的那次日志
_log_rename ${LOG_NAME} ${BACKUP_SUFFIX}
export STARTDDE_RUN_KWIN_WAYLAND=1
exec startdde-wayland
