วิธีตั้งค่าความละเอียดที่กำหนดเองโดยใช้ xrandr เมื่อไม่มีความละเอียดใน 'การตั้งค่าการแสดงผล'


37

ฉันเป็นผู้ใช้ 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

คำตอบ:


46

นี่คือขั้นตอนที่คุณต้องเพิ่มความละเอียดที่กำหนดเองใหม่และนำไปใช้ ขั้นตอนต่อไปนี้ใช้สำหรับเพิ่มความละเอียด 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

เมื่อฉันเรียกใช้ไฟล์ของคุณchmod +x Desktop/xrandr.shไม่มีข้อผิดพลาดหรือไม่มีการเปลี่ยนแปลงฉันรู้สึก
Vishal Kumar Sahu

chmod +x Desktop/xrandr.shให้สิทธิ์แก่คุณในการเรียกใช้ไฟล์นั้นเท่านั้น Desktop/xrandr.shคุณจำเป็นต้องใช้มันโดยการเรียกใช้
Chirag Bhatia - chirag64

: o โอเคหมายความว่าฉันพลาดการยิงอาวุธ
Vishal Kumar Sahu

13

ตัวเลือก--size/ -sสามารถใช้:

xrandr -s 1440x900

ควรทำงานกับRandRเวอร์ชัน 1.1 หรือใหม่กว่า


2
เมื่อฉันทำสิ่งนี้การตอบสนองคือ: ขนาด 1440x900 ไม่พบในโหมดที่พร้อมใช้งาน
nick

@nick จากผลลัพธ์ที่คุณรวมไว้ในคำถามที่ฉันอนุมานมันควรจะใช้ได้ ผลลัพธ์ของxrandr --verboseอะไร
jimmij

xrandr: ล้มเหลวในการรับขนาดของแกมม่าสำหรับเอาท์พุทดีฟอลต์หน้าจอ 0: ขั้นต่ำ 1024 x 768, ปัจจุบัน 1024 x 768, สูงสุด 1024 x 768 เริ่มต้นที่เชื่อมต่อ 1024x768 + 0 + 0 (0x138) ปกติ (ปกติ) 0mm13mm ตัวระบุ: 0x137 Timestamp: 5048 พิกเซลย่อย: ไม่ทราบโคลนนิ่ง: CRTC: 0 CRTCs: 0 แปลง: 1.000000 0.000000 0.000000 0.000000 1.000000 0.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 รวม 0 นาฬิกา 768 0.0Hz
นิค

ดังนั้นดูเหมือนว่าจะมีความละเอียดเพียง 1024x768 เท่านั้น ความละเอียดนี้เป็นสิ่งที่คุณต้องการตั้งค่าหรือไม่?
jimmij

5

ฉันมีปัญหาเดียวกัน. ในการตั้งค่าการแสดงผลความละเอียดสูงสุดคือ 1280x720 ดังนั้น:

  1. ใช้คำสั่ง xrandr ฉันได้เห็นชื่อของจอภาพนี้และรายการความละเอียด
  2. ฉันได้ดำเนินการสคริปต์: xrandr - เอาท์พุท {ชื่อของจอภาพ} - โหมด {ความละเอียด}

ตัวอย่างเช่น:

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

3

นี่คือสิ่งที่ฉันต้องทำ#IntelMaker #Jouleเพื่อที่จะทำงานในการแก้ปัญหาแบบดั้งเดิมด้วย SUNFOUNDER 7 นิ้ว TFT COLOR MONITOR ซึ่งแสดงว่ามีความละเอียด 1024 * 600 แต่ถูกเลือกเป็น 1280x720 แทน

อันดับแรก Intel Joule พร้อม Linux 4.4.15-yocto-standard x86_64 ดูเหมือนจะไม่มี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

จากนั้นstartxหรือstartxfce4และเรียกใช้หลังจากที่ต่อไปนี้จะมีการรายงานโดย./1024x600.shxrandr(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)
# 

คำตอบรวมถึงผู้ใช้ส่วนบุคคลและชื่อโฮสต์ที่ไม่เกี่ยวข้องและไม่ได้แยกคำสั่งอย่างชัดเจนจากผลลัพธ์ของพวกเขาซึ่งทั้งหมดนี้อาจสร้างความสับสนให้กับผู้อ่าน วิธีการมาตรฐานของการถ่ายทอดสิ่งที่เป็นคำสั่งจะถูก prefixing $มันก็มี WM ค่าเริ่มต้นของ Kali นั้นก็คือ 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) ในสมุดบันทึกของฉัน

ฉันลองทุกอย่าง

ฉันไม่พบวิธีแก้ปัญหาเนื่องจากสมุดบันทึกของฉันไม่ยอมรับคำสั่ง addmode หรือ newmode จาก xrandr เพื่อเพิ่มความละเอียดเช่นคำขอคำถามแลกเปลี่ยนซ้อนทับ

ดังนั้นฉันจึงทำคณิตศาสตร์!

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

คุณสามารถปรับให้เข้ากับความละเอียดใด ๆ ที่คุณต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.