当“显示设置”中的分辨率不可用时,如何使用xrandr设置自定义分辨率


38

我是一个新的Linux用户,正在尝试更改屏幕分辨率,因为显示下没有选项。通过遵循在线指南,我已经成功地通过fluke添加了新的分辨率。我没有GPU,不知道这是问题吗?以下是我的xrandr -q输出。

root@kali:~# xrandr -q
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 1280 x 1024, current 1280 x 1024, maximum 1280 x 1024
default connected 1280x1024+0+0 0mm x 0mm
   1280x1024       0.0* 
  1920x1200_60.00 (0x145)  193.2MHz
        h: width  1920 start 2056 end 2256 total 2592 skew    0 clock   74.6KHz
        v: height 1200 start 1203 end 1209 total 1245           clock   59.9Hz
  1440x900_59.90 (0x156)  106.3MHz
        h: width  1440 start 1520 end 1672 total 1904 skew    0 clock   55.8KHz
        v: height  900 start  901 end  904 total  932           clock   59.9Hz

xrandr -q未在其手册中列出。
neverMind9

Answers:


47

您需要执行以下步骤来添加新的自定义分辨率并应用它。以下步骤用于添加1920x1080分辨率,但是您可以将其用于任何其他所需的分辨率。但是请确保您的显示器和板载图形支持该分辨率。

# First we need to get the modeline string for xrandr
# Luckily, the tool "gtf" will help you calculate it.
# All you have to do is to pass the resolution & the-
# refresh-rate as the command parameters:
gtf 1920 1080 60

# In this case, the horizontal resolution is 1920px the
# vertical resolution is 1080px & refresh-rate is 60Hz.
# IMPORTANT: BE SURE THE MONITOR SUPPORTS THE RESOLUTION

# Typically, it outputs a line starting with "Modeline"
# e.g. "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
# Copy this entire string (except for the starting "Modeline")

# Now, use "xrandr" to make the system recognize a new
# display mode. Pass the copied string as the parameter
# to the --newmode option:
xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync

# Well, the string within the quotes is the nick/alias
# of the display mode - you can as well pass something
# as "MyAwesomeHDResolution". But, careful! :-|

# Then all you have to do is to add the new mode to the
# display you want to apply, like this:
xrandr --addmode VGA1 "1920x1080_60.00"

# VGA1 is the display name, it might differ for you.
# Run "xrandr" without any parameters to be sure.
# The last parameter is the mode-alias/name which
# you've set in the previous command (--newmode)

# It should add the new mode to the display & apply it.
# Usually unlikely, but if it doesn't apply automatically
# then force it with this command:
xrandr --output VGA1 --mode "1920x1080_60.00"

原始来源:https : //gist.github.com/debloper/2793261

我还编写了一个脚本,可以自动执行所有这些步骤。如果上述步骤对您来说太复杂了,您可以尝试一下:https : //gist.github.com/chirag64/7853413


2
最后一步失败了……
Vishal Kumar Sahu

您遇到什么错误?尝试在答案末尾链接的自动脚本。
Chirag Bhatia-chirag64'3

当我运行您的文件时,chmod +x Desktop/xrandr.sh我感觉没有错误或没有变化。
维沙尔·库马尔·萨胡

chmod +x Desktop/xrandr.sh仅授予您运行该文件的权限。您需要通过运行来运行它Desktop/xrandr.sh
Chirag Bhatia-chirag64 '17

:o好吧,我错过了开火的武器。
Vishal Kumar Sahu'3

13

选项--size/ -s可以使用:

xrandr -s 1440x900

应该与RandR1.1版或更高版本一起使用。


2
当我这样做时,响应是:在可用模式下找不到1440x900大小
尼克

@nick从您推断出的问题中得到的输出中应该可以使用。输出是xrandr --verbose什么?
jimmij 2015年

xrandr:无法获得默认输出的伽玛大小屏幕0:最小1024 x 768,当前1024 x 768,最大1024 x 768默认连接1024x768 + 0 + 0(0x138)正常(normal)0mm x 0mm标识符:0x137时间戳: 5048子像素:未知克隆:CRTC:0 CRTC:0变换:1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000过滤器:
尼克

1024x768(0x138)0.0MHz *当前h:宽度1024开始0结束0总计1024偏斜0时钟0.0KHz v:高度768开始0结束0总768时钟0.0Hz
尼克

因此,似乎唯一可用的分辨率是1024x768。您要设置此分辨率吗?
jimmij 2015年

5

我有同样的问题。在显示设置中,最大分辨率为1280x720。所以:

  1. 使用xrandr命令,我已经看到了该监视器的名称和分辨率列表。
  2. 我已经执行了脚本:xrandr --output {监视器名称} --mode {解析度}

例如:

xrandr --output DP-2-1 --mode 2560x1440

3

这是我必须执行的操作#IntelMaker #Joule,以使其能够使用SUNFOUNDER 7 INCH TFT COLOR MONITOR以原始分辨率工作,该显示器被列出为具有1024 * 600分辨率,但被选择为1280x720。

首先,具有Linux 4.4.15-yocto标准x86_64的Intel Joule似乎没有gtf(1),因此,我不得不使用另一台计算机来计算适当的数字:

$ gtf 1024 600 60

  # 1024x600 @ 60.00 Hz (GTF) hsync: 37.32 kHz; pclk: 48.96 MHz
  Modeline "1024x600_60.00"  48.96  1024 1064 1168 1312  600 601 604 622  -HSync +Vsync

$ 

然后,使用适当的命令创建文件:

# cat > 1024x600.sh
xrandr --newmode "1024x600_60.00"  48.96  1024 1064 1168 1312  600 601 604 622  -HSync +Vsync
xrandr --addmode HDMI1 "1024x600_60.00"
xrandr --output HDMI1 --mode "1024x600_60.00"
^D
# chmod +x 1024x600.sh

然后,startxstartxfce4,然后运行./1024x600.sh,之后,将报告xrandr(1)

# xrandr
Screen 0: minimum 8 x 8, current 1024 x 600, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1024x600+0+0 (normal left inverted right x axis y axis) 697mm x 392mm
   1280x720      60.00 +  50.00    59.94  
   1920x1080     60.00    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1280x1024     75.02  
   1440x900      74.98    59.90  
   1024x768      75.08    70.07    60.00  
   1024x600      60.00  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  
   1024x600_60.00  60.00* 
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
# 

答案包括无关的个人用户名和主机名,并且没有将命令与其输出明确分开-所有这些都可能使读者感到困惑。传达某物是命令的标准方法是在它前面加上$。Kali的默认WM也是GNOME,而不是XFCE,也许应该明确一点,startxfce4命令仅适用于运行XFCE版本4的用户。Linux 4.4.15-yocto-standard x86_64在我看来,许多其他用户完全运行的可能性似乎并不高,所以我想而是写出gtf(或cvt)可能必须先安装。
miyalys

1

我跑了:

xrandr --verbose

这给了我一个尺寸标签和相应像素值的列表

然后我用

xrandr -s 6

选择1920x1080分辨率


1

保存并启动脚本(bash script.sh 1024 720 60),您可以使用该脚本设置自定义分辨率,但是这是一个临时解决方案,只要您注销并再次登录就必须再次运行该脚本。您可以添加两行bash.bashrc配置文件中的代码以直接从终端运行脚本。

#!/bin/bash
# xrandr.sh
#If no argument is specified, ask for it and exit
if [[ -z "$@" ]];
then
echo "An argument is needed to run this script";
exit
else
arg="$@"
#Basic check to make sure argument number is valid. If not, display error and exit
if [[ $(($(echo $arg | grep -o "\s" | wc --chars) / 2 )) -ne 2 ]];
then
echo "Invalid Parameters. You need to specify parameters in the format "width height refreshRate""
echo "For example setResolution "2560 1440 60""
exit
fi

#Save stuff in variables and then use xrandr with those variables
modename=$(echo $arg | sed 's/\s/_/g')
display=$(xrandr | grep -Po '.+(?=\sconnected)')
if [[ "$(xrandr|grep $modename)" = "" ]];
then
xrandr --newmode $modename $(gtf $(echo $arg) | grep -oP '(?<="\s\s).+') &&
xrandr --addmode $display $modename
fi
xrandr --output $display --mode $modename

#If no error occurred, display success message
if [[ $? -eq 0 ]];
then
echo "Display changed successfully to $arg"
fi
fi

0

我的问题是笔记本分辨率有这个:

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected 1920x1080+0+0 ...
   1366x768      60.00*+  47.98  <=== MaxResolution (Default/Primary)
   1360x768      59.80    59.96  
   1280x720      60.00 ...

我的主/默认屏幕是1366x768。

但是我想在笔记本上测试1920x1080分辨率(DesireResolution)。

我尝试了一切。

我找不到解决方案,因为我的笔记本电脑不接受来自xrandr的addmode或newmode命令来提高分辨率,例如stackexchange问​​题请求。

所以我做了一些数学!

1920/1366 = 1.4055636896
1080/768 = 1.40625

基本上是DesireResolution / MaxResolution

并运行此命令

xrandr --output eDP1 --mode 1366x768 --panning 1920x1080 --scale 1.40556369x1.40625

如果需要还原原始分辨率

xrandr --output eDP1 --mode 1366x768 --panning 1366x768 --scale 1x1

您可以适应所需的任何分辨率。

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.