优化设置缩放逻辑

This commit is contained in:
2025-02-26 11:34:08 +08:00
parent 3b19f5f26c
commit dfcecf30db
5 changed files with 78 additions and 59 deletions
@@ -1,8 +1,11 @@
#/bin/bash #!/bin/bash
# 导入 transhell.bashimport 脚本并加载调试模式
source ${SHELL_DIR}/bashimport/transhell.bashimport source ${SHELL_DIR}/bashimport/transhell.bashimport
load_transhell_debug load_transhell_debug
#########>>>>>>> 函数段 #########>>>>>>> 函数段
# 获取当前系统的发行版名称
Get_Dist_Name() Get_Dist_Name()
{ {
if grep -Eqii "Deepin" /etc/issue || grep -Eq "Deepin" /etc/*-release; then if grep -Eqii "Deepin" /etc/issue || grep -Eq "Deepin" /etc/*-release; then
@@ -17,38 +20,64 @@ Get_Dist_Name()
DISTRO='OtherOS' DISTRO='OtherOS'
fi fi
} }
# 检测常见的缩放环境变量
Check_Scale_Env_Vars()
{
if [ -n "$DEEPIN_WINE_SCALE" ]; then
echo "$DEEPIN_WINE_SCALE"
return 0
elif [ -n "$GDK_SCALE" ]; then
echo "$GDK_SCALE"
return 0
elif [ -n "$QT_SCALE_FACTOR" ]; then
echo "$QT_SCALE_FACTOR"
return 0
elif [ -n "$WINIT_X11_SCALE_FACTOR" ]; then
echo "$WINIT_X11_SCALE_FACTOR"
return 0
elif [ -n "$ELM_SCALE" ]; then
echo "$ELM_SCALE"
return 0
fi
return 1
}
######<<<<<<< ######<<<<<<<
# 提示全局参数的位置
echo "全局参数的位置在 $HOME/.config/spark-wine/scale.txt"
echo 全局参数的位置在$HOME/.config/spark-wine/scale.txt,如果需要更换请删除此文件重新生成 # 创建配置目录
mkdir -p $HOME/.config/spark-wine/ mkdir -p $HOME/.config/spark-wine/
#####全局参数位置
#####能到这一步的说明已经是没有自定义参数了,直接读全局覆盖没问题
#####
# 检查是否已经设置过全局参数
if [ -f "$HOME/.config/spark-wine/scale.txt" ]; then if [ -f "$HOME/.config/spark-wine/scale.txt" ]; then
echo "已经设置过全局参数,使用" echo "已经设置过全局参数,使用"
echo "全局参数的位置在 $HOME/.config/spark-wine/scale.txt,如果需要更换请删除此文件重新生成" echo "全局参数的位置在 $HOME/.config/spark-wine/scale.txt,如果需要更换请删除此文件重新生成"
exit exit
fi fi
# 检测常见的缩放环境变量
Get_Dist_Name scale_value=$(Check_Scale_Env_Vars)
if [ "$DISTRO" = "UniontechOS" ] || [ "$DISTRO" = "GXDE" ];then if [ -n "$scale_value" ]; then
echo 1.0 > $HOME/.config/spark-wine/scale.txt echo "$scale_value" > $HOME/.config/spark-wine/scale.txt
#####就是1倍缩放 echo "检测到缩放环境变量,使用 $scale_value 作为缩放比例"
exit exit
fi fi
# 如果环境变量未设置,则根据系统发行版设置默认缩放比例
Get_Dist_Name
if [ "$DISTRO" = "UniontechOS" ] || [ "$DISTRO" = "GXDE" ]; then
echo "1.0" > $HOME/.config/spark-wine/scale.txt
echo "检测到 UniontechOS 或 GXDE 系统,使用 1.0 作为默认缩放比例"
exit
fi
# 获取当前显示器的分辨率
dimensions=$(xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
dimensions=`xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'` # 使用 Zenity 弹窗让用户选择缩放比例
scale_factor=`zenity --list \ scale_factor=$(zenity --list \
--width=700 \ --width=700 \
--height=350 \ --height=350 \
--title="${TRANSHELL_CONTENT_YOUR_DIMENSION_IS} $dimensions ${TRANSHELL_CONTENT_PLEASE_CHOOSE_ONE_BELOW}" \ --title="${TRANSHELL_CONTENT_YOUR_DIMENSION_IS} $dimensions ${TRANSHELL_CONTENT_PLEASE_CHOOSE_ONE_BELOW}" \
@@ -61,8 +90,9 @@ scale_factor=`zenity --list \
2.5 \ 2.5 \
3.0 \ 3.0 \
3.5 \ 3.5 \
4.0` 4.0)
# 处理用户的选择
case "$scale_factor" in case "$scale_factor" in
"") "")
zenity --info --text="${TRANSHELL_CONTENT_1_SCALE_AS_DEFAULT}${TRANSHELL_CONTENT_YOU_CAN_USE_SPARK_WINE_HELPER_SETTINGS_TO_ADJUST}" --width=500 --height=150 zenity --info --text="${TRANSHELL_CONTENT_1_SCALE_AS_DEFAULT}${TRANSHELL_CONTENT_YOU_CAN_USE_SPARK_WINE_HELPER_SETTINGS_TO_ADJUST}" --width=500 --height=150
@@ -72,6 +102,6 @@ case "$scale_factor" in
zenity --info --text="${TRANSHELL_CONTENT_SCALE_IS} $scale_factor ${TRANSHELL_CONTENT_SAVED}${TRANSHELL_CONTENT_YOU_CAN_USE_SPARK_WINE_HELPER_SETTINGS_TO_ADJUST}" --width=500 --height=150 zenity --info --text="${TRANSHELL_CONTENT_SCALE_IS} $scale_factor ${TRANSHELL_CONTENT_SAVED}${TRANSHELL_CONTENT_YOU_CAN_USE_SPARK_WINE_HELPER_SETTINGS_TO_ADJUST}" --width=500 --height=150
;; ;;
esac esac
# 将用户选择的缩放比例保存到配置文件中
echo "$scale_factor" > $HOME/.config/spark-wine/scale.txt echo "$scale_factor" > $HOME/.config/spark-wine/scale.txt
@@ -55,19 +55,10 @@ if [ "$appointed_scale_factor" = "" ];then
if [ ! -f "$CONTAINER_PATH/scale.txt" ];then if [ ! -f "$CONTAINER_PATH/scale.txt" ];then
${SHELL_DIR}/spark-dwine-helper/scale-set-helper/get-scale.sh
if [ "$DEEPIN_WINE_SCALE" = "" ];then
echo "E: No DEEPIN_WINE_SCALE found. Use get-scale.sh to Set "
echo "错误:没有检测到DEEPIN_WINE_SCALE,用get-scale.sh设置"
${SHELL_DIR}/spark-dwine-helper/scale-set-helper/get-scale.sh "$CONTAINER_PATH"
wine_scale=$(cat $HOME/.config/spark-wine/scale.txt) wine_scale=$(cat $HOME/.config/spark-wine/scale.txt)
echo "检测到的缩放倍数为:$wine_scale" echo "检测到的缩放倍数为:$wine_scale"
echo "Scale is $wine_scale" echo "Scale is $wine_scale"
else
wine_scale=$DEEPIN_WINE_SCALE
echo "检测到的缩放倍数为:$wine_scale"
echo "Scale is $wine_scale"
fi
else else
wine_scale=`cat $CONTAINER_PATH/scale.txt` wine_scale=`cat $CONTAINER_PATH/scale.txt`
@@ -20,7 +20,7 @@ echo "$CHOSEN_SETTINGS"
case "$CHOSEN_SETTINGS" in case "$CHOSEN_SETTINGS" in
"${TRANSHELL_CONTENT_SET_GLOBAL_SCALE}") "${TRANSHELL_CONTENT_SET_GLOBAL_SCALE}")
######## ########
zenity --info --text="${TRANSHELL_CONTENT_THIS_WILL_NOT_TAKE_EFFECT_IN_DEEPIN_BECAUSE_READ_ENVIRONMENT_FIRST}" --width=500 --height=150
dimensions=`xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'` dimensions=`xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'`
scale_factor=`zenity --list \ scale_factor=`zenity --list \
@@ -5,7 +5,6 @@ TRANSHELL_CONTENT_SET_GLOBAL_SCALE="Set global scale"
TRANSHELL_CONTENT_SET_APP="Single App Settings" TRANSHELL_CONTENT_SET_APP="Single App Settings"
TRANSHELL_CONTENT_SYNC_APP_SCALE_WITH_GLOBAL="Sync all the wine app scale with global scale in one key" TRANSHELL_CONTENT_SYNC_APP_SCALE_WITH_GLOBAL="Sync all the wine app scale with global scale in one key"
TRANSHELL_CONTENT_ONLY_AVAILABLE_TO_SPARK_DWINE_HELPER_APP="Note: The options above only take effect on spark-dwine-helper apps" TRANSHELL_CONTENT_ONLY_AVAILABLE_TO_SPARK_DWINE_HELPER_APP="Note: The options above only take effect on spark-dwine-helper apps"
TRANSHELL_CONTENT_THIS_WILL_NOT_TAKE_EFFECT_IN_DEEPIN_BECAUSE_READ_ENVIRONMENT_FIRST="NoteThis option is invalid in deepin/UOS,for the script will read deepin/UOS scale settings first"
TRANSHELL_CONTENT_YOUR_DIMENSION_IS="Your dimension is " TRANSHELL_CONTENT_YOUR_DIMENSION_IS="Your dimension is "
TRANSHELL_CONTENT_PLEASE_CHOOSE_ONE_BELOW="Please choose one option below" TRANSHELL_CONTENT_PLEASE_CHOOSE_ONE_BELOW="Please choose one option below"
TRANSHELL_CONTENT_1_SCALE_AS_DEFAULT="Setting 1.0 scale as default" TRANSHELL_CONTENT_1_SCALE_AS_DEFAULT="Setting 1.0 scale as default"
@@ -5,7 +5,6 @@ TRANSHELL_CONTENT_SET_GLOBAL_SCALE="设置全局缩放"
TRANSHELL_CONTENT_SET_APP="设置单个应用" TRANSHELL_CONTENT_SET_APP="设置单个应用"
TRANSHELL_CONTENT_SYNC_APP_SCALE_WITH_GLOBAL="一键将所有已安装应用的缩放设置改为与全局缩放一致" TRANSHELL_CONTENT_SYNC_APP_SCALE_WITH_GLOBAL="一键将所有已安装应用的缩放设置改为与全局缩放一致"
TRANSHELL_CONTENT_ONLY_AVAILABLE_TO_SPARK_DWINE_HELPER_APP="备注:以上操作仅对使用了spark-dwine-helper的应用生效" TRANSHELL_CONTENT_ONLY_AVAILABLE_TO_SPARK_DWINE_HELPER_APP="备注:以上操作仅对使用了spark-dwine-helper的应用生效"
TRANSHELL_CONTENT_THIS_WILL_NOT_TAKE_EFFECT_IN_DEEPIN_BECAUSE_READ_ENVIRONMENT_FIRST="请注意:此选项对deepin/UOS无效,会优先读取deepin/UOS的缩放设置进行缩放"
TRANSHELL_CONTENT_YOUR_DIMENSION_IS="您的分辨率是:" TRANSHELL_CONTENT_YOUR_DIMENSION_IS="您的分辨率是:"
TRANSHELL_CONTENT_PLEASE_CHOOSE_ONE_BELOW="请在以下选项中选择一个" TRANSHELL_CONTENT_PLEASE_CHOOSE_ONE_BELOW="请在以下选项中选择一个"
TRANSHELL_CONTENT_1_SCALE_AS_DEFAULT="默认为1倍缩放。" TRANSHELL_CONTENT_1_SCALE_AS_DEFAULT="默认为1倍缩放。"