尝试打包百度云网盘 Flatpak 遇到问题

上周末打包了一下百度网盘 Linux 的 Flatpak 版,遇到点问题,就是无法自动在 4K 显示器上自动 2 倍缩放,导致运行之后界面字体很小。尝试了一下,如果不在 Flatpak 环境里面运行,缩放和显示是一切正常的。
chroot 进入 Flatpak 沙盒,发现里面 $GDK_SCALE 和 $GDK_DPI_SCALE 环境变量也都正常设置了,运行的时候也没有任何报错,应用里面可以正常使用 fcitx 输入法。
环境是 openSUSE Tumbleweed,KDE 5.19.5。
查了一下百度网盘 Linux 版是 Electron 编写的,Flatpak 的文档里面也没有相关说明如何自动缩放 Electron。

目前我的猜测是 flatpak 提供了/usr 下面很多 so 文件,这些 so 文件可能没有 TW 的新,读不懂~/.config 下面的缩放设置,但是没办法验证我这个猜想。

flatpak 是通过 unix domain socket 调用容器外的 X11 会话。具体的可以看一下 flatpak-run.c。我不懂 C,但看它在那里各种重设 Display 和 Xauthority,别的环境变量没有看到读取和写入。

我觉得你可以打包一个类似 xdpyinfo 之类的 flatpak 试试里外的 dpi 是否一致…要是一致的话,再打包一个非 electron/chromium 的支持缩放的程序看看正常不正常,不一致的话试试改了你那些变量后正常不正常,都正常应该就是 electron 的锅…它可能不读 GDK_SCALE 这套或者不读容器里的而想读系统的读不到

BTW,electron/chromium 可以用 —force-device-scale-factor 强制缩放。自用没问题,但是对打包来说只要不能自动缩放就等于没有解决方案

1赞

我设置了—force-device-scale-factor 这个环境变量,仍然没有任何作用。
别人打包的应用(例如 Zoom,Telegram 等)是可以正常缩放的,所以我认为可能是 Electron 或者百度网盘的问题。

@xzhao 这个不是环境变量啊…这个是 chromium/electron 的启动选项…一般在 .desktop 文件里改,你也可以在 .config 下面覆盖一个…

我试过了,启动时候加入–force-device-scale-factor=2 这个选项,还是不能正常缩放。这个我真的想不明白为什么不行了……
我的启动脚本是:
LOCPATH=/app/usr/share/locale/zh/lib LC_ALL=zh_CN.utf8 LD_LIBRARY_PATH=$APPDIR/opt/baidunetdisk:$APPDIR/usr/lib/x86_64-Linux-gnu:$LD_LIBRARY_PATH
$APPDIR/opt/baidunetdisk/baidunetdisk --no-sandbox —force-device-scale-factor=2

@marguerite 好吧,Visual Studio Code 的官方 flatpak 打包也是不能 scale 的。感觉应该是 Electron 框架的问题。