Колись мені в руки потрапив монітор 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 – спробуємо розібратися 🙂

«Не забудь обов’язково вказати у секції Device драйвер до своєї відеокарти»
> lspci -nnk | grep -i "vga" -A3
поточний драйвер — в рядку «kernel driver in use» (наприклад, для інтегрованого відео intel може бути i915 абощо).
доступні драйвери — в рядку <kernel modules» (наприклад, для nvidia може бути nvidia та/або nuveau)
Дякую за підказку!