我有一台使用 Arch Linux 和 Gnome Shell 的笔记本电脑。我的显卡是Intel HD 520。我的笔记本电脑的屏幕分辨率是3200×1800。在工作中,我将笔记本电脑连接到分辨率为 1920×1080 的显示器。使用 HDMI 电缆完成连接。系统可以正确检测两个屏幕及其分辨率。问题如下:
在超高清分辨率下,Gnome(Gnome 是这样做的还是显卡驱动程序?)会缩放窗口以使其更大。这是完全有道理的,否则 Firefox 的栏将是一条细线。但问题是,当我将窗口(例如 Firefox)从一台显示器移动到另一台显示器时,这种缩放比例会被保留。结果事情看起来巨大的在我的 1920×1080 显示器中,即使分辨率被正确检测到。
- 这是一个错误吗?如果是的话,这是谁的错呢? Gnome、Intel HD 显卡还是 Linux 内核?
- 我可以纠正吗?
答案1
- TLDR:这不是一个错误,只是一个不太理想的解决方案,无法舒适地使用 HiDPI 屏幕。
这些解决方案似乎源于这样一个事实:大多数软件不会自动补偿更高 DPI 的显示器。如果我们保持原样(没有缩放或 DPI 设置),许多程序最终在 HiDPI 屏幕上看起来很小。因此,可以在操作系统级别进行补偿(请参阅有关 Arch Linux 的 HiDPI 的信息),但是当您有两个像素密度不同的屏幕时,这会导致问题。
- 给定内部 HiDPI 屏幕 @ 3200x1800 和外部 @ 1920x1080,以下配置应该有效(使用 Dell XPS9350 和 XPS9360 进行测试)。
右侧配置外部:
xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode 3200x1800 --output
DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0
配置左侧外部:
xrandr --dpi 276 --fb 7040x3960 --output DP-1 --scale 2x2 --panning
-3840x2160+3200+0 --pos 0x0 --output eDP-1 --mode 3200x1800 --pos 3840x0
如果人们发现自己经常切换,那么将这些命令作为别名放入 .bashrc 中可能是个好主意。例如:
alias ext-config-right="xrandr --dpi 276 --fb 7040x3960 --output eDP-1 --mode
3200x1800 --output DP-1 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0"
答案2
似乎超高清屏幕有一个单一的设置,适用于所有连接的显示器,尽管这可能不合适,并且可能是 X 的设置。
这Arch Linux 维基有一个关于此的部分,其中有一些使用 xrandr 来缩放显示器的选项,其中 eDP1 是笔记本电脑屏幕:
xrandr --output eDP1 --auto --output HDMI1 --auto --scale 2x2 --right-of eDP1
显然,仍然存在一些问题,要么这两个屏幕重叠,要么光标可能无法覆盖所有两个屏幕。
如果内部显示器的尺寸为 AxB,外部显示器的尺寸为 CxD,缩放比例为 ExF(如 Arch wiki 上的建议),则 shell 脚本会链接到名为文根Github,这需要为显示提供适当的显示。它给:
xrandr --output eDP1 --auto --pos ${(A-C)/2}x${D} --scale 1x1 \
--output HDMI1 --auto --scale 2x2 --pos 0x0
对于第二个问题,arch建议使用平移:
xrandr --output eDP1 --auto \
--output HDMI1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP1
最后,如果有任何帮助的话,ubuntu wiki 建议 xrandr 命令可以保存在 中/etc/gdm/Init/Default
,就在该行之前initctl -q emit login-session-start DISPLAY_MANAGER=gdm
。 (抱歉,第三个链接的代表太低了..)