'Ekran Ayarları'nda çözünürlük mevcut olmadığında xrandr kullanarak özel çözünürlük nasıl ayarlanır


37

Ekran altında seçenek olmadığından ekran çözünürlüğünü değiştirmeye çalışan yeni bir Linux kullanıcısıyım. Online kılavuz izleyerek şans eseri yeni çözümler eklemeyi başardım. GPU'm yok, sorunun bu olup olmadığını bilmiyorum? Aşağıda benim xrandr -qçıktım var.

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, kılavuzlarında listelenmemiş.
AslaMind9

Yanıtlar:


46

Yeni bir özel çözünürlük eklemek ve uygulamak için gereken adımlar. Aşağıdaki adımlar 1920x1080 çözünürlük eklemek içindir, ancak istediğiniz diğer çözünürlüklerde kullanabilirsiniz. Ancak monitörünüzün ve yerleşik grafiklerin bu çözünürlüğü desteklediğinden emin olun.

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

Orijinal kaynak: https://gist.github.com/debloper/2793261

Ayrıca tüm bu adımları otomatik olarak yapan bir senaryo yazdım. Yukarıdaki adımlar sizin için çok karmaşık görünüyorsa deneyebilirsiniz: https://gist.github.com/chirag64/7853413


2
Son adım
atılamadı

Hangi hatayı aldın? Cevabın sonunda bağladığım otomatik komut dosyasını deneyin.
Chirag Bhatia - chirag64

Dosyanızı çalıştırdığımda chmod +x Desktop/xrandr.shhiçbir hata veya değişiklik hissetmiyorum.
Vishal Kumar Sahu

chmod +x Desktop/xrandr.shsadece bu dosyayı çalıştırmak için izinler verir. Çalıştırarak çalıştırmak gerekir Desktop/xrandr.sh.
Chirag Bhatia - chirag64

: o Tamam Yani silahı ateşlemeyi özledim.
Vishal Kumar Sahu

13

Seçenek --size/ -skullanılabilir:

xrandr -s 1440x900

RandR1.1 veya daha yeni bir sürümle çalışmalı .


2
Bunu yaptığımda cevap şu: boyut 1440x900 mevcut modlarda bulunamadı
nick

@ nick Sorunu eklediğiniz çıktının içinden çıkarılabilir olması gerekir. Çıktı nedir xrandr --verbose?
jimmij

xrandr: Varsayılan çıktı için gama boyutu alınamadı Ekran 0: minimum 1024 x 768, mevcut 1024 x 768, maksimum 1024 x 768 varsayılan bağlı 1024x768 + 0 + 0 (0x138) normal (normal) 0mm x 0mm Tanımlayıcı: 0x137 5048 Altpiksel: bilinmiyor Klonlar: CRTC: 0 CRTCs: 0 Dönüştürme: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 filtre:
nick

1024x768 (0x138) 0,0MHz * akım h: genişlik 1024 başlangıç ​​0 son 0 toplam 1024 çarpık 0 saat 0.0KHz v: yükseklik 768 başlangıç ​​0 son 0 toplam 768 saat 0.0Hz
nick

Öyle görünüyor ki mevcut tek çözünürlük 1024x768. Bu çözünürlük ayarlamak istediğiniz şey mi?
jimmij

5

Ben de aynı problemi yaşadım. Ekran ayarında maksimum çözünürlük 1280x720 idi. Yani:

  1. xrandr komutunu kullanarak bu monitörün adını ve çözünürlük listesini gördüm.
  2. Komut dosyasını yürüttüm: xrandr --output {monitörün adı} --mode {resolution}

Örneğin:

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

3

Bu, #IntelMaker #Joule1024 * 600 çözünürlüğe sahip olarak listelenen, ancak bunun yerine 1280x720 olarak algılanan SUNFOUNDER 7 INCH TFT RENK MONİTÖRÜ ile doğal çözünürlükte çalışabilmesi için yapmam gereken şeydi.

İlk olarak, Linux 4.4.15-yocto standardı x86_64 ile Intel Joule sahip görünmüyor gtf(1), bu yüzden uygun sayıları hesaplamak için farklı bir makine kullanmak zorunda kaldım:

$ 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

$ 

Sonra uygun komutlarla bir dosya oluşturun:

# 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

Ardından, startxveya startxfce4, ve koşmak ./1024x600.sh, bundan sonra, şu tarafından rapor edilecektir 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)
# 

Cevap, ilgisiz kişisel kullanıcı ve ana bilgisayar adlarını içerir ve komutları çıktılarından açıkça ayırmaz; bunların tümü okuyucular için kafa karıştırıcı olabilir. Bir şeyin bir komut olduğunu iletmenin standart bir yöntemi, onu basitçe öneklemektir $. Kali varsayılan WM startxfce4 komut XFCE sürüm 4. çalıştıran kullanıcılar için olduğunu da belki açıkça belirtilmelidir GNOME, değil XFCE, birçok diğer kullanıcıların tam olarak çalışıyor olması olasılığı; Linux 4.4.15-yocto-standard x86_64bana yüksek görünmüyor, Bence bu yüzden bunun yerine, önce gtf(ya da cvt) yüklenmesi gerekebileceğini yazınız .
miyalys

1

Koştum:

xrandr --verbose

bana boyut etiketlerinin ve karşılık gelen piksel değerlerinin bir listesini verdi

sonra kullandım

xrandr -s 6

1920x1080 çözünürlüğü seçmek için


1

Komut dosyasını kaydedin ve başlatın (bash script.sh 1024 720 60) özel komut dosyasını bu komut dosyasıyla ayarlayabilirsiniz, ancak oturumunuzu kapatıp tekrar oturum açtığınızda, komut dosyasını tekrar çalıştırmanız gerekecek geçici bir çözümdür. 2 satır ekleyebilirsiniz. komut dosyasını doğrudan terminalden çalıştırmak için bash.bashrc profilinizdeki kodu kullanın.

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

Benim sorunum dizüstü bilgisayar çözünürlüğünün şudur:

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

Birincil / varsayılan ekranım 1366x768.

Ancak 1920x1080 (DesireResolution) çözünürlüğünü dizüstü bilgisayarımda test etmek istiyorum.

Her şeyi denedim.

Bir çözüm bulamadım çünkü notebook'um xrandr'dan addmode veya newmode komutlarını kabul etmiyor, çözünürlüğü artırmak için bu stackexchange soru isteği gibi.

Bu yüzden bazı matematik yaptım!

1920/1366 = 1.4055636896
1080/768 = 1.40625

temelde DesireResolution / MaxResolution

ve bu komutu çalıştır

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

Orijinal çözünürlüğü geri yüklemeniz gerekirse

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

İstediğiniz herhangi bir çözünürlüğe adapte edebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.