当前位置: 首页>>技术问答>>正文


两个不同的屏幕可以有两种不同的DPI配置吗?

, , , , ,

问题描述

我为我的Quadro K2100M显卡使用了Ubuntu 12.04.3和NVidia驱动程序(319),当我将主3200×1800笔记本电脑屏幕切换到1920×1080模式(使用nvidia-settings)时,显示屏变得模糊不清…

我使用两个屏幕:

  • 我的主屏幕是最高分辨率为1920×1200的LCD。

  • 我的笔记本电脑屏幕(原始分辨率3200×1800)坐在右侧。

主要的问题是,在Ubuntu上,我的笔记本电脑屏幕上的字体太小了。因此,我想将我的笔记本电脑的分辨率更改为1920×1080。

Galgalesh answer我尝试了compute my DPI,这里是我应该有的DPI配置:

  • 94×94为我的主要LCD屏幕1920×1200

  • 我的3200×1800笔记本电脑屏幕为235×236

有扩展桌面的双DPI分辨率的方法吗?

最佳解决思路

看起来人们仍在努力尝试使用多台显示器和HiDPI显示器。在wiki wiki https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays中描述了一个很好的解决方法。所以我有:

  • 笔记本电脑华硕ln303ux:3200×1800,

  • 外部显示器:1920×1200

现在我使用Ubuntu 14.10& GNOME Shell 3.12.2具有非常实用的HiDPI支持。所以我只是使用HippI的out-of-the-box支持 – 缩放因子是2(可以通过GUI设置)。这意味着在外部显示器上,我可以获得比可接受的更大的一切。因此,我使用xrandr;但不是缩小笔记本电脑屏幕,我高档的外部显示器屏幕:

xrandr --output HDMI1 --scale 2x2 --mode 1920x1200 --fb 3840x4200 --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 320x2400

所以,一个接一个:

  1. 在我的情况下,--output HDMI1是外部屏幕,eDP1是笔记本电脑的屏幕。

  2. --scale 2x2 – 使外部屏幕上的所有内容缩小一倍

  3. --mode XxY – 明确设置屏幕分辨率(如果已设置则不需要)

  4. --fb XxY – 设置虚拟屏幕的大小(framebuffer)(没有这个很重要,你将只能使用屏幕的第四部分)。在我的情况下,一个屏幕在另一个屏幕上,所以我加起来有效高度2400 + 1800 = 4200。还要注意,最大帧缓冲区大小可以在xorg.conf中指定 – 然后您不能超过它(它写在xrandr -q输出的第一行)。

  5. --pos XxY – 在我的情况下,我设置了屏幕的绝对位置,所以我的笔记本电脑屏幕直接位于外部屏幕的底部。

这就是它!一切都尽可能清晰。

仅供参考:要获取屏幕名称和可用分辨率,可以运行xrandr --current。有关设置分辨率的更多信息,请参阅此处:https://wiki.ubuntu.com/X/Config/Resolution

更新 – 选项2:支持GTK3的应用程序更有趣的解决方法。如果我通常只在大屏幕上使用一个应用程序(例如某些IDE,如leksah),我不会调整屏幕大小,但可以将应用程序缩放到其原始大小

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname

次佳解决思路

为什么模糊?

您的屏幕始终显示3200×1800像素。如果降低计算机上的屏幕分辨率,这意味着屏幕必须缩放图像以适应屏幕。根据您的原始分辨率与当前分辨率之间的比率,该缩放会产生模糊的图像。

您可以在这里找到更多关于缩放和原始分辨率的信息:https://en.wikipedia.org/wiki/Native_resolution

我怎样才能让文字更大?

如果文字很小,你有两个选择:

1.更改Ubuntu的字体大小

如何更改字体并调整其大小?

2.更改DPI(将使整个界面更大,而不仅仅是文本)

How to find and change the screen DPI?(由@whtyger回答)

第三种解决思路

我用artmem的解决方案,但遇到了EoghanM提到的鼠标问题。我在他链接到的旧bug报告中找到的解决方法与panning有关。

我正在拍摄: – 原生DIP中的DP1-2 3840×2160。 – eDP1 1366×768,缩放到DP1-2右侧看起来合理。

我得到这个是通过一个像DP1-2 +(2x eDP1)的帧缓冲区来实现的,然后我将所有进入eDP1的所有东西都缩放1/2。

这应该很简单,但xrandr有点棘手。

这里–scale用于减少1/2的eDP1。 – 与原始帧缓冲区中的eDP1相同,位置(+ 3840 + 0)刚好在DP1-2的右侧。 + 0 + 2160会低于它。

xrandr -d :0 --fb 6572x3696 --output DP1-2 --mode 3840x2160 --scale 1x1 --rate 60 --pos 0x0 --primary

# sometimes panning get applied incorrectly when switching from some other mode, running it twice is a work around
xrandr -d :0 --output eDP1 --off
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0

我也将Xft.dpi设置为185

$ cat ~/.Xresources
Xft.dpi: 185

当我从外部显示器拔下时,我运行:

xrandr -d :0 --output DP1-2 --off
xrandr -d :0 --fb 2732x1536 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+0+0 --pos 0x0 --primary

这看起来不太好,但我并没有离开我的办公桌。您可以通过更改Xft.dpi并重新启动所有桌面程序来解决此问题。我不知道如何更改Xft.dpi,然后让客户端在不重新启动的情况下使用它。

第四种思路

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

外部显示器QHD(2560X1440),内部/笔记本电脑显示器3200×1800

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

要么

外部监视器FHD(1920×1080),内部/笔记本电脑监视器3200×1800

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

这些工作,但是当我移动窗口,调整屏幕大小或在浏览器上滚动时,高分辨率显示器(笔记本电脑)有很大的破坏。这感觉就像一个软件解决方案(它具有撕裂和缓慢刷新的所有这些问题)。

其2017年Linux /Gnome需要解决multi-monitor混合扩展解决方案。 Windows 10和OS X都可以解决这个问题,而不必求助于部分工作的命令行band-aid修复(撕裂问题不适用于游戏)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/832.html,未经允许,请勿转载。