mirror of
https://gitee.com/gfdgd-xi/deep-wine-runner
synced 2025-12-16 03:52:04 +08:00
初步实现高级打包器脚本文件的抽离(未测试可用性)
This commit is contained in:
@@ -0,0 +1,201 @@
|
||||
#!/bin/bash
|
||||
|
||||
SHELL_DIR=$(dirname $(realpath $0))
|
||||
|
||||
# 函数:获取所有应用列表
|
||||
# 函数:获取所有应用列表
|
||||
get_apps_list() {
|
||||
local apps_list=()
|
||||
local app_dirs=($(find /opt/apps -mindepth 1 -maxdepth 1 -type d -exec test -f {}/files/run.sh \; -print))
|
||||
|
||||
if [ ${#app_dirs[@]} -eq 0 ]; then
|
||||
zenity --error --text="请至少在应用商店安装一个wine应用后启动" --width 200
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for app_dir in "${app_dirs[@]}"; do
|
||||
local package_name=$(basename "$app_dir")
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local bottle_name="无法读取"
|
||||
local version="无法读取"
|
||||
local use_spark="否"
|
||||
|
||||
if [ -f "$run_script" ]; then
|
||||
bottle_name=$(grep -oP 'BOTTLENAME="\K[^"]+' "$run_script")
|
||||
version=$(grep -oP 'APPVER="\K[^"]+' "$run_script")
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
version="无法读取"
|
||||
fi
|
||||
# START_SHELL_PATH=XXX/spark_run_v4.sh
|
||||
if grep START_SHELL_PATH= "$run_script" | grep spark_run_v4.sh; then
|
||||
use_spark="是"
|
||||
fi
|
||||
fi
|
||||
|
||||
local app_name=$(get_app_name "$package_name")
|
||||
|
||||
apps_list+=("$app_name" "$package_name" "$bottle_name" "$version" "$use_spark")
|
||||
done
|
||||
|
||||
echo "${apps_list[@]}"
|
||||
}
|
||||
|
||||
# 函数:获取应用名称
|
||||
get_app_name() {
|
||||
local app_name_orig=$(grep -m 1 '^Name=' "/usr/share/applications/$1.desktop" | cut -d '=' -f 2)
|
||||
local app_name_i18n=$(grep -m 1 "^Name\[$LANGUAGE\]\=" "/usr/share/applications/$1.desktop" | cut -d '=' -f 2)
|
||||
local app_name=""
|
||||
|
||||
if [ -z "$app_name_i18n" ]; then
|
||||
app_name="$app_name_orig"
|
||||
else
|
||||
app_name="$app_name_i18n"
|
||||
fi
|
||||
|
||||
echo "$app_name"
|
||||
}
|
||||
|
||||
# 函数:选择应用
|
||||
select_app() {
|
||||
local apps_list=($(get_apps_list))
|
||||
local app=$(zenity --print-column=2 --width=800 --height=600 --list --title="选择应用" --text="选择要执行的应用" --column="应用名" --column="包名" --column="容器名" --column="版本号" --column="是否使用星火wine助手" "${apps_list[@]}")
|
||||
|
||||
if [ -n "$app" ]; then
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local use_spark="否"
|
||||
if if grep START_SHELL_PATH= "$run_script" | grep spark_run_v4.sh; then
|
||||
use_spark="是"
|
||||
fi
|
||||
if [ "$use_spark" == "是" ]; then
|
||||
select_spark_action "$app" "$(get_app_name $app)"
|
||||
else
|
||||
select_non_spark_action "$app" "$(get_app_name $app)"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
select_non_spark_action(){
|
||||
local app="$1"
|
||||
local app_name="$2"
|
||||
local options=("在终端中打开" "打开容器目录" "清理并重置容器目录" "更多操作")
|
||||
local choice=$(zenity --width=800 --height=600 --list --title="选择操作" --text="选择要对$app_name执行的操作" --column="操作" "${options[@]}")
|
||||
case "$choice" in
|
||||
"在终端中打开")
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
x-terminal-emulator -e "$run_script"
|
||||
;;
|
||||
"打开容器目录")
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local bottle_name=$(grep -oP 'BOTTLENAME="\K[^"]+' "$run_script")
|
||||
xdg-open file:///home/$(whoami)/.deepinwine/${bottle_name}
|
||||
;;
|
||||
"清理并重置容器目录")
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local bottle_name=$(grep -oP 'BOTTLENAME="\K[^"]+' "$run_script")
|
||||
$SHELL_DIR/../kill.sh ${bottle_name}
|
||||
rm -rf /home/$(whoami)/.deepinwine/${bottle_name}/*
|
||||
zenity --info --width=300 --text="操作已完成,请重启Wine应用查看"
|
||||
;;
|
||||
"更多操作")
|
||||
if [ -e /usr/bin/deepin-wine-runner ];then
|
||||
/usr/bin/deepin-wine-runner
|
||||
elif [ $(command -v spark-store) ];then
|
||||
spark-store spk://store/tools/spark-deepin-wine-runner
|
||||
elif [ $(command -v deepin-home-appstore-client) ];then
|
||||
xdg-open appstore://deepin-home-appstore-client?app_detail_info/spark-deepin-wine-runner
|
||||
else
|
||||
xdg-open https://gitee.com/gfdgd-xi/deep-wine-runner/releases
|
||||
fi
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
# 函数:选择星火wine助手操作
|
||||
select_spark_action() {
|
||||
local app="$1"
|
||||
local app_name="$2"
|
||||
local options=("在终端中打开" "打开容器目录" "清理并重置容器目录" "修改应用缩放" "修改全局缩放" "更多操作")
|
||||
local choice=$(zenity --width=800 --height=600 --list --title="选择操作" --text="选择要对$app_name执行的操作" --column="操作" "${options[@]}")
|
||||
|
||||
case "$choice" in
|
||||
"在终端中打开")
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
x-terminal-emulator -e "$run_script"
|
||||
;;
|
||||
"打开容器目录")
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local bottle_name=$(grep -oP 'BOTTLENAME="\K[^"]+' "$run_script")
|
||||
xdg-open file:///home/$(whoami)/.deepinwine/${bottle_name}
|
||||
;;
|
||||
"清理并重置容器目录")
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local bottle_name=$(grep -oP 'BOTTLENAME="\K[^"]+' "$run_script")
|
||||
$SHELL_DIR/../spark_kill.sh ${bottle_name}
|
||||
rm -rf /home/$(whoami)/.deepinwine/${bottle_name}/*
|
||||
zenity --info --width=300 --text="操作已完成,请重启Wine应用查看"
|
||||
;;
|
||||
"修改应用缩放")
|
||||
select_scale_action "应用" "$app"
|
||||
;;
|
||||
"修改全局缩放")
|
||||
select_scale_action "全局" "$app"
|
||||
;;
|
||||
"更多操作")
|
||||
if [ -e /usr/bin/deepin-wine-runner ];then
|
||||
/usr/bin/deepin-wine-runner
|
||||
elif [ $(command -v spark-store) ];then
|
||||
spark-store spk://store/tools/spark-deepin-wine-runner
|
||||
elif [ $(command -v deepin-home-appstore-client) ];then
|
||||
xdg-open appstore://deepin-home-appstore-client?app_detail_info/spark-deepin-wine-runner
|
||||
else
|
||||
xdg-open https://gitee.com/gfdgd-xi/deep-wine-runner/releases
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 函数:选择缩放操作
|
||||
select_scale_action() {
|
||||
local scale_type="$1"
|
||||
local app="$2"
|
||||
local app_dir="/opt/apps/$app"
|
||||
local run_script="$app_dir/files/run.sh"
|
||||
local bottle_name=$(grep -oP 'BOTTLENAME="\K[^"]+' "$run_script")
|
||||
local scale_factors=("1.0" "1.25" "1.5" "1.75" "2.0" "2.5" "3.0" "3.5" "4.0" "恢复默认")
|
||||
local choice=$(zenity --width=800 --height=600 --list --title="选择缩放比例" --text="选择要设置的缩放比例" --column="比例" "${scale_factors[@]}")
|
||||
|
||||
if [ -n "$choice" ]; then
|
||||
local scale_factor="$choice"
|
||||
|
||||
if [ "$scale_type" == "应用" ]; then
|
||||
if [ "$scale_factor" == "恢复默认" ];then
|
||||
rm $HOME/.deepinwine/$bottle_name/scale.txt
|
||||
else
|
||||
$SHELL_DIR/scale-set-helper/set-wine-scale.sh -s "$scale_factor" "$HOME/.deepinwine/$bottle_name"
|
||||
fi
|
||||
elif [ "$scale_type" == "全局" ]; then
|
||||
if [ "$scale_factor" == "恢复默认" ];then
|
||||
rm $HOME/.config/spark-wine/scale.txt
|
||||
else
|
||||
echo "$scale_factor" > "$HOME/.config/spark-wine/scale.txt"
|
||||
find "$HOME/.deepinwine/" -name "scale.txt" -type f -print -exec rm -rf {} \;
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
zenity --info --width=300 --text="操作已完成,请重启Wine应用查看"
|
||||
}
|
||||
|
||||
select_app
|
||||
|
||||
Reference in New Issue
Block a user