Jak ustawić niestandardową rozdzielczość za pomocą xrandr, gdy rozdzielczość nie jest dostępna w „Ustawieniach ekranu”


39

Jestem nowym użytkownikiem systemu Linux, który próbuje zmienić rozdzielczość ekranu, ponieważ nie ma wyświetlanej opcji. Udało mi się dodać nowe rozwiązania Fluke, postępując zgodnie z przewodnikiem online. Nie mam GPU, nie wiem czy to jest problem? Poniżej znajduje się moja xrandr -qprodukcja.

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 nie jest wymieniony w ich instrukcji.
neverMind9,

Odpowiedzi:


48

Oto kroki, które należy wykonać, aby dodać nową niestandardową rozdzielczość i zastosować ją. Poniższe kroki dotyczą dodawania rozdzielczości 1920 x 1080, ale możesz jej użyć w dowolnej innej rozdzielczości. Ale upewnij się, że monitor i wbudowana grafika obsługują tę rozdzielczość.

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

Oryginalne źródło: https://gist.github.com/debloper/2793261

Napisałem również skrypt, który wykonuje te wszystkie kroki automatycznie. Możesz to wypróbować, jeśli powyższe kroki wydają się dla Ciebie zbyt skomplikowane: https://gist.github.com/chirag64/7853413


2
Nie udało się ostatni krok ...
Vishal Kumar Sahu

Jaki masz błąd? Wypróbuj automatyczny skrypt, który podlinkowałem na końcu odpowiedzi.
Chirag Bhatia - chirag64

Kiedy uruchamiam twój plik chmod +x Desktop/xrandr.shNie mam błędu ani żadnych zmian.
Vishal Kumar Sahu

chmod +x Desktop/xrandr.shdaje tylko uprawnienia do uruchomienia tego pliku. Musisz go uruchomić, uruchamiając Desktop/xrandr.sh.
Chirag Bhatia - chirag64

: o Ok, znaczy, że tęskniłem za wystrzeleniem broni.
Vishal Kumar Sahu

13

Opcji --size/ -smożna użyć:

xrandr -s 1440x900

Powinien działać z RandRwersją 1.1 lub nowszą.


2
Kiedy to robię, odpowiedź brzmi: rozmiar 1440 x 900 nie został znaleziony w dostępnych trybach
nick

@nick Z wyniku, który podałeś w wydanym przeze mnie pytaniu, powinna być dostępna. Jaka jest wydajność xrandr --verbose?
jimmij

xrandr: Nie udało się uzyskać rozmiaru gamma dla wyjściowego domyślnego ekranu 0: minimum 1024 x 768, aktualny 1024 x 768, maksymalny 1024 x 768 domyślnie podłączony 1024x768 + 0 + 0 (0x138) normalny (normalny) 0mm x 0mm Identyfikator: 0x137 Datownik: 5048 Podpiksel: nieznany Klony: CRTC: 0 CRTC: 0 Przekształcenie: 1,000000 0,000000 0,000000 0,000000 1,000000 0,000000 0,000000 0,000000 1,000000 filtr:
nick

1024x768 (0x138) 0,0 MHz * prąd h: szerokość 1024 początek 0 koniec 0 łącznie 1024 pochylenie 0 zegar 0,0 KHz v: wysokość 768 początek 0 koniec 0 łącznie 768 zegar 0,0 Hz
nick

Wygląda więc na to, że jedyna dostępna rozdzielczość to 1024 x 768. Czy tę rozdzielczość chcesz ustawić?
jimmij

5

Miałem ten sam problem. W ustawieniach wyświetlacza maksymalna rozdzielczość wynosiła 1280 x 720. Więc:

  1. za pomocą polecenia xrandr widziałem nazwę tego monitora i listę rozdzielczości.
  2. Wykonałem skrypt: xrandr --output {nazwa monitora} --mode {rozdzielczość}

Na przykład:

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

3

Właśnie to musiałem zrobić #IntelMaker #Joule, aby działał w natywnej rozdzielczości dzięki MONITOROWI KOLORU SUNFOUNDER 7 CALA TFT, który jest wymieniony jako mający rozdzielczość 1024 * 600, ale zamiast tego został wybrany jako 1280x720.

Po pierwsze, wydaje się, że Intel Joule z Linuksem 4.4.15-yocto-standard x86_64 nie ma gtf(1), więc musiałem użyć innej maszyny do obliczenia odpowiednich liczb:

$ 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

$ 

Następnie utwórz plik z odpowiednimi poleceniami:

# 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

Następnie, startxlub startxfce4i uruchom ./1024x600.sh, po czym następujące informacje zostaną zgłoszone przez 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)
# 

Odpowiedź zawiera niepotrzebne osobiste nazwy użytkowników i hostów i nie oddziela wyraźnie poleceń od ich wyników - z których wszystkie mogą być mylące dla czytelników. Standardowa metoda przekazywania, że ​​coś jest poleceniem, poprzedzałaby go po prostu $. Domyślnym WM Kali jest także GNOME, a nie XFCE, może należy wyjaśnić, że komenda startxfce4 jest przeznaczona tylko dla użytkowników korzystających z XFCE w wersji 4. Prawdopodobieństwo, że wielu innych użytkowników będzie działało dokładnie Linux 4.4.15-yocto-standard x86_64nie wydaje mi się wysokie, więc chciałbym zamiast tego napisz, że gtf(lub cvt) może być najpierw konieczne.
miyalys

1

Prowadziłem:

xrandr --verbose

co dało mi listę znaczników wielkości i odpowiadających im wartości pikseli

wtedy użyłem

xrandr -s 6

aby wybrać rozdzielczość 1920 x 1080


1

Zapisz skrypt i uruchom go (bash script.sh 1024 720 60) możesz ustawić niestandardową rozdzielczość za pomocą tego skryptu, ale jest to rozwiązanie tymczasowe po każdym wylogowaniu i zalogowaniu się, musisz ponownie uruchomić skrypt. Możesz dodać 2 linie kod w swoim profilu bash.bashrc. aby uruchomić skrypt bezpośrednio z terminala.

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

Mój problem polega na tym, że rozdzielczość notebooka ma to:

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ój główny / domyślny ekran to 1366 x 768.

Ale chciałbym przetestować rozdzielczość 1920x1080 (DesireResolution) w moim notatniku.

Próbowałem wszystkiego

Nie mogłem znaleźć rozwiązania, ponieważ mój notebook nie akceptuje komend addmode lub newmode z xrandr w celu zwiększenia rozdzielczości, takich jak zapytanie o zmianę stosu.

Zrobiłem więc matematykę!

1920/1366 = 1.4055636896
1080/768 = 1.40625

w zasadzie DesireResolution / MaxResolution

i uruchom to polecenie

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

Jeśli potrzebujesz przywrócić oryginalną rozdzielczość

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

Możesz dostosować się do dowolnej rozdzielczości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.