如何设置自定义分辨率?

use*_*356 114 xrandr display-resolution

我尝试xrandr将 1680x1050 设置为 VGA 输出的新模式,但它说:

sudo xrandr --addmode VGA-0 1680
X Error of failed request:  BadMatch (invalid parameter attributes)
Major opcode of failed request:  140 (RANDR)
Minor opcode of failed request:  18 (RRAddOutputMode)
Serial number of failed request:  35
Current serial number in output stream:  36
Run Code Online (Sandbox Code Playgroud)

tho*_*hom 191

首先使用cvt生成一个“modeline”
语法是:cvt width height refreshrate

cvt 1680 1050 60
Run Code Online (Sandbox Code Playgroud)

这给你:

# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
Run Code Online (Sandbox Code Playgroud)

现在告诉xrandr

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
Run Code Online (Sandbox Code Playgroud)

然后,您现在可以将其添加到您选择的输出的可能分辨率表中:

xrandr --addmode VGA-0 1680x1050_60.00
Run Code Online (Sandbox Code Playgroud)

重新启动后更改将丢失,要持久设置分辨率,请创建~/.xprofile包含以下内容的文件:

#!/bin/sh
xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA-0 1680x1050_60.00
Run Code Online (Sandbox Code Playgroud)

  • 连接的设备可能不是“VGA-0”。如果您收到消息`xrandr:找不到输出“VGA-0”`,请尝试运行以下命令:`xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"`(来源:[ArchWiki 上的 xrandr](https: //wiki.archlinux.org/index.php/xrandr)). 该命令的输出应该是正确的设备标识符。 (28认同)
  • xrandr 不需要 sudo (13认同)
  • 您需要用显示器连接替换 VGA-0。使用`xrandr --listmonitors`。请参阅[如何修复错误'xrandr:找不到输出“VGA1”'?](https://unix.stackexchange.com/a/413304) (8认同)
  • 如果您使用的是 VM,则显示通常是“Virtual1”而不是 VGA-0。 (5认同)
  • 我想补充一点,我有同样的错误 - 以上根本没有解决问题 (3认同)
  • @AquariusPower,尝试将 `--verbose` 添加到您的命令中,看看是否有任何有用的输出。另请参阅 [为什么会发生 xrandr 错误“BadMatch”、“BadName”、“Gamma Failed”?](http://askubuntu.com/a/727897/181902) (2认同)
  • 我收到此错误:失败请求的 X 错误:BadMatch(无效的参数属性)失败请求的主要操作码:140(RANDR)失败请求的次要操作码:18(RRAddOutputMode)失败请求的序列号:37 输出流中的当前序列号: 38 (2认同)

小智 22

如何设置先前指定的自定义分辨率。执行为创建分辨率定义的其他步骤后,运行:

xrandr -s 1680x1050
Run Code Online (Sandbox Code Playgroud)


小智 11

运行多台显示器时如何设置先前指定的自定义分辨率。执行为创建分辨率定义的其他步骤后,运行:

xrandr --output DVI-0 --mode 1680x1050

替换DVI-0为您的设备 ID,例如VGA-0


Tan*_*sis 11

感谢汤姆thirdender这基本上是基于对单个命令配置最投票的答案

RES="1920 1200 60" && \
DISP=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") && \
MODELINE=$(cvt $(echo $RES) | grep -e "Modeline [^(]" | sed -r 's/.*Modeline (.*)/\1/') && \
MODERES=$(echo $MODELINE | grep -o -P '(?<=").*(?=")') && \
cat > ~/.xprofile << _EOF
#!/bin/sh
xrandr --newmode $MODELINE
xrandr --addmode $DISP $MODERES
_EOF
Run Code Online (Sandbox Code Playgroud)

上面的命令将生成所需的~/.xprofile文件。只要确保您使用RES您喜欢的分辨率(即变量)。更多信息在这里

你可以更换

xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"
Run Code Online (Sandbox Code Playgroud)

xrandr | grep -e " connected [^(]" | cut -d\  -f1
Run Code Online (Sandbox Code Playgroud)

$DISP如果这对您不起作用,则在变量中。