是否可以为两个不同的屏幕使用不同的DPI配置?


122

我在Quadro K2100M图形卡上使用具有NVidia驱动程序(319)的Ubuntu 12.04.3,当我将3200x1800笔记本电脑主屏幕切换为1920x1080模式(使用nvidia-settings)时,显示变得模糊...

我正在使用两个屏幕:

  • 我的主屏幕是最大分辨率为1920x1200的LCD。
  • 我的笔记本电脑屏幕(原始分辨率3200x1800)位于该屏幕的右侧。

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

阅读Galgalesh的答案,我试图计算我的DPI,这是我应该具有的DPI配置:

  • 我的主LCD屏幕为94x94 1920x1200
  • 3200x1800笔记本电脑屏幕为235x236

有没有办法在扩展的台式机上具有双重DPI分辨率?


3
好吧,以非本机分辨率驱动任何LCD屏幕都会显得模糊。这是因为像素以固定的方式布置,并且信号与此不匹配。您究竟期望发生什么?也许禁用缩放?但是,它仅显示在屏幕中间,而不是全屏显示。为了获得最佳显示效果,请始终以本机屏幕分辨率显示它。我认为这与Ubuntu没有任何关系。
gertvdijk 2013年

2
@gertvdijk:那么,您有没有办法使两个显示器都保持其原始屏幕分辨率?我认为这就是安东尼的要求。
beldaz 2014年

2
@beldaz我的答复是问题的修订版1它当时没有提到与双屏设置有关的任何内容。由于问题已发生重大变化,因此对于该日期之后发生的任何更改,都会引起关注。从根本上讲,它会使所做的任何事情无效,并且确实降低了我寻求帮助的动力。我认为,用户应该改问一个新问题。
gertvdijk 2014年

@gertvdijk对不起,现在说得通。
beldaz 2014年

我想知道是否可以在最新的Ubuntu中使用Wayland来解决这个问题。
mkataja 2015年

Answers:


119

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

  • 华硕ln303ux笔记本电脑:3200x1800,
  • 外接显示器:1920x1200

现在,我使用具有相当有用的HiDPI支持的Ubuntu 14.10和GNOME Shell 3.12.2。因此,我只使用对HiDPI的开箱即用的支持-缩放因子为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-设置虚拟屏幕的大小(帧缓冲区)(没有此功能很重要,您将只能使用屏幕的第四部分)。在我的情况下,一个屏幕在另一个屏幕上,因此我将有效高度加起来为2400 + 1800 = 4200。还要注意,最大帧缓冲区大小可能在xorg.conf中指定-然后您不能超过它(它写在xrandr -q输出的第一行中)。
  5. --pos XxY-在我的情况下,我设置了屏幕的绝对位置,因此笔记本电脑的屏幕直接位于外部屏幕的底部。此处的值Y是外部显示器高度的两倍。

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

仅供参考:要获取屏幕的名称和可用的分辨率,可以运行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

7
得到了一个error of failed request: BadValue (integer parameter out of range for operation):-(
Juh_

4
--fb选项似乎无法启用超过四分之一的2x2屏幕(鼠标光标无法移至左上象限)
EoghanM 2015年

2
缩放有效,但是您不放松HiDPI吗?一切都显得缩放和模糊。
安迪

8
对于在我的3200x1800 hiDPI笔记本电脑左侧安装1920x1080外部显示器的并排设置:xrandr --output eDP1 --scale 1x1 --pos 3840x0 ; xrandr --output HDMI1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 0x0
Daniel Bower

2
--fb参数为2 *外部显示器+笔记本电脑屏幕
Brian

10

为什么会变得模糊?

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

您可以在此处找到有关缩放和本机分辨率的更多信息:https : //en.wikipedia.org/wiki/Native_resolution

如何放大文字?

如果文本太小,则有两个选择:

1.更改Ubuntu的字体大小

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

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

如何查找和更改屏幕DPI?(@whtyger的回答)


1
就像增加字体大小的注释一样。而是增加DPI,以便整个用户界面扩展。应该自动正确识别这点(从您的显示中读取EDID),但是如果失败,该怎么办
gertvdijk

23
实际上,这不是我的问题的答案。我正在使用两个具有不同分辨率的屏幕。我已经进行了计算:我的左主LCD屏幕应该具有94x94 DPI分辨率,而我的右笔记本电脑屏幕应该具有235x235 DPI ...而且我没有找到任何方法来设置两个不同的DPI分辨率,除非将nvidia配置为运行2分隔X,然后我不能从左到右传递一个窗口... Windows更好地解决了这个问题:(
Anthony O.

9
-1完全忽略了问题的要点
Martin Konecny 2014年

8
@AnthonyO。发布您不喜欢的答案后,请不要对您的问题进行太大更改。在发布此答案时,您没有提到与双屏设置有关的任何内容(请参阅修订版1)。更改问题会使所有已发布的内容失效,并且您不应该这样做。相反,请还原问题编辑并发布新问题。
gertvdijk

5
@MartinKonecny原始提问者对他的问题进行了实质性编辑,此答案确实回答了他的原始问题,检查了修订内容。
Jamie Kitson

7

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

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

我通过有一个像DP1-2 +(2x eDP1)的帧缓冲区来实现这一点,然后将要传输到eDP1的所有内容缩放1/2。

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

在这里--scale用于将进入eDP1的所有内容减少1/2。--panning与原始帧缓冲区中的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,然后让客户端使用它而无需重新启动它们。


平移是难题的最后一部分-它解决了卡在屏幕问题四分之一处的光标。谢谢@布莱恩!
rtindru '17

2
“运行两次” ????神圣像素,它可以正常工作(我已经在应用平移,但是只有在我两次运行相同命令时才能正确应用)。
里卡多·加里

是的,我注意到它每隔一遍就运行一次,因此我想我会尝试两次,好了,就在这里。
Brian C.

好的,因此这不适用于内核4.5.2。我只安装了该内核以处理4.5.1中与docker相关的问题,现在上述脚本使我黑屏了。要在4.5.2上解决此问题,我首先执行eDP1命令而不使用--off,然后执行DP1-2命令。
Brian C.

1
终于可以平移了!我仍然有一个小故障的鼠标和屏幕(因为我已经开始使用xrandr)。任何想法?
hsandt

4

我能够使用以下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都解决了这一问题,而不必诉诸于部分起作用的命令行创可贴修复(游戏中不可接受的撕裂问题)


1
这是一个新答案还是您要报告错误?
user68186

它是对现有答案的详细说明,可以利用更多选项。上面@artem提供的答案说明了这些设置的工作方式。我只是尝试提供2个选项,供拥有QHD或FHD外部显示器以及4K主显示器/笔记本电脑显示器的人们使用。该解决方案中的错误在于您所看到的。这是这种方法所固有的。
吉尔斯'17

2
随着4k的发展和多分辨率设置的出现,我同意最后一段需要解决的问题。以前还不错,但是现在有了4k,现在只是在一台显示器上破坏了我的设置。希望Ubuntu 18 LTS可以解决此问题。
Neuronet

3
这是2018年...仍然一样:)
Stefanos

Wayland为此非常出色。除此之外,这仅仅是...与wayland + kde一起获得了很好的体验,比gnome + wayland更好。由于缺乏对仅在X上运行的某些软件的支持以及稳定性问题,我回到了X。2018年……
维克多

4

这些答案都很棒,以前对我有帮助,但是最近

sudo apt-get upgrade 

删除了我的randr-config!在尝试恢复我的设置时,我发现无论--fb输入如何,都无法使鼠标超出第二个屏幕的顶部1/4象限。我从https://wiki.archlinux.org/index.php/HiDPI#Side_display最终发现,添加平移可以解决问题。而且,使用“ --right-of”或“ --left-of”比“ --pos”更简单。

“通常,如果您的HiDPI监视器(笔记本电脑)为AxB像素,常规监视器(外部)为CxD,并且您要按[ExF]进行缩放,则右边的命令行为:”

xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP-1

这很有趣,而且似乎肯定对某人有用,尽管我不确定这是否可以作为对这个问题的答案。也许您应该打开然后回答自己的问题?不太确定。

1
@Emily:我认为这个答案属于这里。我今天使用了artem的答案,并遇到了ONECore所说的确切问题(鼠标只能使用屏幕的左上象限)。幸运的是,我看到了这个答案,平移立即起作用了。
BrainCore

是的,很抱歉,我希望它是对@artem答案的答复,但是Stackexchange非常棒,直到我得到50个布朗尼点之前,我都不会让我在那里答复。
ONECore

还要注意,这似乎不是持久的,因此,除非将其添加到xorg.conf中,否则每次重新启动时都会消失。但是,如果您在此处添加它,则无论如何都将强制进行设置(有时我不会插入显示器)。因此,我发现仅创建一个shell并在需要时执行它就超级容易。只需将上面的代码添加到以.sh结尾的文本文件中(例如resolution.sh),然后在终端中使用“ chmod 0700 resolution.sh”使其可执行即可。
ONECore

非常感谢您分享@BrainCore的经验!

1

我有一台过时的1024x768显示器,已连接到(过时的)笔记本。
窗口呈现的尺寸完全不同,在外部监视器中更大(其点距更大,点距更大)。
我找到了扩展显示器的命令:

xrandr --output VGA-1 --scale 1.5x1.5

VGA-1是监视器的内部名称,可通过运行以下命令找到:

xrandr --current | grep connected

结果是现在旧的显示器以几乎与笔记本电脑相同的大小显示其内容。

奇怪的是,它可以按比例缩放x1.5而不是1.45,显示器(在我的情况下)变黑。

第一次运行比例注释时,结果令人恐惧,因为两个屏幕的内容都重叠。例如,光标指针出现了两次。

我运行了一个程序:

arandr &

设置相对屏幕位置以对其进行修复。
它的工作方式类似于“ 设置”>“设备”>“显示”设置。

我安装了:

sudo apt-get install arandr

感谢@LuisAlvarado和其他人分享您的知识!


这暂时对我有用,但是如果我重新启动,它不会停留。我想我需要找到一个脚本来arandr执行此处的操作,然后将整个内容放入我的bashrc或其他内容中。谢谢!
Max von Hippel

arandr可以导出配置文件。我将文件设置在桌面中,并在每次重新启动时将其输入arandr。没有开发脚本,现在我有了监视器,不再使用arandr。
Juan Lanus

0

拳头$xrandr显示所有输出

Screen 0: minimum 320 x 200, current 7680 x 2160, maximum 8192 x 8192
eDP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   3840x2160     60.00*+  59.98    59.97  
   3200x1800     59.96    59.94  
   2880x1620     59.96    59.97   
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 521mm x 294mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02

如您所见,在这种情况下,第二台监视器已连接到。DP-3 然后您可以转售显示器: $xrandr --output DP-3 --auto --scale 2x2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.