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. Її поширеність призвела до того, що вона стала необхідною умовою для додатків з графічним інтерфейсом, що призвело до масового використання у більшості дистрибутивів. Дивіться статтю X Window System у Вікіпедії або перейдіть на веб-сайт Xorg, щоб дізнатися більше.

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

Xorg може бути встановлена з пакунком xorg-server.

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

Нарешті, також доступна група xorg, яка включає в себе серверні пакунки Xorg, пакунки з групи xorg-apps і шрифтів.

Порада: Зазвичай встановлюють менеджер вікон або середовище стільниці для доповнення X.

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

Ядро Linux включає відео драйвери з відкритим вихідним кодом і підтримку апаратно прискорюваних фрейм-буферів. Однак для підтримки OpenGL і 2D прискорення в X11 потрібне втручання користувача.

По-перше, ідентифікуйте вашу картку:

$ lspci | grep -e VGA -e 3D

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

$ pacman -Ss xf86-video

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

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

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

Brand Type Driver OpenGL OpenGL (multilib) Documentation
AMD / ATI Open source xf86-video-amdgpu mesa lib32-mesa AMDGPU
xf86-video-ati ATI
Intel Open source xf86-video-intel mesa lib32-mesa Intel graphics
NVIDIA Open source xf86-video-nouveau mesa lib32-mesa Nouveau
Proprietary nvidia nvidia-utils lib32-nvidia-utils NVIDIA
nvidia-390xx-dkmsAUR nvidia-390xx-utilsAUR lib32-nvidia-390xx-utilsAUR
nvidia-340xxAUR nvidia-340xx-utilsAUR lib32-nvidia-340xx-utilsAUR
Примітка:
  • Для NVIDIA Optimus на ноутбуках, в яких використовується вбудована відеокарта в поєднанні з виділеним GPU, дивіться NVIDIA Optimus або Bumblebee.
  • Для графіки Intel 4-го покоління і вище див. Intel graphics#Installation для доступних драйверів.

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

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

AMD

GPU architecture Radeon cards Open-source driver Proprietary driver
GCN 4
and newer
варіанти AMDGPU AMDGPU PRO
GCN 3 AMDGPU AMDGPU PRO
GCN 2 AMDGPU* / ATI недоступний
GCN 1 AMDGPU* / ATI недоступний
TeraScale 2&3 HD 5000 - HD 6000 ATI недоступний
TeraScale 1 HD 2000 - HD 4000 недоступний
Older X1000 and older недоступний
*: Експериментальні

Запуск

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

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

Примітка: 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                 "nouveau"
    BusID                  "PCI:0:12:0"
EndSection

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

Щоби взнати BusID:

$ lspci | grep VGA
01:00.0 VGA compatible controller: nVidia Corporation G96 [GeForce 9600M GT] (rev a1)

Bus ID тут 1:0:0.

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

The factual accuracy of this article or section is disputed.

Reason: Xorg завжди обирає dpi рівним 96. Дивіться обговорення тут, тут і нарешті тут. (Discuss in Talk:Xorg (Українська))

DPI X-сервера визначається наступним чином:

  1. Параметр командного рядка -dpi має найвищий пріоритет.
  1. Якщо це не використовується, параметр DisplaySize у конфігураційному файлі Xorg використовується для виведення DPI, враховуючи дозвіл екрана.
  1. Якщо не заданий параметр DisplaySize, значення розміру монітора використовуються з DDC для виведення DPI, враховуючи дозвіл екрана.
  2. Якщо DDC не визначає розмір, 75 DPI використовуються типово.

Щоб отримати правильну кількість точок на дюйм (DPI), розмір дисплея повинен бути розпізнаний або встановлений. Наявність правильного DPI є особливо необхідним, коли потрібні дрібні деталі (наприклад, візуалізація шрифтів). Раніше виробники намагалися створити стандарт для 96 DPI (діагональний монітор розміром 10,3" був би 800x600, монітор 13,2" - 1024x768). В наш час DPI екрану різняться і можуть бути не рівними по горизонталі і вертикалі. Наприклад, 19-дюймовий широкоформатний РК-дисплей на 1440x900 може мати DPI 89x87. Щоб встановити DPI, сервер Xorg намагається автоматично визначити фізичний розмір екрану монітора за допомогою графічної карти з DDC. Коли сервер Xorg знає фізичний розмір екрану, він зможе встановити правильний DPI в залежності від розміру дозволу.

Щоб дізнатися, чи правильно визначено/розраховано розмір дисплея та 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

Якщо у вас немає в документації інформації про ширину та висоту екрана (більшість специфікацій наведено лише за діагональним розміром), можна використовувати власне дозвіл монітора (або співвідношення сторін) і діагональний розмір для обчислення горизонтальних і вертикальних фізичних розмірів. Використання теореми Піфагора на екрані діагоналі 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 можна встановити вручну, якщо ви плануєте використовувати лише одну роздільну здатність (калькулятор DPI[мертве посилання 2023-10-29 ⓘ]):

Section "Monitor"
    Identifier             "Monitor0"
    Option                 "DPI" "96 x 96"
EndSection

Ви можете вручну встановити DPI, додавши нижче опції /etc/X11/xorg.conf.d/20-nvidia.conf (в секції Device):

Option              "UseEdidDpi" "False"
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
  • Unagi — Модульний композитний менеджер, який написаний на С і базується на XCB
https://projects.mini-dweeb.org/projects/unagi || unagiAUR

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

This article or section needs expansion.

Reason: Згадування xorg-xkill. (Discuss in Talk:Xorg (Українська))

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

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

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

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

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

This article or section needs expansion.

Reason: згадування xephyr (Discuss in Talk:Xorg (Українська))

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

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

Це запустить сеанс Window Maker у вікні 1024x768 у поточній сесії X.

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

Запуск програм 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"

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

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

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

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

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

This article or section needs expansion.

Reason: Навіщо вам це робити? (Discuss in Talk:Xorg (Українська))

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

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

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

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

Section "ServerFlags"
    Option "DontZap"      "True"
EndSection

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

Загальне

If a problem occurs, view the log stored in either /var/log/ or, for the rootless X default since v1.16, in ~/.local/share/xorg/. GDM users should check the systemd journal. [4]

The logfiles are of the form Xorg.n.log with n being the display number. For a single user machine with default configuration the applicable log is frequently Xorg.0.log, but otherwise it may vary. To make sure to pick the right file it may help to look at the timestamp of the X server session start and from which console it was started. For example:

$ 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
  • In the logfile then be on the lookout for any lines beginning with (EE), which represent errors, and also (WW), which are warnings that could indicate other issues.
  • If there is an empty .xinitrc file in your $HOME, either delete or edit it in order for X to start properly. If you do not do this X will show a blank screen with what appears to be no errors in your Xorg.0.log. Simply deleting it will get it running with a default X environment.
  • If the screen goes black, you may still attempt to switch to a different virtual console (e.g. Ctrl+Alt+F2), and blindly log in as root. You can do this by typing root (press Enter after typing it) and entering the root password (again, press Enter after typing it).
You may also attempt to kill the X server with:
# pkill -x X
If this does not work, reboot blindly with:
# reboot

Black screen, No protocol specified.., Resource temporarily unavailable for all or some users

X creates configuration and temporary files in current user's home directory. Make sure there is free disk space available on the partition your home directory resides in. Unfortunately, X server does not provide any more obvious information about lack of disk space in this case.

DRI with Matrox cards stopped working

If you use a Matrox card and DRI stopped working after upgrading to Xorg, try adding the line:

Option "OldDmaInit" "On"

to the Device section that references the video card in xorg.conf.

Frame-buffer mode problems

If X fails to start with the following log messages,

(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

Uninstall the xf86-video-fbdev package.

Program requests "font '(null)'"

Error message: unable to load font `(null)'. Some programs only work with bitmap fonts. Two major packages with bitmap fonts are available, xorg-fonts-75dpi and xorg-fonts-100dpi. You do not need both; one should be enough. To find out which one would be better in your case, try xdpyinfo from xorg-xdpyinfo, like this:

$ xdpyinfo | grep resolution

and use what is closer to the shown value.

Recovery: disabling Xorg before GUI login

If Xorg is set to boot up automatically and for some reason you need to prevent it from starting up before the login/display manager appears (if the system is wrongly configured and Xorg does not recognize your mouse or keyboard input, for instance), you can accomplish this task with two methods.

  • Change default target to rescue.target. See systemd#Change default target to boot into.
  • If you have not only a faulty system that makes Xorg unusable, but you have also set the GRUB menu wait time to zero, or cannot otherwise use GRUB to prevent Xorg from booting, you can use the Arch Linux live CD. Follow the installation guide about how to mount and chroot into the installed Arch Linux. Alternatively try to switch into another tty with Ctrl+Alt + function key (usually from F1 to F7 depending on which is not used by X), login as root and follow steps below.

Depending on setup, you will need to do one or more of these steps:

X clients started with "su" fail

If you are getting "Client is not authorized to connect to server", try adding the line:

session        optional        pam_xauth.so

to /etc/pam.d/su and /etc/pam.d/su-l. pam_xauth will then properly set environment variables and handle xauth keys.

X failed to start: Keyboard initialization failed

If the filesystem (specifically /tmp) is full, startx will fail. /var/log/Xorg.0.log will end with:

(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.
Please consult the The X.Org Foundation support at http://wiki.x.org
for help.
Please also check the log file at "/var/log/Xorg.0.log" for additional information.
(II) AIGLX: Suspending AIGLX clients for VT switch

Make some free space on the relevant filesystem and X will start.

Rootless Xorg

Xorg may run with standard user privileges with the help of systemd-logind(8), see [5] and FS#41257. The requirements for this are:

  • Starting X via xinit; display managers are not supported
  • Kernel mode setting; implementations in proprietary display drivers fail auto-detection and require manually setting needs_root_rights = no in /etc/X11/Xwrapper.config.

If you do not fit these requirements, re-enable root rights in /etc/X11/Xwrapper.config:

/etc/X11/Xwrapper.config
needs_root_rights = yes

See also Xorg.wrap(1) and Systemd/User#Xorg as a systemd user service.

GDM also runs Xorg without root privileges by default when Kernel mode setting is used.

Broken redirection

While user Xorg logs are stored in ~/.local/share/xorg/Xorg.log, they do not include the output from the X session. To re-enable redirection, start X with the -keeptty flag:

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

Or copy /etc/X11/xinit/xserverrc to ~/.xserverrc, and append -keeptty. See [6].

A green screen whenever trying to watch a video

Your color depth is set wrong. It may need to be 24 instead of 16, for example.

SocketCreateListener error

If X terminates with error message "SocketCreateListener() failed", you may need to delete socket files in /tmp/.X11-unix. This may happen if you have previously run Xorg as root (e.g. to generate an xorg.conf).

Invalid MIT-MAGIC-COOKIE-1 key when trying to run a program as root

That error means that only the current user has access to the X server. The solution is to give access to root:

$ xhost +si:localuser:root

That line can also be used to give access to X to a different user than root.

See also

  • Xplain - In-depth explanation of the X Window System