#!/usr/bin/env sh
# tessoa Linux 桌面集成安装脚本（用户级，无需 root）。
#
# 为什么需要它：Wayland（Ubuntu/GNOME 默认）下窗口图标不能由程序自己用像素设置——
# 任务栏/Dash/Alt-Tab 的图标唯一来源是一个 .desktop 文件（靠 app_id 匹配）+ 装进
# icon theme 目录的 PNG。裸跑 ./tessoa 不装这两样，图标就是默认的。本脚本把它们
# 装到 ~/.local/share 下（XDG 用户目录，免 sudo），装完注销/重登或重启即生效。
#
# 用法：解压 tar.gz 后，在解压目录里执行
#   ./install.sh            # 装到 ~/.local
#   ./install.sh --uninstall  # 卸载（删除 tessoa 及其桌面项/图标）
set -eu

APP=tessoa
# 脚本所在目录（tar.gz 解压后，binary / desktop / icon 都在这里）。
SRC_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)

DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
BIN_DIR=$HOME/.local/bin
APP_DIR=$DATA_HOME/applications
ICON_DIR=$DATA_HOME/icons/hicolor/512x512/apps

uninstall() {
    rm -f "$BIN_DIR/$APP" "$APP_DIR/$APP.desktop" "$ICON_DIR/$APP.png"
    command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$APP_DIR" 2>/dev/null || true
    command -v gtk-update-icon-cache >/dev/null 2>&1 && gtk-update-icon-cache -f "$DATA_HOME/icons/hicolor" 2>/dev/null || true
    echo "已卸载 tessoa（桌面项 / 图标 / $BIN_DIR/$APP）。"
}

if [ "${1:-}" = "--uninstall" ]; then
    uninstall
    exit 0
fi

mkdir -p "$BIN_DIR" "$APP_DIR" "$ICON_DIR"

# 1) 可执行文件 → ~/.local/bin/tessoa（多数发行版默认在 PATH 里）。
install -m 0755 "$SRC_DIR/$APP" "$BIN_DIR/$APP"

# 2) 图标 → hicolor/512x512/apps/tessoa.png。放进 hicolor 让 GNOME 能按 app_id(=tessoa)
#    直接从主题里查图标；但源 PNG 非正方/非标准尺寸，为稳妥起见 .desktop 的 Icon= 会回填成
#    这张图的**绝对路径**（见下）——绝对路径不受主题尺寸目录约束，任意尺寸都认。
ICON_INSTALLED=""
if [ -f "$SRC_DIR/$APP.png" ]; then
    install -m 0644 "$SRC_DIR/$APP.png" "$ICON_DIR/$APP.png"
    ICON_INSTALLED=$ICON_DIR/$APP.png
fi

# 3) .desktop → applications/，回填两处绝对路径：
#    - Exec：指向刚装好的 binary，不依赖 PATH 是否含 ~/.local/bin。
#    - Icon：指向刚装好的 PNG 绝对路径（源图非标准尺寸，绝对路径最稳）；没装成图标则保留 Icon=tessoa。
sed "s|^Exec=.*|Exec=$BIN_DIR/$APP %F|" "$SRC_DIR/$APP.desktop" > "$APP_DIR/$APP.desktop"
if [ -n "$ICON_INSTALLED" ]; then
    sed -i "s|^Icon=.*|Icon=$ICON_INSTALLED|" "$APP_DIR/$APP.desktop"
fi
chmod 0644 "$APP_DIR/$APP.desktop"

# 4) 刷新桌面/图标缓存（有则刷，没有也不报错——多数环境登录时会自动扫描）。
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$APP_DIR" 2>/dev/null || true
command -v gtk-update-icon-cache >/dev/null 2>&1 && gtk-update-icon-cache -f "$DATA_HOME/icons/hicolor" 2>/dev/null || true

echo "已安装 tessoa → $BIN_DIR/$APP"
echo "桌面项 → $APP_DIR/$APP.desktop，图标 → $ICON_DIR/$APP.png"
echo "若任务栏/应用列表仍未刷新，注销重登或重启一次即可。"
