Spark Dwine Helper组件之set-dwine-scale @ shenmo | 0001-01-01T00:00:00Z | 1 分钟阅读 | 更新于 0001-01-01T00:00:00Z

发布时间: 2022-05-30T15:20:14+08:00

需求:deepin-wine5不能读取DEEPIN_WINE_SCALE的设置,需要手动指定;ubuntu下没有人给指定缩放

解决:读取DEEPIN_WINE_SCALE并设置缩放;对于没有DEEPIN_WINE_SCALE的,如果是deepin/UOS,则返回1.0 ;如果不是,弹窗让用户选择缩放

方式:set-dwine-scale.sh


位置: https://gitee.com/deepin-community-store/spark-wine/blob/master/spark-dwine-helper/pkg/opt/durapps/spark-dwine-helper/set-dwine-scale.sh

作用:设置wine容器的缩放

原理:修改注册表键值

如果有DEEPIN_WINE_SCALE,则把内容输出到~/.config/spark-wine/scale.txt

如果没有,则调用spark-get-scale.sh

  • 如果发现是deepin/uos,这意味着是1.0缩放
  • 如果不是,检查是否有已存在的配置文件(~/.config/spark-wine/scale.txt),如果有,退出
  • 如果不是且无配置文件,弹窗询问用户

获取后,输出到~/.config/spark-wine/scale.txt

然后通过~/.config/spark-wine/scale.txt的数值进行设置

$APPRUN_CMD存在(也就是被spark_run_v4.sh调用时),利用wine的原生方式添加

case "$env_dwine_scale" in
       1.0)
            dpi="96"
            ;;
        1.25)
            dpi="120"
            ;;
        1.5)
            dpi="144"
            ;;
        2.0)
            dpi="192"
            ;;
	*)
		dpi="96"
		#可能不是Xorg或者是其他错误
		;;
    esac
echo "用$APPRUN_CMD执行指令"
echo "指令为"
echo "env WINEPREFIX="$CONTAINER_PATH" $APPRUN_CMD reg ADD 'HKCU\Control Panel\Desktop' /v LogPixels /t REG_DWORD /d $dpi /f"

env WINEPREFIX="$CONTAINER_PATH" $APPRUN_CMD reg ADD 'HKCU\Control Panel\Desktop' /v LogPixels /t REG_DWORD /d $dpi /f

读取并按对应的值替换注册表键值 在HKEY_CURRENT_USER\Control Panel\DesktopHKEY_CURRENT_USER\Software\Wine\Fonts中,以DWORD储存

enter description here

替换为指定的值

echo "没有检测到APPRUN_CMD环境变量,执行sed替换。如果要使用wine原生提供的方法,请在环境变量中指定(export)"
case "$env_dwine_scale" in
       1.0)
            reg_text="\"LogPixels\"=dword:00000060"
            ;;
        1.25)
            reg_text="\"LogPixels\"=dword:00000078"
            ;;
        1.5)
            reg_text="\"LogPixels\"=dword:00000090"
            ;;
        2.0)
            reg_text="\"LogPixels\"=dword:000000C0"
            ;;
	*)
		reg_text="\"LogPixels\"=dword:00000060"
		#可能不是Xorg
		;;
    esac

#####根据scale设置dword值


LogPixels_line=(`sed -n -e "/"LogPixels"/=" $CONTAINER_PATH/user.reg`)
#####关键词行数取得
until [ "${#LogPixels_line[@]}" = "0" ];do


line_num=${LogPixels_line[0]}

sed -i "$line_num"c\ "$reg_text" "$CONTAINER_PATH/user.reg"
LogPixels_line=(${LogPixels_line[@]:1})
done

© 2019 - 2024 shenmo的世界

Hugo theme Dream.

看不见我

avatar
关于我

星火应用商店

社交链接

本博客所有文章使用《知识共享 署名-非商业性使用-相同方式共享 4.0》(CC-BY-NC-SA-4.0)协议

这意味着你可以在署名并标明出处的情况下进行非商业转载(转载的文章也需要遵守CC-BY-NC-SA-4.0协议),但不可以进行商业转载