针对无法在 HiDPI 显示屏上缩放的应用的解决方案

针对无法在 HiDPI 显示屏上缩放的应用的解决方案

我的笔记本电脑有 15 英寸 4k 显示屏。几乎所有功能都运行良好,但有些应用程序无法扩展且太小而无法使用。例如:Hipchat、Ardour、Steam、Gimp 等。

有办法解决这个问题吗?我见过xrandr在运行应用程序之前设置 DPI,但似乎没有效果(或者我做错了。)

如果我能解决这个问题,那么一切都会顺利运行。

另外,我正在使用 Gnome,但 Unity 中也存在同样的问题。

答案1

正如 olivierb2 指出的那样,没有简单、通用的方法来实现这一点。不过,我确实找到了一种在每个应用程序基础上执行窗口缩放的方法,这种方法效果很好,但并不适用于所有应用程序。

我找到了一个名为运行缩放它充当 xpra 的前端,类似于 X 的屏幕。它基本上设置了第二个 X 服务器,该服务器可按您选择的任何比例缩放,运行您的应用程序,然后将其转发到您的主显示器。为了使用它,您需要安装一些依赖项:

sudo apt-get install xpra winswitch xvfb

安装:

curl "https://raw.githubusercontent.com/kaueraal/run_scaled/master/run_scaled" > ~/.local/bin/run_scaled
chmod +x ~/.local/bin/run_scaled

在那之后在新的 shell 上你可以像这样运行你的应用程序:

run_scaled someapp

如果您测试需要缩放的应用程序并且它可以运行,您可以通过将脚本复制到路径中的某个位置并编辑应用程序的 .desktop 文件以便它可以从 DE 启动,从而使其更加用户友好。

缺点是,这种方法并不适用于所有应用程序。我尝试过的所有 FOSS 应用程序似乎都运行良好,但 Steam 和 HipChat 等非免费应用程序却无法使用。这不是一个完美的解决方案,但在紧急情况下可以提供帮助。

答案2

正如@Adam Drew 建议的那样,使用run_scaled

在 Ubuntu 20.04 LTS 上安装:

sudo apt install xvfb xpra xrandr

然后run_scaled从下载脚本这个邮编并将其放入/usr/local/bin目录中。

然后启动你的程序,执行例如

run_scaled ./soapui.sh

它在不能自然扩展的 Java Swing 应用程序上运行良好。

答案3

对于使用 Qt5 的单个应用程序,您只需编辑该.desktop文件即可。我将使用 OpenSCAD 等 snap 应用程序为您提供示例。

  1. /var/lib/snapd/desktop/applications

  2. .desktop在这种情况下,找到您的应用程序openscad_openscad.desktop

  3. 编辑文件(使用sudo)并找到行Exec=...。在我们的例子中,该行是:

    Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/openscad_openscad.desktop /snap/bin/openscad %f
    

    您必须将其更改为:

    Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/openscad_openscad.desktop QT_SCALE_FACTOR=2.5 /snap/bin/openscad %f
    

    注意QT_SCALE_FACTOR=2.5已添加。将的值调整QT_SCALE_FACTOR为您觉得合适的值。

  4. 保存文件。

  5. 重新启动您的应用程序。

答案4

Unity 和 GNOME 目前都无法很好地支持 HiDPI,但这种情况很快就会改善。您可以通过增加字体大小来提高可用性unity-tweak-tool。 打开字体在里面外貌部分,并调整文本缩放比例。

Firefox 不会注意到 Unity 调整设置,因此您必须手动配置它。只需打开它,输入关于:配置在 URL 中设置参数布局.css.devPixelsPerPx与您在“字体”中定义的值相同。

相关内容