多头 Linux 上的 XRandR DPI

多头 Linux 上的 XRandR DPI

我有多个屏幕,每个屏幕的正确 DPI 设置都不同。我可以使用xrandr --dpi X更改所有屏幕的 DPI,是否可以为每个屏幕设置不同的 DPI?如何让应用程序在移动到其他屏幕时重新计算字体大小? xrandr --dpi X仅影响新窗口,旧窗口仍使用旧的 DPI 值。

答案1

我还没有尝试过,但是有一个很好的答案这里这建议使用该xrandr选项scale 来获得您想要的效果。

更新:这确实有效,我已经写了摘要说明这里

答案2

我能够使用以下 github 讨论中概述的详细信息来解决这个问题(有问题):https://github.com/linuxmint/Cinnamon/issues/3606

外接显示器 QHD (2560X1440),内置/笔记本电脑显示器 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2880
xrandr --output DP-1 --mode 2560x1440 --scale 2x2 --fb 5120x4680

或外接显示器 FHD (1920x1080),内置/笔记本电脑显示器 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2160
xrandr --output DP-1 --mode 1920x1080 --scale 2x2 --fb 3840x3960

这些方法有效,但当我移动窗口、调整屏幕大小或在浏览器上滚动时,高分辨率显示器(笔记本电脑)会出现大量撕裂。这感觉就像是一种软件渲染解决方案(存在所有这些撕裂和刷新缓慢的问题)。

2017 年,Linux/Gnome 需要解决多显示器、混合缩放解决方案。Windows 10 和 OS X 都已解决此问题,无需借助部分有效的命令行临时解决方案(游戏无法接受撕裂问题)

答案3

无法使用 设置不同的 DPI xrandr

为了处理这种情况,各种论坛和 Stack Exchange 中提供了许多使用扩展的解决方案(例如--scale 2x2--scale-from 1920x1440)。

虽然这些对我来说确实有用,但放大后的显示器上还是有点模糊。这不是很明显,很容易被忽略,但我对这种事情非常敏感,这让我很头疼。

一个不会产生任何模糊的更好的解决方案是使用--transform而不是--scale。我不知道变换与缩放有何不同,而且它有效这一事实只是一个经验观察。

需要正确设置 2 个监视器的位置:--left-of--below等不起作用,因为它们没有考虑到转换。

以下是我所使用的,并附有每个值的解释,以便您可以根据自己的情况进行调整:

xrandr --output DP-1 --mode 2560x1440 --pos 0x0 --transform 2,0,0,0,2,0,0,0,1 --output eDP-1 --mode 3840x2400 --pos 0x2880 --primary

您可以通过不带参数运行来找到显示器的名称和正确的默认分辨率xrandr

  • 我的外接显示器(DP-1)的分辨率为2560x1440
  • 我需要将分辨率转换为 2 倍
  • 我的笔记本电脑 ( eDP-1) 的分辨率为3840x2400

我想将外接显示器放在笔记本电脑上方。 --pos是显示器空间(两个显示器占据的总面积)中一个显示器左上角的位置。

--pos 0x0将外接显示器置于顶部。

为了让笔记本电脑位于其下方,我需要获取坐标的正确值y(在这种情况下x当然是):它是通过变换(这里是 2 的倍数)校正的0外部显示器的高度( ),即。14401440*2 = 2880

我因此将其用于--pos 0x2880笔记本电脑。


作为参考,这是我正在使用的系统:

  • 操作系统:Arch Linux
  • 西医:i3
  • 笔记本电脑:4千
  • 外接显示器:1080p

注意:我最初在另一个 Stack Exchange 上发布了一个非常相似的答案这里

答案4

您可以使用以下方法为每个屏幕设置不同的值:

xrandr --output <Display1> --dpi X --output <Display2> --dpi Y

要查看可用的内容xrandr,只需使用重新启动字体即可。我认为您可以关闭显示器,然后使用以下命令再次打开它:

xrandr --output <Display1> --off
xrandr --output <Display1> --auto

但我不太确定

相关内容