我有多个屏幕,每个屏幕的正确 DPI 设置都不同。我可以使用xrandr --dpi X
更改所有屏幕的 DPI,是否可以为每个屏幕设置不同的 DPI?如何让应用程序在移动到其他屏幕时重新计算字体大小? xrandr --dpi X
仅影响新窗口,旧窗口仍使用旧的 DPI 值。
答案1
答案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
外部显示器的高度( ),即。1440
1440*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
但我不太确定