Як встановити власну роздільну здатність за допомогою xrandr, коли дозвіл недоступний у розділі "Налаштування дисплея"


39

Я новий користувач Linux, який намагається змінити роздільну здатність екрана, оскільки під час відображення немає жодної опції. Мені успішно вдалося додати нові резолюції по моменту, дотримуючись онлайн-довідника. У мене немає GPU, я не знаю, чи це проблема? Нижче моя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
Не вдалося останнього кроку ...
Вішал Кумар Саху

Яку помилку ви отримали? Спробуйте автоматизований сценарій, який я пов’язав у кінці відповіді.
Chirag Bhatia - chirag64

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

chmod +x Desktop/xrandr.shдає лише дозволи на запуск цього файлу. Її потрібно запустити, запустивши Desktop/xrandr.sh.
Chirag Bhatia - chirag64

: o Гаразд середній, я пропустив зброю.
Вішал Кумар Саху

13

Варіант --size/ -sможе бути використаний:

xrandr -s 1440x900

Має працювати з RandRверсією 1.1 або новішою.


2
Коли я це роблю, відповідь така: розмір 1440x900 не знайдений у доступних режимах
псевдонім

@nick З результатів, які ви включили до питання, який я вивів, він повинен бути доступним. Який результат xrandr --verbose?
jimmij

xrandr: Не вдалося отримати розмір гамми для вихідного значення за замовчуванням Екран 0: мінімум 1024 x 768, поточний 1024 x 768, максимум 1024 x 768 підключений за замовчуванням 1024x768 + 0 + 0 (0x138) нормальний (нормальний) 0 мм x 0 мм Ідентифікатор: 0x137 Часова позначка: 5048 Підпіксель: невідомі Клони: CRTC: 0 CRTC: 0 Трансформація: 1.000000 0,000000 0,000000 0,000000 1.000000 0,000000 0,000000 0.000000 1.000000 фільтр:
nick

1024x768 (0x138) 0,0МГц * струм h: ширина 1024 початок 0 кінець 0 всього 1024 перекос 0 тактова частота 0,0KHz v: висота 768 початок 0 кінець 0 всього 768 тактова частота 0,0Hz
нік

Тож здається, що єдиною доступною роздільною здатністю є 1024x768. Це резолюція, яку ви хочете встановити?
jimmij

5

У мене була така ж проблема. У налаштуваннях дисплея максимальна роздільна здатність була 1280x720. Так:

  1. за допомогою команди xrandr я побачив ім'я цього монітора та список роздільної здатності.
  2. Я виконав сценарій: xrandr --output {ім'я монітора} - mode {роздільна здатність}

Наприклад:

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

3

Це те, що я повинен був зробити на #IntelMaker #Joule того, щоб змусити його працювати в нативній роздільній здатності за допомогою монітора кольорів SUNFOUNDER 7 дюймів TFT, який вказаний як роздільна здатність 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)
# 

Відповідь включає нерелевантні особисті імена користувачів та хостів і не чітко відокремлює команди від їх результатів - все це може бентежити читачів. Стандартний метод передачі того, що щось є командою, - це префіксація просто за допомогою $. WM Kali за замовчуванням також 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 profile.to запустити скрипт безпосередньо з терміналу.

#!/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) у своєму ноутбуці.

Я все спробував.

Я не зміг знайти рішення, тому що мій ноутбук не приймає команди xxdxd addmode або newmode для збільшення роздільної здатності, як це запит на запитання stackexchange.

Тож я зробив деякі математики!

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.