FydeOS是在ChromiumOS基础上进行本地化与功能增强开发出的操作系统,解决了ChromeOS家族在国内由于网络问题带来的较差体验。系统流畅顺滑,但我发现在最新版本的FydeOS下运行Linux桌面应用会出现缩放异常的问题,很是恼人。本文将分享我解决这一问题的过程与方法。

0x01

在修复前,运行Linux桌面应用(以VSCode为例)时所有控件都变得巨大,阻碍正常的使用,如图所示(右侧为正常缩放比例的应用):

0x02

刚开始遇到这个问题,我猜想是FydeOS的Linux环境内DPI设置不当导致的(此前在使用ArchLinux时遇到过类似的问题),于是我打开Linux环境终端,发现其使用了Gnome作为桌面环境。

于是我使用此前在Fedora中修改DPI的方式对其进行处理:

gsettings set org.gnome.desktop.interface text-scaling-factor 0.6

0x03

打开gnome-tweak-tool后一看,设置生效了,运行Gnome自带应用也生效,但在运行Chrome、VSCode等软件时依旧会出现该问题。

看来这一方法并不奏效。

0x04

我将目光放在了FydeOS自带的缩放中。

打开FydeOS的设置,将缩放分辨率从默认的1536x864调整至显示器原生的1920x1080,再打开上述应用,发现尽管控件略微缩小,但依旧比FydeOS在1920×1080分辨率下的其他应用大,而其缩放大小与修改缩放分辨率前FydeOS原生应用大小相同。

将修改前后的截图进行对比,加上粗略的计算,我发现巨大化的控件实际上的缩放比率大概是125%左右(修改前VSCode高度-修改后VSCode高度,我还煞有其事拿了直尺去测量),但FydeOS默认缩放比率同样为125%。

0x05

看来我们已经接近了真相,两个环境内的缩放比率叠加,因此造成其控件巨大化。解决的方法则是取消Linux环境下那多余的125%缩放比率。

但我们刚刚通过修改gsettings的尝试以失败告终,接下来还有什么可以修改的呢?

X11!我顿时想起了它。如果Gnome不是罪魁祸首,那么就只有X11能修改图形界面的DPI

0x06

为了验证我的猜想,我执行了以下命令检查显示器与分辨率的状态:

xdpyinfo | grep -B 2 resolution

输出结果与我的猜想一致:

screen #0:
  dimensions:    1920x1080 pixels (305x171 millimeters)
  resolution:    160x160 dots per inch

而为了继续验证,我同样执行了以下命令:

xrdb -query | grep dpi

得到的结果同样与我的猜想一致:

Xft.dpi:        160

通过验算,同样也验证了它就是导致缩放异常的罪魁祸首。

0x07

了解了问题的症结,接下来就是解决问题的时间。
我在当前用户目录下建立了一个叫做~/.Xresources的文件,并在其中输入以下配置:

Xft.dpi:  120

然后执行以下命令应用该配置文件:

xrdb ~/.Xresources

再打开上述出现问题的软件,发现缩放比率终于恢复正常:

0x08

最后一步则是让该命令能在软件启动的时候自动执行。

这一步方法多样,根据不同需求可以选择不同方法。

我选择的方法是直接修改/etc/profile文件,让其在Shell加载时生效,优点是简单易行,缺点则是每次开机后需要先启动一下终端(目前没找到办法让FydeOS下的终端开机自启动)

直接编辑/etc/profile文件,并在最后加入一行:

/usr/bin/xrdb /home/你的用户名/.Xresources