如何在Xenial中强制DPI设置?

在Ubuntu Xenial中是否可能强制特定的DPI设置?

我能否传递dpi标志给lightdm以设置X的正确DPI所提到的方法不再起作用:

  • 我成功地将-dpi...选项传递给X服务器,
  • 我在Xorg.0.log中看到X服务器使用了该选项(实际上如果没有此选项,它会从显示器物理尺寸成功计算正确的DPI),
  • 但即使在登录屏幕上,DPI设置也会被重置为96,根据xdpyinfo(我通过在文本控制台上手动设置正确的$DISPLAY$XAUTHORITY来验证了这一点)。

因此问题是:改变DPI是否可能?还是应该摒弃与GNOME相关的任何内容(由于"WONTFIX")直到更理智的开发人员加入GNOME团队为止?


投票者们:这跟Ubuntu的开发版本有什么关系?到底是怎么回事? - psusi
1据我所知,GNOME开发者们似乎也遇到了与微软相同的愚蠢问题,并且只是将所有显示器都视为原始14英寸VGA CRT的96 DPI。如果你能找到一种解决办法来绕过这个问题并使用正确的DPI,我会非常感兴趣。 - psusi
我这里有完全相同的问题。如果你有解决办法,我会很高兴的。 - replay
有一个看起来相关的错误报告,如果每个人都说“我也受到影响”,那么它的重要性就会提高,应该尽快修复:https://bugs.launchpad.net/ubuntu/+source/gtk+3.0/+bug/1543546 - replay
2个回答

我目前无法在Xenial上进行测试,但是这是一个解决方案,对于我的Trusty上与DPI相关的问题起到了作用,而其他解决方案都没有起作用。
问题:当我不得不将我的一个19英寸1280x1024显示器更换为一个17英寸1280x1024显示器后,重新启动后,我的字体变小并且看起来“不对”(我缺乏词汇来描述更多,但我认为这与反锯齿如何与错误的DPI设置相互作用有关)。
更糟糕的是,GTK+ 2.x应用程序给人一种困惑的印象,它们似乎忽略了字体大小设置。(如果我更改字体或样式,应用程序会更新,但即使重新启动应用程序,从11pt.到12pt.或从14pt.到14pt.的更改也没有任何可见效果。不过,我没有对GTK+ 3.x进行该症状的测试。)
解决方案:使用X11资源Xft.dpi
已确认适用于:GTK+ 2.x、GTK+ 3.x和Qt 4应用程序。
针对您的情况,请尝试在您的系统上运行此命令,然后重新启动您的应用程序。
echo Xft.dpi: 75 | xrdb -merge

注意:您可能需要等待和/或重新启动两次。当我使用file-roller和144 DPI测试GTK+ 3.x时,第一次将DPI设置回96后进行测试,它仍然保持在144比例上,但是退出并重新启动第二次后,它返回到了预期的比例。
如果这解决了问题,请通过在~/.Xresources中添加一行“Xft.dpi: 75”来使其持久化。
如果没有解决问题,请尝试其他值,以确保您了解系统对您提供的值的处理方式。我不得不将DPI设置为96才能获得所需的比例,直到我尝试了72 DPI并且字体缩小而不是增大,才想到这一点。
(用一个17英寸显示器替换了失败的最左边的19英寸显示器,并且我已经禁用了KDE的显示设置守护程序,因此我期望所有三个显示器都在从一个19英寸1280x1024显示器计算出的固定DPI设置上运行。)
如果~/.Xresources版本没有效果,你的桌面可能缺少通常调用xrdb来应用它们。我通常在登录时将xrdb -merge ~/.Xresources添加为最后要运行的事务之一,这样就不会与桌面可能尝试完成的其他操作发生冲突。

太棒了!这在Ubuntu 22.04上使用i3wm完美运行。非常感谢!花了好几个星期寻找解决方案,尝试了这个之后终于得到了我想要的结果。祝一切顺利! - Geppettvs D'Constanzo

你可以在运行时直接使用xrandr来设置你的dpi。
xrandr --output <outputname> --dpi <dpi>

或者在/etc/lightdm/lightdm.conf文件中。
xserver-command=X -dpi 75

并确保使用

被接受

xdpyinfo | grep resolution

不是所有的驱动程序和屏幕输出组合都支持DPI缩放,如果你无法在命令行上完成它,那么lightdm很可能也无法做到。
你还会发现一些应用程序(特别是旧版本或非本地gtk)在非标准DPI下看起来不正确,在某些情况下甚至完全无法使用。随着更高dpi屏幕逐渐成为常态,这种情况应该会有所改善。

xserver-command=X -dpi 75 不起作用,请参见上文。 - user3159253