Xorg (Українська)

From ArchWiki

This article or section needs to be translated.

Notes: Partial translation. (Discuss in Talk:Xorg (Українська))

З https://www.x.org/wiki/:

Проект X.Org забезпечує реалізацію з відкритим вихідним кодом X Window System. Робота над проектом ведеться спільно зі спільнотою freedesktop.org. Фундація X.Org є освітньою некомерційною корпорацією, чия Рада служить цим зусиллям, і Члени якої керують цією роботою.

Xorg (зазвичай називають просто X) - найпопулярнішою віконною системою серед користувачів Linux. Її поширеність призвела до того, що вона стала невід'ємним атрибутом програм з графічним інтерфейсом, що призвело до масового впровадження у більшості дистрибутивів. Дивіться статтю Xorg у Вікіпедії або відвідайте веб-сайт Xorg для отримання детальнішої інформації.

Про альтернативу та наслідника див. Wayland.

Встановлення

Xorg можна встановити за допомогою пакета xorg-server.

Крім того, деякі пакети з групи xorg-apps необхідні для певних завдань конфігурації. Про них зазначено у відповідних розділах.

Нарешті, також доступна група xorg, до якої входять пакети сервера Xorg, пакети з групи xorg-apps та шрифти.

Встановлення драйверів

Ядро Linux містить відеодрайвери з відкритим вихідним кодом та підтримку апаратного прискорення фрейм-буферів. Втім, для OpenGL і 2D-прискорення у X11 потрібна підтримка користувацького середовища.

Спочатку визначте відеокарту (у виводі Subsystem буде показано конкретну модель):

$ lspci -v | grep -A1 -e VGA -e 3D

Потім встановіть відповідний драйвер. Повний список відеодрайверів з відкритим кодом можна знайти у базі даних пакетів:

$ pacman -Ss xf86-video

Xorg шукає встановлені драйвери автоматично:

  • Якщо не вдається знайти певний драйвер, встановлений для апаратних засобів (перелічено нижче), спочатку шукається fbdev (xf86-video-fbdev), який не включає жодного 2D або 3D прискорення.
  • Якщо його не знайдено, шукає vesa (xf86-video-vesa), типовий драйвер, який працює з великою кількістю чипсетів, але не містить жодного 2D або 3D прискорення.
  • Якщо vesa не знайдено, Xorg повернеться до налаштування режиму ядра, яке включає прискорення GLAMOR (див. modesetting(4)).

Для того, щоб відеоприскорення працювало, і часто для того, щоб показати усі режими, які може встановити графічний процесор, потрібен належний відеодрайвер:

This article or section needs expansion.

Reason: Яким чином nvidia-open вписується сюди? Чи використовує він ті самі драйвери OpenGL/Vulkan, що й nvidia-utils? (Discuss in Talk:Xorg (Українська))
Виробник Тип Документація Драйвер OpenGL OpenGL (multilib) Vulkan Vulkan (multilib)
AMD (ex-ATI) Відкритий код AMDGPU xf86-video-amdgpu mesa lib32-mesa vulkan-radeon / amdvlk4 lib32-vulkan-radeon / lib32-amdvlk4
ATI xf86-video-ati Немає
Proprietary AMDGPU PRO xf86-video-amdgpu amdgpu-pro-oglpAUR lib32-amdgpu-pro-oglpAUR vulkan-amdgpu-proAUR lib32-vulkan-amdgpu-proAUR
Intel Відкритий код Intel graphics xf86-video-intel2 mesa або mesa-amber3 lib32-mesa vulkan-intel lib32-vulkan-intel
NVIDIA Відкритий код Nouveau1 xf86-video-nouveau mesa lib32-mesa vulkan-nouveau lib32-vulkan-nouveau
Власність виробника NVIDIA1 nvidia nvidia-utils lib32-nvidia-utils nvidia-utils lib32-nvidia-utils
nvidia-470xx-dkmsAUR nvidia-470xx-utilsAUR lib32-nvidia-470xx-utilsAUR nvidia-470xx-utilsAUR lib32-nvidia-470xx-utilsAUR
nvidia-390xx-dkmsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR
  1. Для ноутбуків з підтримкою NVIDIA Optimus, які використовують інтегровану відеокарту у поєднанні з виділеним графічним процесором, див. NVIDIA Optimus.
  2. Для графічних процесорів Intel 4-го покоління і вище див. Intel graphics#Installation щодо доступних драйверів.
  3. Класичні драйвери OpenGL (не Gallium3D) для старішого обладнання (Mesa 22.0 і вище не підтримує класичний драйвер i915)
  4. vulkan-radeon / lib32-vulkan-radeon рекомендовано замість amdvlk / lib32-amdvlk (див. AMDGPU#Installation).

Інші відеодрайвери можна знайти у групі xorg-drivers.

Xorg має безперебійно працювати без драйверів із закритим кодом, які зазвичай потрібні лише для розширених можливостей, таких як швидкий 3D-рендеринг для ігор. Винятком з цього правила є новітні графічні процесори (особливо NVIDIA GPU), які не підтримуються драйверами з відкритим кодом.

AMD

Переклад назв моделей (наприклад, Radeon RX 6800) на архітектури графічних процесорів (наприклад, RDNA 2) див. у Wikipedia:List of AMD graphics processing units#Features overview.

Архітектура GPU Драйвер з відкритим кодом Власний драйвер
RDNA і пізніше AMDGPU AMDGPU PRO
GCN 3 і пізніше
GCN 1&2 AMDGPU1 / ATI не доступно
TeraScale
та старіші
ATI не доступно
  1. Експериментальний.

Запуск

Команду Xorg(1) зазвичай не виконують безпосередньо. Замість цього X-сервер запускається за допомогою віконного менеджера або xinit.

Порада: Ви зазвичай намагаєтеся встановити window manager або desktop environment на додаток до X.

Конфігурація

Примітка: Arch типово розміщує файли налаштувань в /usr/share/X11/xorg.conf.d/, і в більшості випадків не потрібно додаткового налаштування.

Xorg використовує файл налаштуваньxorg.conf і файли що закінчуються на .conf для початкового налаштування: повний список тек, в яких знаходяться ці файли, можна знайти у xorg.conf(5), разом з детальним поясненням усіх доступних варіантів.

Використання .conf файлів

Каталог /etc/X11/xorg.conf.d/ зберігає конфігурацію, специфічну для хоста. Ви можете додавати там конфігураційні файли, але вони повинні мати суфікс .conf: файли зчитуються в порядку ASCII, тому, відповідно, їхні імена починаються з XX- (дві цифри і дефіс, для прикладу: 10 читається перед 20). Ці файли аналізуються сервером X під час запуску і обробляються як частина традиційного конфігураційного файлу xorg.conf. Зверніть увагу, що при конфліктній конфігурації цей файл буде оброблено останнім. З цієї причини найбільш загальні конфігураційні файли слід упорядковувати першими за назвою. Записи конфігурації у файлі xorg.conf обробляються наприкінці.

Приклади налаштування дивіться на fedora wiki.

Використання xorg.conf

Xorg також можна налаштувати за допомогою /etc/X11/xorg.conf або /etc/xorg.conf. Ви також можете створити основу для xorg.conf з:

# Xorg :0 -configure

Це має створити файл xorg.conf.new в /root/, в який можна скопіювати /etc/X11/xorg.conf.

Порада: Якщо ви вже запустили X-сервер, використовуйте інший дисплей, наприклад Xorg :2 -configure.

Крім того, драйвери пропрієтарних відеокарт можуть постачатися з інструментом для автоматичної настройки Xorg: див. Статтю вашого відео-драйвера, NVIDIA або AMDGPU PRO.

Примітка: Ключові слова файлу конфігурації нечутливі до регістру, символи "_" ігноруються. Більшість рядків (включаючи назви опцій) також нечутливі до регістру, пробілу та символу "_".

Пристрої введення

Для пристроїв введення даних X-сервер типово використовує драйвер libinput (xf86-input-libinput), але xf86-input-evdev та відповідні драйвери доступні як альтернатива.[1]

Udev, яка забезпечується як залежність від systemd, буде виявляти апаратні засоби, і обидва драйвера виступатимуть як драйвер введення для гарячого підключення майже для всіх пристроїв, як це типово визначено у файлах конфігурації 10-quirks.conf та 40-libinput.conf за шляхом /usr/share/X11/xorg.conf.d/.

Після запуску X-серверу, у файлі журналу відображатиметься, який драйвер буде задіяний для окремих пристроїв (зауважте, що найновіше ім'я файлу журналу може змінюватися):

$ grep -e "Using input driver " Xorg.0.log

Якщо обидва драйвери не підтримують певний пристрій, встановіть потрібний драйвер з групи xorg-drivers. Те ж саме зробіть, якщо ви хочете використовувати інший драйвер.

Щоб вплинути на гаряче підключення, див #Конфігурація.

Для більш конкретних інструкцій див. статтю libinput, читайте нижче, або Fedora wiki.

Ідентифікація введення

Дивіться Keyboard input#Identifying keycodes in Xorg.

Прискорення миші

Дивіться Mouse acceleration.

Додаткові кнопки миші

Дивіться Mouse buttons.

Тачпад

Дивіться libinput або Synaptics.

Тачскрін

Дивіться Touchscreen.

Налаштування клавіатури

Дивіться Keyboard configuration in Xorg.

Налаштування монітору

Ручне налаштування

Примітка:
  • Новіші версії Xorg йдуть з автоконфігуруванням, тому ручна конфігурація не потрібна.
  • Якщо Xorg не може виявити якийсь монітор або знайти автоматичного налаштування, можна використовувати файл конфігурації. Загальний випадок, коли це необхідно, це система, яка завантажується без монітора і автоматично запускає Xorg, або з віртуальної консолі при вході, або з менеджеру вікон.

Для конфігурації без-моніторних систем потрібен драйвер xf86-video-dummy; встановіть його та створіть файл конфігурації, подібний до цього:

/etc/X11/xorg.conf.d/10-headless.conf
Section "Monitor"
        Identifier "dummy_monitor"
        HorizSync 28.0-80.0
        VertRefresh 48.0-75.0
        Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118
EndSection

Section "Device"
        Identifier "dummy_card"
        VideoRam 256000
        Driver "dummy"
EndSection

Section "Screen"
        Identifier "dummy_screen"
        Device "dummy_card"
        Monitor "dummy_monitor"
        SubSection "Display"
        EndSubSection
EndSection

Декілька моніторів

Дивіться головну статтю Multihead для отримання більшої інформації.

Дивіться також інструкції відповідно до вашого GPU:

Більш ніж одна графічна карта

Ви повинні визначити правильний драйвер для використання і ввести BusID ваших графічних карт.

Section "Device"
    Identifier             "Screen0"
    Driver                 "intel"
    BusID                  "PCI:0:2:0"
EndSection

Section "Device"
    Identifier             "Screen1"
    Driver                 "nouveau"
    BusID                  "PCI:1:0:0"
EndSection

Отримати BusID (у шістнадцятковому форматі):

$ lspci | grep -e VGA -e 3D
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 630 (rev 04)
01:00.0 3D controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)

BusID тут 0:2:0 та 1:0:0.

Розмір екрану та DPI

За замовчуванням, починаючи з 2009-01-30 року, Xorg завжди встановлює DPI на 96. У версії 21.1 було зроблено зміну для забезпечення належного автоматичного визначення DPI, але її було скасовано.

DPI сервера X можна встановити за допомогою параметра командного рядка -dpi.

Правильне значення DPI є корисним там, де потрібні дрібні деталі (наприклад, при відтворенні шрифтів). Раніше виробники намагалися створити стандарт для 96 DPI (монітор з діагоналлю 10.3" матиме роздільну здатність 800x600, монітор з діагоналлю 13.2" - 1024x768). Сьогодні кількість точок на дюйм на екрані варіюється і може бути неоднаковою по горизонталі та вертикалі. Наприклад, 19-дюймовий широкоформатний LCD-дисплей з роздільною здатністю 1440x900 може мати DPI 89x87.

Щоб перевірити, чи правильні розмір вашого дисплея та DPI:

$ xdpyinfo | grep -B2 resolution

Переконайтеся, що розміри відповідають розміру дисплея. Якщо сервер Xorg не може правильно розрахувати розмір екрану, він типово буде дорівнює 75x75 DPI, і вам доведеться розрахувати його самостійно.

Якщо у вас в документації є інформація про фізичний розмір екрана, вона може бути введена в файл конфігурації Xorg, щоб обчислити відповідний DPI (налаштувати ідентифікатор вашого виводу xrandr) :

Section "Monitor"
    Identifier             "DVI-D-0"
    DisplaySize             286 179    # В міліметрах
EndSection

Якщо ви бажаєте лише ввести специфікацію вашого монітора, без створення повного xorg.conf, створіть новий конфігураційний файл. Наприклад (/etc/X11/xorg.conf.d/90-monitor.conf):

Section "Monitor"
    Identifier             "<default monitor>"
    DisplaySize            286 179    # В міліметрах
EndSection
Note: Якщо ви використовуєте пропрієтарний драйвер NVIDIA, можливо, вам доведеться вказати Option "UseEdidDpi" "FALSE" у розділі Device або Screen, щоб він набув чинності.

Якщо у вас немає в документації інформації про ширину та висоту екрана (більшість специфікацій наведено лише за діагональним розміром), можна використовувати власне дозвіл монітора (або співвідношення сторін) і діагональний розмір для обчислення горизонтальних і вертикальних фізичних розмірів. Використання теореми Піфагора на екрані діагоналі 13,3 дюйма з рідною роздільною здатністю 1280x800 (або співвідношенням сторін 16:10):

$ echo 'scale=5;sqrt(1280^2+800^2)' | bc  # 1509.43698

Це дасть піксельний діагональний розмір і з цим значенням ви зможете виявити фізичні та горизонтальні розміри (і перетворити їх на міліметри):

$ echo 'scale=5;(13.3/1509)*1280*25.4' | bc  # 286.43072
$ echo 'scale=5;(13.3/1509)*800*25.4'  | bc  # 179.01920
Примітка: Цей розрахунок працює для моніторів з квадратними пікселями; однак, зустрічаються монітори, які можуть стискати форматне співвідношення (наприклад, роздільну здатність 16:10 до 16:9). Якщо це так, ви повинні вимірювати розмір екрану вручну.

Ручне налаштування DPI

Примітка: Незважаючи на те, що ви можете встановити будь-яке потрібне dpi, а програми, які використовують Qt і GTK, відповідно масштабуватимуться, рекомендується встановити значення 96, 120 (25% вище), 144 (на 50% вище), 168 (на 75% вище), 192 (100% вище) і т.і., щоб зменшити масштаб артефактів в програмах з GUI, які використовують растрові зображення. Зменшення його нижче 96 точок на дюйм може не зменшити розмір графічних елементів GUI, оскільки, як правило, найнижче dpi для піктограм, становить 96.

Для RandR-сумісних драйверів (наприклад відкритий ATI драйвер), ви можете встановити його:

$ xrandr --dpi 144
Примітка: Програми, які відповідають встановленим параметрам, не зміняться негайно. Ви повинні їх перезавантажити.

Виконайте команди після старту X щоб зробити зміни постійними.

Пропрієтарний драйвер NVIDIA

Ви можете встановити DPI вручну, додавши параметр у розділі Device або Screen:

Option              "DPI" "96 x 96"
Застереження, щодо ручного налаштування DPI

GTK дуже часто перевизначає DPI сервера за допомогою додаткового файлу Xresource Xft.dpi. Щоб дізнатися, чи відбувається це з вами, перевірте з:

$ xrdb -query | grep dpi

З версіями бібліотеки GTK після 3.16, коли ця змінна явно не встановлена, GTK встановлює його 96. Щоб програми GTK підкорялися серверу DPI, вам може знадобитися точно встановити Xft.dpi на те ж значення, що і сервер. Ресурс Xft.dpi - це метод, за допомогою якого деякі настільні середовища примушують DPI до певного значення в особистих налаштуваннях. Серед них KDE та TDE.

Управління енергозбереженням монітора

DPMS (Display Power Management Signaling) це технологія, що визначає функції управління енергозбереженням моніторів за допомогою відеокарти, коли комп'ютер не використовується. Це дозволить монітору автоматично переходити в режим очікування після попередньо визначеного періоду часу.

Композит

Композитне розширення для X призводить до того, що усе піддерево ієрархії вікна буде відтворено у буфері поза екраном. Програми можуть приймати вміст цього буфера і робити все, що їм подобається. Екранний буфер може бути автоматично об'єднаний у батьківське вікно або об'єднаний зовнішніми програмами, які називаються композитними менеджерами. Докладнішу інформацію див. у наступній статті: Композитний менеджер вікон

Багато віконних менеджерів (наприклад: Compiz, Enlightenment, KWin, Marco, Metacity, Muffin, Mutter, Xfwm) роблять композицію самостійно. Для інших менеджерів вікон можна використовувати автономний композитний менеджер.

Список композитних менеджерів

  • Picom — Легкий композитор із затіненням, розширеним розмиванням та вицвітанням. Запозичено з Compton.
https://github.com/yshui/picom || picom
  • Xcompmgr — Композитний менеджер віконних ефектів.
https://gitlab.freedesktop.org/xorg/app/xcompmgr/ || xcompmgr
  • Gamescope — Мікро-компілятор від Valve, з ігровими можливостями, такими як масштабування FSR. Отримано з steamos-compositor.
https://github.com/ValveSoftware/gamescope || gamescope
  • steamos-compositor-plus — Композитор від Valve, з деякими додатковими твіками та виправленнями.
https://github.com/chimeraos/steamos-compositor-plus || steamos-compositor-plusAUR

Поради та підказки

Автоматизація

У цьому розділі перелічено утиліти для автоматизації введення та виведення клавіатури / миші, операцій з вікнами (наприклад переміщення, зміна розміру або фокусування).

Інструмент Пакет Документація Емуляція
введення
Операції
з вікнами
Примітка
xautomation xautomation xte(1) Так Ні Також містить інструменти для очищення екрана. Не може емулювати F13+.
xdo xdo xdo(1) Ні Так Невелика утиліта X для виконання елементарних дій над вікнами.
xdotool xdotool xdotool(1) Так Так Багато помилок і не перебуває в активній розробці, наприклад: зламався парсинг CLI.[2][3]
xvkbd xvkbdAUR xvkbd(1) Так Ні Віртуальна клавіатура для Xorg, також має параметр -text для надсилання символів.
AutoKey autokey-qtAUR autokey-gtkAUR документація Так Так Високорівнева, потужна утиліта для написання макросів і сценаріїв, з інтерфейсами Qt і Gtk.

Дивіться також Clipboard#Tools та огляд інструментів автоматизації X.

Вкладені X сесії

Для запуску вкладеного сеансу іншого середовища робочого столу:

$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1

Це запустить сеанс Window Maker у вікні 1024 на 768 у вашому поточному X сеансі.

Для цього потрібно встановити пакунок xorg-server-xnest.

Більш сучасним способом створення вкладеного сеансу X є використання Xephyr.

Запуск програми без віконного менеджера

Дивіться xinit#Starting applications without a window manager.

Віддалений запуск програм з GUI

Див. статтю: OpenSSH#X11 forwarding.

Вимикання та увімкнення пристроїв введення на вимогу

За допомогою xinput ви можете тимчасово вимкнути або ввімкнути пристрої введення. Це може бути корисним, наприклад, у системах, які мають більше однієї миші, наприклад ThinkPad, і ви бажаєте використовувати лише одну, щоб уникнути небажаних кліків мишею.

Встановіть пакунок xorg-xinput.

Знайдіть ім'я або ID пристрою що ви хочете відключити:

$ xinput

Наприклад для Lenovo ThinkPad T500, вивід інформації такий:

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=11   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=12   [slave  keyboard (3)]

Відключити цей пристрій можна командою xinput --disable пристрій, де пристрій це ID пристрою або ім'я пристрою, який ви хочете відключити. У цьому прикладі ми відключимо Synaptics Touchpad з ID 10:

$ xinput --disable 10

Щоби включити знов цей пристрій, просто виконайте команду:

$ xinput --enable 10

Альтернатива - використовуємо ім'я пристрою, ця команда його відключить:

$ xinput --disable "SynPS/2 Synaptics TouchPad"

Постійне вимкнення джерела вхідного сигналу

Ви можете вимкнути певне джерело вхідного сигналу за допомогою фрагмента конфігурації:

/etc/X11/xorg.conf.d/30-disable-device.conf
Section "InputClass"
       Identifier   "disable-device"
       Driver       "назва_драйверу"
       MatchProduct "назва_пристрою"
       Option       "Ignore" "True"
EndSection

device - довільна назва, а назва_драйверу - назва драйвера вводу, наприклад libinput. назва_пристрою - це те, що фактично використовується для зіставлення з відповідним пристроєм. Щодо альтернативних методів визначення правильного пристрою, таких як MatchIsTouchscreen у libinput, зверніться до документації до вашого драйвера вводу. Хоча у цьому прикладі використано libinput, це метод діагностики драйвера, який просто запобігає передачі пристрою до драйвера.

Закриття додатку гарячою клавішею

Запустіть скрипт для гарячої клавіші:

#!/bin/sh
windowFocus=$(xdotool getwindowfocus);
pid=$(xprop -id "$windowFocus" | grep PID);
kill -9 "$pid"

Потрібні пакунки: xorg-xprop, xdotool

Дивіться також #Killing an application visually[broken link: invalid section].

Блокування доступу до TTY

Щоб заблокувати доступ до tty в X, до xorg.conf додати наступне:

Section "ServerFlags"
    Option "DontVTSwitch" "True"
EndSection

Це може бути використано для обмеження доступу до командного рядка в системі, доступної недовіреним користувачам.

Запобігання закриттю X-сервера користувачем

Щоб запобігти втручанню користувача в роботу X-сервера, додайте наступне до xorg.conf:

Section "ServerFlags"
    Option "DontZap"      "True"
EndSection
Примітка: Комбінація Ctrl+Alt+Backspace викликає завершення роботи X-сервера не безпосередньо, а дію Terminate_Server зі схеми клавіатури. Зазвичай її не встановлено за замовчуванням, див. Xorg/Keyboard configuration#Terminating Xorg with Ctrl+Alt+Backspace.

Візуальне закриття програми

Якщо програма поводиться неправильно або застрягла, замість використання kill або killall з термінала і пошуку ідентифікатора або назви процесу, xorg-xkill дозволяє клацнути на цій програмі, щоб закрити її з'єднання з X-сервером. Багато наявних програм справді завершують роботу після закриття з'єднання з X-сервером, але деякі з них можуть продовжити роботу.

Xorg без прав користувача

Xorg може запускатися зі стандартними правами користувача замість root (так званий "без прав користувача" Xorg). Це є значним покращенням безпеки у порівнянні із запуском від імені користувача root. Зауважте, що деякі популярні менеджери дисплеїв не підтримують Xorg без прав користувача (наприклад, LightDM або XDM).

Ви можете перевірити, від імені якого користувача запущено Xorg за допомогою ps -o user= -C Xorg.

Дивіться також Xorg.wrap(1), systemd-logind(8), Systemd/User#Xorg as a systemd user service, Fedora:Changes/XorgWithoutRootRights та FS#41257.

Використання xinitrc

Налаштування безправного Xorg за допомогою xinitrc:

  • Запустіть startx як підпроцес оболонки входу до системи; запускайте startx безпосередньо і не використовуйте exec startx.
  • Переконайтеся, що Xorg використовує віртуальний термінал, для якого було надано дозволи, тобто передано логіном у $XDG_VTNR через .xserverrc.
  • У разі використання певних пропрієтарних драйверів дисплея, налаштування режиму ядра auto-detection не спрацює. У таких випадках вам слід встановити needs_root_rights = no у /etc/X11/Xwrapper.config.

Використання GDM

За замовчуванням GDM запускатиме Xorg без привілеїв користувача root, якщо використано налаштування режиму ядра.

Перенаправлення журналу сеансу

Коли Xorg запущено у режимі без прав користувача, журнали Xorg зберігаються у ~/.local/share/xorg/Xorg.log. Втім, виведення stdout і stderr з сеансу Xorg не перенаправляється до цього журналу. Щоб увімкнути перенаправлення, запустіть Xorg з прапором -keeptty і перенаправте виведення stdout і stderr до файла:

startx -- -keeptty >~/.xorg.log 2>&1

Крім того, скопіюйте /etc/X11/xinit/xserverrc до ~/.xserverrc і додайте -keeptty. Зверніться до [4].

Xorg як Root

Як пояснювалося вище, існують обставини, за яких за замовчуванням використовується Xorg без прав користувача. Якщо у вашій конфігурації це так, і вам потрібно запустити Xorg від імені користувача root, ви можете налаштувати Xorg.wrap(1) так, щоб він вимагав права користувача root:

Попередження: Запуск Xorg від імені користувача root створює проблеми з безпекою. Дивіться #Rootless Xorg[broken link: invalid section] для подальшого обговорення.
/etc/X11/Xwrapper.config
needs_root_rights = yes

Вирішення проблем

Загальне

Якщо виникла проблема, перегляньте журнал, який зберігається у /var/log/ або, за замовчуванням, у ~/.local/share/xorg/ для безкореневого X починаючи з версії 1.16. Користувачам GDM слід перевірити systemd journal. [5]

Файли журналів мають вигляд Xorg.n.log де n номер дисплею. Для однокористувацького комп'ютера зі стандартною конфігурацією типовим журналом часто є Xorg.0.log, але в інших випадках він може відрізнятися. Щоб переконатися, що вибрано правильний файл, можна подивитися на мітку часу початку сеансу X-сервера і на те, з якої консолі його було запущено. Наприклад:

$ grep -e Log -e tty Xorg.0.log
[    40.623] (==) Log file: "/home/archuser/.local/share/xorg/Xorg.0.log", Time: Thu Aug 28 12:36:44 2014
[    40.704] (--) controlling tty is VT number 1, auto-enabling KeepTty
Порада: Щоб стежити за журналом з читабельними для людини мітками часу, виведення tail(1) можна передати до ts(1) (надається пакетом moreutils). Це дасть правильні мітки часу лише для рядків, доданих до журналу під час виконання команди. Наприклад:
$ tail -f ~/.local/share/xorg/Xorg.0.log | ts
  • У файлі журналу слідкуйте за рядками, що починаються з (EE), які позначають помилки, а також (WW), які є попередженнями, що можуть вказувати на інші проблеми.
  • Якщо у вашому каталозі $HOME є "порожній" файл .xinitrc, видаліть або відредагуйте його, щоб X міг запуститися належним чином. Якщо ви цього не зробите, X покаже порожній екран, а у вашому Xorg.0.log не буде жодних помилок. Просто видаливши його, X буде запущено у типовому середовищі X.
  • Якщо екран стає чорним, ви можете спробувати переключитися на іншу віртуальну консоль (наприклад, Ctrl+Alt+F6) та увійти до системи від імені користувача root. Це можна зробити, ввівши root (після введення натисніть Enter) і введіть пароль користувача root (знову ж таки, натисніть Enter після введення).
Ви також можете спробувати вбити X-сервер за допомогою:
# pkill -x X
Якщо це не працює, перезапустіть використовуючи:
# reboot
  • Перевірте окремі сторінки у Category:Input devices, якщо у вас виникли проблеми з клавіатурою, мишею, тачпадом тощо.
  • Шукайте типові проблеми у статтях про AMDGPU, Intel та NVIDIA.

Чорний екран, Не вказано протокол, Ресурс тимчасово недоступний для всіх або деяких користувачів

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

DRI з картами Matrox перестала працювати

Якщо ви використовуєте карту Matrox і DRI перестав працювати після оновлення до Xorg, спробуйте додати цей рядок:

Option "OldDmaInit" "On"

до секції Device, яка посилається на відеокарту у xorg.conf.

Проблеми з кадрово-буферним режимом

X не запускається з наступними повідомленнями журналу:

(WW) Falling back to old probe method for fbdev
(II) Loading sub module "fbdevhw"
(II) LoadModule: "fbdevhw"
(II) Loading /usr/lib/xorg/modules/linux//libfbdevhw.so
(II) Module fbdevhw: vendor="X.Org Foundation"
       compiled for 1.6.1, module version=0.0.2
       ABI class: X.Org Video Driver, version 5.0
(II) FBDEV(1): using default device

Fatal server error:
Cannot run in framebuffer mode. Please specify busIDs for all framebuffer devices

Для виправлення видаліть пакет xf86-video-fbdev.

Програмні запити "font '(null)'"

Повідомлення про помилку: unable to load font `(null)'.

Деякі програми працюють лише з растровими шрифтами. Доступно два основні пакунки з растровими шрифтами: xorg-fonts-75dpi і xorg-fonts-100dpi. Вам не потрібні обидва шрифти; одного з них має бути достатньо. Щоб дізнатися, який з них буде кращим у вашому випадку, спробуйте отримати xdpyinfo з xorg-xdpyinfo, наприклад, так:

$ xdpyinfo | grep resolution

і скористайтеся тим, що ближче до показаного значення.

Відновлення: вимкнення Xorg перед входом у GUI (графічний інтерфейс)

Якщо Xorg налаштовано на автоматичне завантаження і з якихось причин вам потрібно запобігти його запуску до появи входу/менеджера дисплея (наприклад, якщо систему налаштовано неправильно і Xorg не розпізнає введення за допомогою миші або клавіатури), ви можете виконати це завдання двома способами.

  • Змініть default target на rescue.target. Див. systemd#Change default target to boot into.
  • Якщо у вас не лише несправна система, через яку Xorg не працює, але й встановлено нульовий час очікування у меню GRUB, або ви не можете іншим чином використати GRUB для запобігання завантаженню Xorg, ви можете скористатися Arch Linux live CD. Дотримуйтеся вказівок інструкції з встановлення щодо монтування та входження до встановленого Arch Linux. Також спробуйте переключитися на інший tty за допомогою комбінації Ctrl+Alt + функціональна клавіша (зазвичай від F1 до F7, залежно від того, яка з них не використовується у X), увійдіть від імені користувача root і виконайте наведені нижче кроки.

Залежно від налаштувань, вам потрібно буде виконати один або декілька з цих кроків:

X-клієнти, що починаються з "su", не працюють

Якщо ви отримуєте Client is not authorized to connect to server, спробуйте додати рядок:

session        optional        pam_xauth.so

до /etc/pam.d/su та /etc/pam.d/su-l. Тоді pam_xauth правильно встановить змінні середовища і оброблятиме xauth ключі.

X не вдалося запустити: Не вдалося ініціалізувати клавіатуру

Якщо файлову систему (зокрема /tmp) переповнено, startx не вдасться виконати. Файл журналу буде виведено:

(EE) Error compiling keymap (server-0)
(EE) XKB: Could not compile keymap
(EE) XKB: Failed to load keymap. Loading default keymap instead.
(EE) Error compiling keymap (server-0)
(EE) XKB: Could not compile keymap
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
Fatal server error:
Failed to activate core devices.
...

Звільніть місце на відповідній файловій системі й X запуститься.

Зелений екран при спробі переглянути відео

Неправильно встановлено глибину кольору. Наприклад, вона має бути 24 замість 16.

Помилка SocketCreateListener

Якщо X завершує роботу з повідомленням про помилку SocketCreateListener() failed, можливо, вам слід видалити файли сокетів у /tmp/.X11-unix. Це може статися, якщо ви раніше запускали Xorg від імені користувача root (наприклад, для створення xorg.conf).

Недійсний ключ MIT-MAGIC-COOKIE-1 під час спроби запустити програму від користувача root

Ця помилка означає, що лише поточний користувач має доступ до X-сервера. Рішення - надати доступ root:

$ xhost +si:localuser:root

Цей рядок також може бути використано для надання доступу до X іншому користувачеві, окрім root.

Xorg-сервер фатальна помилка сервера: (EE) AddScreen/ScreenInit

Якщо сервер Xorg не працює випадковим чином і в журналі Xorg ви бачите:

systemd-logind: failed to take device /dev/dri/card0: Operation not permitted
...
AddScreen/ScreenInit failed for driver 0

Тоді цю проблему може спричинити проблема 13943 у systemd. Налаштуйте ранній запуск KMS.

Дивіться також