Xorg 中按应用程序缩放窗口以实现高 dpi 显示

Xorg 中按应用程序缩放窗口以实现高 dpi 显示

我正在使用 4k 显示器运行 Gnome Shell,但我使用的几个应用程序根本无法在高分辨率下缩放。

下面是 LMMS 的一个例子,这是一个尚未移植 Qt 5 的应用程序,因此它不具备高 dpi 缩放功能:

截屏
(点击图片放大)

有没有什么办法可以缩放特定的 X 窗口而不改变显示分辨率?

我当前的解决方案是将显示分辨率的尺寸减半,但这会降低支持适当 dpi 缩放的其他每个应用程序的分辨率:

截屏

答案1

我最终找到了一种可以扩展旧应用程序且不会出现任何明显的视觉或性能下降的解决方案。

感谢 kaueraal,您现在可以使用 扩展旧应用程序run_scaled。您可以从他的GitHub 页面xpra或者如果您运行的是 Arch Linux,则作为软件包的一部分。

以下是两个应用程序并排运行的示例:

  • 左侧支持 HiDPI 的 Firefox
  • run_scaledLMMS 在右侧运行

在此处输入图片描述

我通过Arch Linux 维基

答案2

如果没有看到你遇到的具体问题,我建议使用

GDK_SCALE=x

或者

GDK_DPI_SCALE=x

在启动每个应用程序之前。您可能需要手动更改.desktop文件或从 shell 运行命令,并在命令前加上前缀GDK_SCALE=x

GDK_SCALE只允许整数值,但 GDK_DPI_SCALE=x允许小数值,例如GDK_DPI_SCALE=0.66

对于其他基于 SDK 的应用程序,各个套件可能存在类似的设置。但是,由于您的问题与 gnome 桌面有关,因此我将提供此解决方案。

我还没有尝试使用 4k 显示器,但运行GDK_DPI_SCALE=1.66 gnome-calculator将演示该解决方案。

来源:https://developer.gnome.org/gtk3/stable/gtk-x11.html

答案3

维基百科为您提供基于本地 VNC 客户端-服务器的解决方案(参见这里

对我来说这不是一个完整的解决方案,因为如果应用程序需要窗口管理器,它会带来一些问题。

答案4

我认为我找到了一个 GPU 加速的解决方案!安装weston并运行此程序:

weston --xwayland --scale=2
DISPLAY=:1 your_app

就是这样!

调优

注意 1:您可能注意到使用了一个神奇的数字,DISPLAY=:1。这里的基本假设是您的主 xorg 显示器是:0。如果不是,请进行相应调整。

注意 2:您可能已经注意到weston默认情况下有一个顶部面板。您可能想要将其删除。为此,请创建一个weston.ini文件:

[core]
idle-time=0

[shell]
panel-position=none
locking=false

并在启动 weston 时使用它weston --config=/path/to/weston.ini。您也可以将其放置在~/.config/weston.ini以便 weston 自动拾取它,请参阅man weston.ini了解更多详细信息。

编辑:我还在这里记录了新发现的方法:https://wiki.archlinux.org/title/HiDPI#Unsupported_applications,_via_weston

相关内容