Cara mengatur resolusi khusus menggunakan xrandr ketika resolusi tidak tersedia di 'Pengaturan Tampilan'

39

Saya pengguna Linux baru yang mencoba mengubah resolusi layar karena tidak ada opsi di bawah layar. Saya telah berhasil menambahkan resolusi baru secara kebetulan dengan mengikuti panduan online. Saya tidak punya GPU, saya tidak tahu apakah ini masalahnya? Di bawah ini adalah xrandr -qoutput saya .

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
nick
sumber
xrandr -q tidak terdaftar dalam manualnya.
neverMind9

Jawaban:

48

Berikut adalah langkah-langkah yang Anda butuhkan untuk menambahkan resolusi khusus dan menerapkannya. Langkah-langkah berikut adalah untuk menambahkan resolusi 1920x1080, tetapi Anda dapat menggunakannya untuk resolusi lain yang Anda inginkan. Tetapi pastikan monitor dan grafis onboard Anda mendukung resolusi itu.

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

Sumber asli: https://gist.github.com/debloper/2793261

Saya juga menulis skrip yang melakukan semua langkah ini secara otomatis. Anda dapat mencobanya jika langkah-langkah di atas terlihat terlalu rumit untuk Anda: https://gist.github.com/chirag64/7853413

Chirag Bhatia - chirag64
sumber
2
Gagal langkah terakhir ...
Vishal Kumar Sahu
Kesalahan apa yang Anda dapatkan? Coba skrip otomatis yang saya tautkan di akhir jawaban.
Chirag Bhatia - chirag64
Ketika saya menjalankan file Anda chmod +x Desktop/xrandr.shTidak ada kesalahan atau tidak ada perubahan yang saya rasakan.
Vishal Kumar Sahu
chmod +x Desktop/xrandr.shhanya memberi Anda izin untuk menjalankan file itu. Anda harus menjalankannya dengan menjalankan Desktop/xrandr.sh.
Chirag Bhatia - chirag64
: o Oke Berarti aku rindu menembakkan senjatanya.
Vishal Kumar Sahu
13

Opsi --size/ -sdapat digunakan:

xrandr -s 1440x900

Harus bekerja dengan RandRversi 1.1 atau lebih baru.

jimmij
sumber
2
Ketika saya melakukan ini, jawabannya adalah: ukuran 1440x900 tidak ditemukan dalam mode yang tersedia
nick
@nick Dari output yang Anda masukkan dalam pertanyaan saya menyimpulkan itu harus tersedia. Apa output dari xrandr --verbose?
jimmij
xrandr: Gagal mendapatkan ukuran gamma untuk keluaran default Layar 0: minimum 1024 x 768, saat ini 1024 x 768, maksimum 1024 x 768 terhubung standar 1024x768 + 0 + 0 (0x138) normal (normal) 0mm x 0mm Identifier: 0x137 Timestamp: 5048 Subpiksel: tidak diketahui Klon: CRTC: 0 CRTCs: 0 Transform: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filter:
nick
1024x768 (0x138) 0,0MHz * h saat ini: lebar 1024 mulai 0 akhir 0 total 1024 condong 0 jam 0,0KHz v: tinggi 768 mulai 0 akhir 0 total 768 jam 0,0Hz
nick
Jadi sepertinya satu-satunya resolusi yang tersedia adalah 1024x768. Apakah resolusi ini yang ingin Anda atur?
jimmij
6

Saya memiliki masalah yang sama. Dalam pengaturan Tampilan, resolusi maksimum adalah 1280x720. Begitu:

  1. menggunakan perintah xrandr Saya telah melihat nama monitor dan daftar resolusi ini.
  2. Saya telah menjalankan skrip: xrandr --output {nama monitor} --mode {resolution}

Sebagai contoh:

xrandr --output DP-2-1 --mode 2560x1440
grep
sumber
3

Ini adalah apa yang harus saya lakukan pada #IntelMaker #Jouleuntuk membuatnya bekerja dalam resolusi asli dengan SUNFOUNDER 7 INCH TFT COLOR MONITOR, yang terdaftar memiliki resolusi 1024 * 600, tetapi malah diambil sebagai 1280x720.

Pertama, Intel Joule dengan Linux 4.4.15-yocto-standard x86_64 tampaknya tidak memiliki gtf(1), jadi, saya harus menggunakan mesin yang berbeda untuk menghitung angka yang sesuai:

$ 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

$ 

Lalu, buat file dengan perintah yang sesuai:

# 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

Kemudian, startxatau startxfce4, dan jalankan ./1024x600.sh, setelah itu, berikut ini akan dilaporkan oleh 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)
# 
cnst
sumber
Jawaban mencakup pengguna pribadi dan nama host yang tidak relevan, dan tidak jelas memisahkan perintah dari output mereka - yang semuanya dapat membingungkan pembaca. Metode standar untuk menyampaikan bahwa sesuatu adalah perintah akan diawali dengan hanya dengan $. WM default Kali juga GNOME, bukan XFCE, mungkin harus dibuat jelas bahwa perintah startxfce4 hanya untuk pengguna yang menjalankan XFCE versi 4. Kemungkinan bahwa banyak pengguna lain akan berjalan, Linux 4.4.15-yocto-standard x86_64sepertinya tidak terlalu tinggi bagi saya, jadi saya akan alih-alih menulis bahwa gtf(atau cvt) mungkin harus diinstal terlebih dahulu.
miyalys
1

Saya berlari:

xrandr --verbose

yang memberi saya daftar tag ukuran dan nilai piksel yang sesuai

lalu saya gunakan

xrandr -s 6

untuk memilih resolusi 1920x1080

Gavin Guan
sumber
1

Simpan skrip dan jalankan (bash script.sh 1024 720 60) Anda dapat mengatur resolusi khusus dengan skrip itu tetapi ini adalah solusi sementara setiap kali Anda logout dan login lagi Anda harus menjalankan skrip lagi. Anda dapat menambahkan 2 baris kode di profil bash.bashrc Anda.untuk menjalankan skrip langsung dari terminal.

#!/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
Pemula
sumber
0

Masalah saya adalah resolusi notebook miliki ini:

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

Layar utama / default saya adalah 1366x768.

Tetapi saya ingin menguji resolusi 1920x1080 (DesireResolution) di notebook saya.

Saya mencoba segalanya.

Saya tidak dapat menemukan solusi karena notebook saya tidak menerima perintah addmode atau newmode dari xrandr untuk meningkatkan resolusi, seperti permintaan pertanyaan stackexchange ini.

Jadi saya melakukan beberapa matematika!

1920/1366 = 1.4055636896
1080/768 = 1.40625

pada dasarnya DesireResolution / MaxResolution

dan jalankan perintah ini

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

Jika Anda perlu mengembalikan resolusi asli

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

Anda dapat beradaptasi dengan resolusi yang Anda inginkan.

macm
sumber