Как установить пользовательское разрешение с помощью xrandr, когда разрешение недоступно в «Настройках экрана»


39

Я новый пользователь Linux, пытающийся изменить разрешение экрана, так как нет никакой опции под дисплеем. Мне удалось добавить новые разрешения от Fluke, следуя онлайн-руководству. У меня нет графического процессора, я не знаю, в этом ли проблема? Ниже мой 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

Ответы:


48

Вот шаги, необходимые для добавления нового пользовательского разрешения и его применения. Следующие шаги предназначены для добавления разрешения 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
Не удалось последний шаг ...
Вишал Кумар Саху

Какую ошибку вы получили? Попробуйте автоматизированный скрипт, который я связал в конце ответа.
Чираг Бхатия - chirag64

Когда я запускаю ваш файл, chmod +x Desktop/xrandr.shя не чувствую ошибок или изменений.
Вишал Кумар Саху

chmod +x Desktop/xrandr.shтолько дает вам разрешение на запуск этого файла. Вы должны запустить его, запустив Desktop/xrandr.sh.
Чираг Бхатия - chirag64

: o Хорошо, значит я пропустил выстрел из оружия.
Вишал Кумар Саху

14

Опцию --size/ -sможно использовать:

xrandr -s 1440x900

Должен работать с RandRверсией 1.1 или новее.


2
Когда я делаю это, ответ: размер 1440x900 не найден в доступных режимах
Ник

@nick Из вывода, который вы включили в вопрос, который я вывел, он должен быть доступен. Какой выход xrandr --verbose?
Джимми

xrandr: не удалось получить размер гаммы для выходного значения по умолчанию. Экран 0: минимум 1024 x 768, ток 1024 x 768, максимум 1024 x 768, по умолчанию подключен 1024x768 + 0 + 0 (0x138) нормальный (нормальный) 0mm x 0mm Идентификатор: 0x137 Отметка времени: 5048 Субпиксель: неизвестно Клоны: CRTC: 0 CRTC: 0 Преобразование: 1.000000 0.000000 0.000000 0.000000 1.000000 0.000000 0.000000 0.000000 1.000000 фильтр:
ник

1024x768 (0x138) 0,0 МГц * текущий ч: ширина 1024 начало 0 конец 0 всего 1024 перекос 0 тактовых импульсов 0,0 кГц v: высота 768 начало 0 конец 0 всего 768 тактовых импульсов 0,0 Гц
ник

Таким образом, кажется, единственное доступное разрешение - 1024x768. Это разрешение, которое вы хотите установить?
Джимми

6

У меня такая же проблема. В настройках дисплея максимальное разрешение было 1280х720. Так:

  1. с помощью команды xrandr я увидел название этого монитора и список разрешений.
  2. Я выполнил сценарий: xrandr --output {имя монитора} --mode {разрешение}

Например:

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

3

Это то, что я должен был сделать #IntelMaker #Joule, чтобы заставить его работать в собственном разрешении с SUNFOUNDER 7 INCH TFT COLOR MONITOR, который указан с разрешением 1024 * 600, но вместо этого был выбран как 1280x720.

Во-первых, Intel Joule с Linux 4.4.15-yocto-стандарта 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.sh, после чего будет сообщено следующее 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)
# 

Ответ включает в себя не относящиеся к делу личные имена пользователей и хостов и четко не отделяет команды от их вывода - все это может сбивать с толку читателей. Стандартный метод передачи, что-то является командой, будет просто с префиксом $. По умолчанию в Kali WM также 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), вы можете установить собственное разрешение с помощью этого сценария, но это временное решение, когда вы выходите из системы и снова входите в систему, вам необходимо снова запустить сценарий. Вы можете добавить 2 строки код в вашем профиле 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

Вы можете адаптироваться к любому разрешению, которое вы хотите.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.