mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-09-20 13:40:11 +08:00
fix(shell-caller): 对话框工具改用 zenity
This commit is contained in:
+12
-32
@@ -1,34 +1,22 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# 显示进度条并执行命令(支持 garma / zenity)
|
# 显示进度条并执行命令(使用 zenity)
|
||||||
run_with_progress() {
|
run_with_progress() {
|
||||||
local title="$1"
|
local title="$1"
|
||||||
local text="$2"
|
local text="$2"
|
||||||
local cmd="$3"
|
local cmd="$3"
|
||||||
|
|
||||||
# 检测可用的对话框工具
|
# 检测可用的对话框工具
|
||||||
local tool=""
|
if ! command -v zenity &> /dev/null; then
|
||||||
if command -v garma &> /dev/null; then
|
echo "警告:未找到 zenity,无法显示进度条。直接执行命令..." >&2
|
||||||
tool="garma"
|
|
||||||
elif command -v zenity &> /dev/null; then
|
|
||||||
tool="zenity"
|
|
||||||
else
|
|
||||||
echo "警告:未找到 garma 或 zenity,无法显示进度条。直接执行命令..." >&2
|
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
return $?
|
return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 根据工具启动进度条
|
# 启动 zenity 进度条
|
||||||
local progress_pid
|
local progress_pid
|
||||||
if [[ "$tool" == "garma" ]]; then
|
zenity --progress --pulsate --title="$title" --text="$text" --no-cancel 2>/dev/null &
|
||||||
# garma 的进度条用法(假设 --progress --pulsate 可用)
|
progress_pid=$!
|
||||||
garma --progress --pulsate --title="$title" --text="$text" --no-cancel 2>/dev/null &
|
|
||||||
progress_pid=$!
|
|
||||||
else
|
|
||||||
# zenity 进度条 pulsate 模式
|
|
||||||
zenity --progress --pulsate --title="$title" --text="$text" --no-cancel 2>/dev/null &
|
|
||||||
progress_pid=$!
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 执行实际命令
|
# 执行实际命令
|
||||||
eval "$cmd"
|
eval "$cmd"
|
||||||
@@ -120,17 +108,13 @@ case "$command_type" in
|
|||||||
title="确认卸载"
|
title="确认卸载"
|
||||||
text="正在准备卸载: $packages\n\n若这是您下达的卸载指令,请选择确认继续卸载"
|
text="正在准备卸载: $packages\n\n若这是您下达的卸载指令,请选择确认继续卸载"
|
||||||
|
|
||||||
# 优先尝试 garma,其次 zenity
|
# 使用 zenity 确认
|
||||||
if command -v garma &> /dev/null; then
|
if command -v zenity &> /dev/null; then
|
||||||
garma --question --title="$title" --text="$text" \
|
|
||||||
--ok-label="确认卸载" --cancel-label="取消" --width=400
|
|
||||||
confirmed=$?
|
|
||||||
elif command -v zenity &> /dev/null; then
|
|
||||||
zenity --question --title="$title" --text="$text" \
|
zenity --question --title="$title" --text="$text" \
|
||||||
--ok-label="确认卸载" --cancel-label="取消" --width=400
|
--ok-label="确认卸载" --cancel-label="取消" --width=400
|
||||||
confirmed=$?
|
confirmed=$?
|
||||||
else
|
else
|
||||||
echo "错误:未找到 garma 或 zenity,无法显示确认对话框。卸载操作已拒绝。"
|
echo "错误:未找到 zenity,无法显示确认对话框。卸载操作已拒绝。"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -148,17 +132,13 @@ case "$command_type" in
|
|||||||
title="确认安装"
|
title="确认安装"
|
||||||
text="正在准备安装: $packages\n\n若这是您下达的安装指令,请选择确认继续安装"
|
text="正在准备安装: $packages\n\n若这是您下达的安装指令,请选择确认继续安装"
|
||||||
|
|
||||||
# 优先尝试 garma,其次 zenity
|
# 使用 zenity 确认
|
||||||
if command -v garma &> /dev/null; then
|
if command -v zenity &> /dev/null; then
|
||||||
garma --question --title="$title" --text="$text" \
|
|
||||||
--ok-label="确认安装" --cancel-label="取消" --width=400
|
|
||||||
confirmed=$?
|
|
||||||
elif command -v zenity &> /dev/null; then
|
|
||||||
zenity --question --title="$title" --text="$text" \
|
zenity --question --title="$title" --text="$text" \
|
||||||
--ok-label="确认安装" --cancel-label="取消" --width=400
|
--ok-label="确认安装" --cancel-label="取消" --width=400
|
||||||
confirmed=$?
|
confirmed=$?
|
||||||
else
|
else
|
||||||
echo "错误:未找到 garma 或 zenity,无法显示确认对话框。安装操作已拒绝。"
|
echo "错误:未找到 zenity,无法显示确认对话框。安装操作已拒绝。"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user