mirror of
https://github.com/Gloridust/WechatOnCloud.git
synced 2026-06-16 19:53:53 +08:00
48 lines
1.7 KiB
Bash
48 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# 由 KasmVNC base 的 openbox 会话在桌面就绪后执行(以 app 用户身份)。
|
|
# 微信本体由面板经 docker exec 触发下载/解压到数据卷 /config/wechat(见 wechat-ctl.sh),
|
|
# 本脚本只负责:等待微信就绪 + 常驻拉起(关窗自动重开;更新后从新版本路径重启)。
|
|
|
|
set -u
|
|
|
|
WECHAT_BIN=/config/wechat/opt/wechat/wechat
|
|
|
|
# 容器内无 GPU,强制软件渲染
|
|
export LIBGL_ALWAYS_SOFTWARE=1
|
|
|
|
# 防“最小化后丢失”:本桌面(openbox)无任务栏,微信被最小化就无处恢复 → 黑屏。
|
|
# 看守进程:每 2s 把“被最小化(不可见)”的顶层窗口重新激活,相当于禁用最小化。
|
|
(
|
|
export DISPLAY="${DISPLAY:-:1}"
|
|
while sleep 2; do
|
|
all=$(xdotool search --name '.+' 2>/dev/null) || continue
|
|
vis=$(xdotool search --onlyvisible --name '.+' 2>/dev/null)
|
|
for w in ${all}; do
|
|
printf '%s\n' "${vis}" | grep -qx "${w}" || xdotool windowactivate "${w}" 2>/dev/null || true
|
|
done
|
|
done
|
|
) &
|
|
|
|
# 1) 等待微信安装就绪(首次需在面板点「下载并安装」)
|
|
notified=0
|
|
while [ ! -x "${WECHAT_BIN}" ]; do
|
|
if [ "${notified}" -eq 0 ]; then
|
|
echo "[autostart] 微信尚未安装,等待面板触发下载…(首次使用请在面板点「下载并安装微信」)"
|
|
notified=1
|
|
fi
|
|
sleep 2
|
|
done
|
|
|
|
# 3) 常驻拉起微信
|
|
while true; do
|
|
if [ ! -x "${WECHAT_BIN}" ]; then
|
|
# 更新过程中本体被临时挪走,等就位再继续
|
|
sleep 2
|
|
continue
|
|
fi
|
|
echo "[autostart] 启动微信: ${WECHAT_BIN}"
|
|
"${WECHAT_BIN}"
|
|
echo "[autostart] 微信已退出,2 秒后重启"
|
|
sleep 2
|
|
done
|