fix(shell-caller): 对话框工具改用 zenity

This commit is contained in:
2026-08-19 22:11:11 +08:00
parent 2db91252ad
commit 405a402432
+10 -30
View File
@@ -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
# garma 的进度条用法(假设 --progress --pulsate 可用)
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 & zenity --progress --pulsate --title="$title" --text="$text" --no-cancel 2>/dev/null &
progress_pid=$! 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