Cách đặt độ phân giải tùy chỉnh bằng xrandr khi độ phân giải không khả dụng trong 'Cài đặt hiển thị'


39

Tôi là người dùng Linux mới đang cố gắng thay đổi độ phân giải màn hình vì không có tùy chọn nào được hiển thị. Tôi đã quản lý thành công để thêm độ phân giải mới bằng sán bằng cách làm theo hướng dẫn trực tuyến. Tôi không có GPU, tôi không biết đây có phải là vấn đề không? Dưới đây là xrandr -qđầu ra của tôi .

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 không được liệt kê trong hướng dẫn của họ.
neverMind9

Câu trả lời:


48

Dưới đây là các bước bạn cần để thêm một độ phân giải tùy chỉnh mới và áp dụng nó. Các bước sau là để thêm độ phân giải 1920x1080, nhưng bạn có thể sử dụng nó cho bất kỳ độ phân giải nào bạn muốn. Nhưng hãy chắc chắn rằng màn hình và đồ họa trên tàu của bạn hỗ trợ độ phân giải đó.

# 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"

Nguồn gốc: https://gist.github.com/debloper/2793261

Tôi cũng đã viết một kịch bản tự động thực hiện tất cả các bước này. Bạn có thể dùng thử nếu các bước trên có vẻ quá phức tạp đối với bạn: https://gist.github.com/chirag64/7853413


2
Thất bại ở bước cuối cùng ...
Vishal Kumar Sahu

Bạn đã gặp lỗi gì? Hãy thử tập lệnh tự động mà tôi đã liên kết ở cuối câu trả lời.
Chirag Bhatia - chirag64

Khi tôi chạy tập tin của bạn chmod +x Desktop/xrandr.shKhông có lỗi hoặc không có thay đổi, tôi cảm thấy.
Vishal Kumar Sahu

chmod +x Desktop/xrandr.shchỉ cung cấp cho bạn quyền để chạy tập tin đó. Bạn cần chạy nó bằng cách chạy Desktop/xrandr.sh.
Chirag Bhatia - chirag64

: o Được rồi Có nghĩa là tôi đã bỏ lỡ để bắn vũ khí.
Vishal Kumar Sahu

13

Tùy chọn --size/ -scó thể được sử dụng:

xrandr -s 1440x900

Nên hoạt động với RandRphiên bản 1.1 trở lên.


2
Khi tôi làm điều này phản ứng là: kích thước 1440x900 không tìm thấy trong các chế độ có sẵn
nick

@nick Từ đầu ra mà bạn đưa vào câu hỏi tôi đã suy luận nên có sẵn. Đầu ra của xrandr --verbosecái gì?
jimmij

xrandr: Không thể lấy kích thước gamma cho mặc định đầu ra Màn hình 0: tối thiểu 1024 x 768, hiện tại 1024 x 768, tối đa 1024 x 768 được kết nối mặc định 1024x768 + 0 + 0 (0x138) bình thường (bình thường) 0mm x 0mm Định danh: 0x137 Dấu thời gian: 0x137 5048 Subpixel: không xác định Bản sao: CRTC: 0 CRTC: 0 Biến đổi: 1.000000 0,000000 0,000000 0,000000 1,000000 0,000000 0,000000 0,000000 bộ lọc:
nick

1024x768 (0x138) 0,0 MHz * hiện tại h: chiều rộng 1024 bắt đầu 0 kết thúc 0 tổng 1024 xiên 0 đồng hồ 0,0KHz v: chiều cao 768 bắt đầu 0 kết thúc 0 tổng 768 đồng hồ 0,0Hz
nick

Vì vậy, có vẻ như độ phân giải duy nhất có sẵn là 1024x768. Là độ phân giải này những gì bạn muốn đặt?
jimmij

5

Tôi đã từng gặp vấn đề tương tự. Trong cài đặt Hiển thị độ phân giải tối đa là 1280x720. Vì thế:

  1. sử dụng lệnh xrandr Tôi đã thấy tên của màn hình và danh sách độ phân giải này.
  2. Tôi đã thực thi tập lệnh: xrandr --output {tên của màn hình} --mode {độ phân giải}

Ví dụ:

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

3

Đây là những gì tôi đã phải làm #IntelMaker #Jouleđể làm cho nó hoạt động ở độ phân giải gốc với MONITOR MÀU SẮC MÀU SẮC MÀU 7 INCH, được liệt kê là có độ phân giải 1024 * 600, nhưng được chọn là 1280x720.

Đầu tiên, Intel Joule với Linux 4.4.15-yocto-standard x86_64 dường như không có gtf(1), vì vậy, tôi đã phải sử dụng một máy khác để tính các số thích hợp:

$ 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

$ 

Sau đó, tạo một tệp với các lệnh thích hợp:

# 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

Sau đó, startxhoặc startxfce4, và chạy ./1024x600.sh, sau đó, những điều sau đây sẽ được báo cáo bởi 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)
# 

Câu trả lời bao gồm tên người dùng và tên máy chủ cá nhân không liên quan và không tách biệt rõ ràng các lệnh với đầu ra của chúng - tất cả đều có thể gây nhầm lẫn cho người đọc. Một phương pháp tiêu chuẩn để truyền đạt rằng một cái gì đó là một lệnh sẽ là tiền tố đơn giản với nó $. WM mặc định của Kali cũng là Gnome, không phải XFCE, có lẽ cần phải làm rõ rằng lệnh startxfce4 chỉ dành cho người dùng chạy XFCE phiên bản 4. Khả năng nhiều người dùng khác sẽ chạy chính xác Linux 4.4.15-yocto-standard x86_64có vẻ không cao đối với tôi, vì vậy tôi thay vào đó hãy viết rằng gtf(hoặc cvt) có thể phải được cài đặt trước.
miyalys

1

Tôi đã chạy

xrandr --verbose

đã cho tôi một danh sách các thẻ kích thước và giá trị pixel tương ứng

sau đó tôi đã sử dụng

xrandr -s 6

để chọn độ phân giải 1920x1080


1

Lưu tập lệnh và khởi chạy tập lệnh (bash script.sh 1024 720 60) bạn có thể đặt độ phân giải tùy chỉnh với tập lệnh đó nhưng đó là giải pháp tạm thời mỗi khi bạn đăng xuất và đăng nhập lại, bạn phải chạy lại tập lệnh. Bạn có thể thêm 2 dòng mã trong hồ sơ bash.bashrc của bạn. Để chạy tập lệnh trực tiếp từ thiết bị đầu cuối.

#!/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

Vấn đề của tôi là độ phân giải máy tính xách tay có điều này:

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 ...

Màn hình chính / mặc định của tôi là 1366x768.

Nhưng tôi muốn kiểm tra độ phân giải 1920x1080 (DesireResolution) trong sổ ghi chép của mình.

Tôi đã thử mọi cách.

Tôi không thể tìm thấy giải pháp vì máy tính xách tay của tôi không chấp nhận các lệnh addmode hoặc newmode từ xrandr để tăng độ phân giải, như yêu cầu câu hỏi stackexchange này.

Vì vậy, tôi đã làm một số toán học!

1920/1366 = 1.4055636896
1080/768 = 1.40625

về cơ bản là DesireResolution / MaxResolution

và chạy lệnh này

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

Nếu bạn cần khôi phục độ phân giải gốc

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

Bạn có thể thích ứng với bất kỳ độ phân giải nào bạn muốn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.