Колись мені в руки потрапив монітор Samsung SyncMaster 205bw – класний 20-дюймовий моніторчик зі співвідношенням сторін 16:10 і роздільною здатністю 1680×1050. І що ти думаєш: мій Linux запропонував для нього максимум 1024×768, більшої в списку просто не було. Ну нічого, я потер руки й узявся вмовляти систему 🙂

Нижче розповім, чому так буває і як додати власну роздільну здатність у будь-якому дистрибутиві: Ubuntu, Linux Mint, Fedora, Arch Linux чи іншому – і в сеансі X11, і у Wayland.

Чому Linux не бачить потрібну роздільну здатність

Монітор сам повідомляє комп'ютеру, які режими він підтримує, – через так званий EDID. Якщо ці дані не доходять, система не знає, на що здатен монітор, і пропонує безпечний мінімум на кшталт 1024×768. Найчастіше винні:

  • старий VGA-кабель або дешевий перехідник (наприклад, HDMI→VGA), який не передає EDID;
  • KVM-перемикач чи подовжувач між комп'ютером і монітором;
  • сам монітор із пошкодженим або «кривим» EDID.

Тож перш ніж щось налаштовувати, спробуй інший кабель чи підключи монітор напряму через DVI, HDMI або DisplayPort. Часто цього достатньо. Якщо ж ні – додаємо режим вручну.

X11 чи Wayland?

Спосіб залежить від того, в якому сеансі ти працюєш. Перевірити просто:

echo $XDG_SESSION_TYPE

Якщо бачиш x11, читай наступний розділ. Якщо wayland (а це вже стандарт для GNOME і KDE Plasma) – переходь до розділу про Wayland: команда xrandr там не допоможе.

Власна роздільна здатність в X11

1. Дізнайся назву відеовиходу

xrandr

У моєму випадку відповідь була приблизно така:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
VGA-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00*+
   800x600       60.32    56.25
   848x480       60.00
   640x480       59.94
DVI-D-1 disconnected (normal left inverted right x axis y axis)

Тут монітор підключений до виходу VGA-1. У тебе це може бути HDMI-1, DP-1 тощо – запам'ятай свою назву.

2. Отримай параметри режиму

Команда cvt розрахує всі потрібні цифри для бажаної роздільної здатності й частоти:

cvt 1680 1050 60
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

Нам потрібен рядок після слова Modeline.

3. Додай режим і ввімкни його

Підстав свої значення з попередніх кроків:

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA-1 "1680x1050_60.00"
xrandr --output VGA-1 --mode "1680x1050_60.00"

Перша команда створює режим, друга додає його до відеовиходу, третя вмикає. Після цього нова роздільна здатність з'явиться і в налаштуваннях екрана твого робочого оточення.

Якщо монітор після цього показує «Out of range» або чорний екран, просто зачекай: більшість оточень за кілька секунд повертають попередній режим. Можна також спробувати cvt -r – він дає режим зі зменшеними паузами, який краще підходить для РК-моніторів.

4. Збережи налаштування назавжди

Команди xrandr діють лише до перезавантаження. Найпростіше – додати їх у файл ~/.xprofile, який виконується під час входу в X11-сеанс:

nano ~/.xprofile

Встав туди ті самі три команди, збережи файл і перезайди в систему.

Інший варіант, для всієї системи, – файл конфігурації Xorg. Створи /etc/X11/xorg.conf.d/10-monitor.conf:

sudo nano /etc/X11/xorg.conf.d/10-monitor.conf

і впиши туди:

Section "Monitor"
    Identifier "VGA-1"
    Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
    Option "PreferredMode" "1680x1050_60.00"
EndSection

В Identifier вказуєш назву свого відеовиходу, а в Modeline – рядок із результату cvt. Колись я ще додавав у цей файл секцію Device з назвою відеодрайвера і, помилившись в одній літері, після перезавантаження побачив замість робочого столу чорний екран 😀 Сучасним драйверам ця секція не потрібна, тож простіше її не писати.

Власна роздільна здатність у Wayland

У Wayland за екран відповідає саме робоче оточення, тому xrandr тут нічого не змінить. Зате працює універсальний спосіб на рівні ядра Linux – параметр video=, який додає потрібний режим до відеовиходу ще під час завантаження. Його підхоплять і GNOME, і KDE Plasma, і будь-яке інше оточення.

1. Дізнайся назву відеовиходу для ядра

ls /sys/class/drm/

Шукай рядки на кшталт card0-VGA-1 або card1-HDMI-A-1. Назва виходу – усе, що після card0-: VGA-1, HDMI-A-1 і т. д. Зверни увагу: для HDMI вона трохи відрізняється від тієї, що показує xrandr.

2. Додай параметр у GRUB

Відкрий налаштування завантажувача:

sudo nano /etc/default/grub

Знайди рядок GRUB_CMDLINE_LINUX_DEFAULT і допиши в лапках через пробіл параметр зі своїм виходом, роздільною здатністю і частотою:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=VGA-1:1680x1050M@60"

Літера M після роздільної здатності просить ядро саме розрахувати параметри режиму за тим самим стандартом CVT, що й команда cvt, тож ніяких цифр вручну вводити не треба. Збережи файл і онови конфігурацію GRUB:

# Ubuntu, Linux Mint
sudo update-grub

# Arch Linux, Manjaro
sudo grub-mkconfig -o /boot/grub/grub.cfg

У Fedora файл редагувати не потрібно, вистачить однієї команди:

sudo grubby --update-kernel=ALL --args="video=VGA-1:1680x1050M@60"

Перезавантаж комп'ютер – нова роздільна здатність має з'явитися в налаштуваннях екрана. Цей спосіб, до речі, працює і в X11, тож якщо не хочеш возитися з xrandr, можна одразу йти цим шляхом.

Якщо після перезавантаження щось пішло не так, у меню GRUB натисни E, прибери параметр video= з рядка, що починається з linux, і завантаж систему клавішами Ctrl+X. А якщо завантажувач зламався зовсім, допоможе стаття про відновлення завантажувача Windows та Linux.

Найнадійніший, але й найскладніший варіант – підсунути ядру правильний EDID-файл монітора параметром drm.edid_firmware. Він потрібен рідко, тож зупинятися на ньому не буду: зазвичай вистачає video=.

Що далі

Мій SyncMaster після таких «вмовлянь» чудово працював на рідних 1680×1050 😉 Якщо ти тільки налаштовуєш систему, тобі можуть стати в пригоді статті про те, яке робоче оточення вибрати для Linux і як просто встановити Arch Linux. Інші поради зібрані за позначками Налаштування системи та Залізо.

Не вийшло додати роздільну здатність? Пиши в коментарях модель монітора і що показує xrandr – спробуємо розібратися 🙂