#!/bin/bash
# QQ for Sailfish OS - launcher wrapper
# libs 由本 RPM 提供 (/usr/lib/qq-sailfish)，AppImage 需自备 (/opt/qq 或 ~/Documents)

# Wayland 会话（lipstick 默认值，允许外部覆盖）
export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/run/user/100000}
if [ -z "$WAYLAND_DISPLAY" ]; then
  if [ -S /run/display/wayland-0 ]; then
    export WAYLAND_DISPLAY=/run/display/wayland-0
  else
    export WAYLAND_DISPLAY=../../display/wayland-0
  fi
fi

# 本 RPM 自带的 Ubuntu 24.04 noble arm64 依赖库 + 系统库
export LD_LIBRARY_PATH=/usr/lib/qq-sailfish:/usr/lib64:$LD_LIBRARY_PATH

# maliit 输入法（Sailfish 系统默认见 /etc/profile.d/maliit-server.sh）
export QT_IM_MODULE=Maliit
# Electron/Chromium 走 Wayland text-input 协议，不要走 GTK XIM
export GTK_IM_MODULE=wayland
export XMODIFIERS="@im=maliit"

# 查找 QQ AppImage：环境变量优先，其次常见目录，版本无关
# 自定义本体：QQ_APPIMAGE=/path/to/QQ_x.y.z.AppImage qq-sailfish
APPIMAGE=""
if [ -n "$QQ_APPIMAGE" ] && [ -x "$QQ_APPIMAGE" ]; then
  APPIMAGE="$QQ_APPIMAGE"
fi
if [ -z "$APPIMAGE" ]; then
for cand in /opt/qq/QQ_3.2.34_260924_arm64_01.AppImage \
             "$HOME/Documents/QQ_3.2.34_260924_arm64_01.AppImage" \
             "$HOME/Downloads/QQ_3.2.34_260924_arm64_01.AppImage"; do
  if [ -x "$cand" ]; then
    APPIMAGE="$cand"
    break
  fi
done
fi
# 兜底：通配符找任意版本、任意命名（腾讯改名也不怕）
if [ -z "$APPIMAGE" ]; then
  for cand in /opt/qq/QQ*.AppImage "$HOME"/Documents/QQ*.AppImage "$HOME"/Downloads/QQ*.AppImage \
               /opt/qq/*.AppImage "$HOME"/Documents/*.AppImage; do
    # 跳过没展开的通配符本身
    [ -e "$cand" ] || continue
    if [ -x "$cand" ]; then
      APPIMAGE="$cand"
      break
    fi
  done
fi

if [ -z "$APPIMAGE" ]; then
  echo "错误：找不到 QQ AppImage，请放到 ~/Documents/、~/Downloads/ 或 /opt/qq/ 下" >&2
  echo "或指定：QQ_APPIMAGE=/path/to/QQ_xxx.AppImage qq-sailfish" >&2
  exit 1
fi

# 缩放：手机屏 1032x2272 下 Electron 默认按 scale=1 渲染，字体太小；
# 默认强制 2 倍，可用环境变量 QQ_SCALE_FACTOR 覆盖（如 1.5 / 2.5）
SCALE="${QQ_SCALE_FACTOR:-2}"

# GPU：Sailfish 的 hwcomposer EGL 对外部程序不可用，AppImage 自带 EGL
# 初始化必然失败，Chromium 重试几次后会 FATAL 退出；强制纯软件渲染
#（SwiftShader Vulkan 随 AppImage 自带，无需系统 GPU 驱动）
GPU_FLAGS="--disable-gpu --in-process-gpu --enable-unsafe-swiftshader --use-angle=swiftshader"

exec "$APPIMAGE" --no-sandbox --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-version=3 --force-device-scale-factor="$SCALE" $GPU_FLAGS "$@"
