Bor*_*rgo 17 arch-linux xorg xrandr nvidia awesome
今天我试图将我的第二台显示器连接到我的笔记本电脑。我有:
我的问题是我的外接显示器 (VGA) 的分辨率大于 640x480。xrandr -q:
Screen 0: minimum 8 x 8, current 1920 x 800, maximum 8192 x 8192
VGA-0 connected 640x480+1280+0 (normal left inverted right x axis y axis) 0mm
640x480 59.9*+
320x240 120.1
LVDS-0 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331m
1280x800 59.9*+
HDMI-0 disconnected (normal left inverted right x axis y axis)
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,VGA 的分辨率没有更高,所以我添加了新模式:
xrandr --newmode $(gtf 1280 1024 70.4 | grep Modeline | sed s/Modeline\ // | tr -d '"')
Run Code Online (Sandbox Code Playgroud)
我检查了 windows 下的可用分辨率和刷新率:其中之一是 1024x768x70(我的显示器的 OSD 说它是 70.4HZ)。创建新模式后,我想添加它:
xrandr --addmode VGA-0 1280x1024_70.40
Run Code Online (Sandbox Code Playgroud)
而且……失败了:
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 153 (RANDR)
Minor opcode of failed request: 18 (RRAddOutputMode)
Serial number of failed request: 29
Current serial number in output stream: 30
Run Code Online (Sandbox Code Playgroud)
从谷歌我了解到,在较旧的 xrandr / nvidia 驱动程序中,可用模式列表存在问题,但现在 nvidia 驱动程序支持 xrandr 1.2 应该会更好。我也尝试使用较低的分辨率和刷新率(例如 1024x768x50),但我遇到了同样的错误。我不知道如何处理这个问题......
Paw*_*ian 12
我不确定您xrandr --newmode
是自己创建了后面的字符串还是从其他地方复制了它,但它在当前形式下不起作用。
我建议一步一步来。
首先,您需要生成新模式。我建议使用 60Hz 的 LCD 或 85Hz 的 CRT 显示器
gtf 1280 1024 60
Run Code Online (Sandbox Code Playgroud)
你会得到类似的东西:
# 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync Vsync
Run Code Online (Sandbox Code Playgroud)
然后将此模式呈现给xrandr
使用--newmode
(复制粘贴以“Modeline”开头的行。
xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync Vsync
Run Code Online (Sandbox Code Playgroud)
然后将此模式添加到VGA-0:
xrandr --addmode VGA-0 "1280x1024_60.00"
Run Code Online (Sandbox Code Playgroud)
最后你可以使用这个新模式:
xrandr --output VGA-0 --mode 1280x1024_60.00
Run Code Online (Sandbox Code Playgroud)
我遇到了 BadMatch 错误问题,直到我删除了之前添加的“1280x1024_60.00”,因为它永远无法成功使用双引号模式。最终,意识到该模式的更好名称有所帮助。
所以我通过以普通用户身份运行以下命令删除了“1280x1024_60.00”:
$ xrandr --version
reports 1.4.0 and 1.4
$ xrandr | grep 1280 #Do you see any 1280x1024 anywhere? Does it have double quotes?
$ xrandr --verbose --delmode VGA1 '"1280x1024_60.00"'
$ xrandr --verbose --rmmode '"1280x1024_60.00"'
Run Code Online (Sandbox Code Playgroud)
删除和删除系统中的垃圾通常不起作用或会回来,即使我会从我的帐户和根目录中删除它。它通常会返回名为 VIRTUAL1 而不是 VGA1 的输出。
发现留下垃圾并在新创建的模式末尾附加一个字母要容易得多,甚至删除了 .00,因此1280x1024_60B。请仔细注意下面的 --newmode 参数周围有双引号,但不是 --addmode 也不是 --mode
$ xrandr --verbose --newmode "1280x1024_60B" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
$ xrandr --verbose --addmode VGA1 1280x1024_60B
$ xrandr --verbose --output VGA1 --mode 1280x1024_60B
Run Code Online (Sandbox Code Playgroud)
屏幕有点闪烁,我的外部 19 英寸方形显示器以 1280x1024 的分辨率运行。