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

Повʼязані статті
Autostarting
Display manager (Українська)
Window manager (Українська)
Font configuration
Cursor themes
Desktop environment (Українська)
Wayland
xinit
xrandr
XDMCP
З
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
/
amdvlk
AUR
4
lib32-vulkan-radeon
/
lib32-amdvlk
AUR
4
ATI
xf86-video-ati
Немає
Proprietary
AMDGPU PRO
xf86-video-amdgpu
amdgpu-pro-oglp
AUR
lib32-amdgpu-pro-oglp
AUR
vulkan-amdgpu-pro
AUR
lib32-vulkan-amdgpu-pro
AUR
Intel
Відкритий код
Intel graphics
xf86-video-intel
2
mesa
або
mesa-amber
3
lib32-mesa
vulkan-intel
lib32-vulkan-intel
NVIDIA
Відкритий код
Nouveau
1
xf86-video-nouveau
mesa
lib32-mesa
vulkan-nouveau
lib32-vulkan-nouveau
Власність виробника
NVIDIA
1
nvidia
[
пакет відсутній
: package not found]
nvidia-utils
lib32-nvidia-utils
nvidia-utils
lib32-nvidia-utils
nvidia-470xx-dkms
AUR
nvidia-470xx-utils
AUR
lib32-nvidia-470xx-utils
AUR
nvidia-470xx-utils
AUR
lib32-nvidia-470xx-utils
AUR
nvidia-390xx-dkms
AUR
nvidia-390xx-utils
AUR
lib32-nvidia-390xx-utils
AUR
nvidia-390xx-utils
AUR
lib32-nvidia-390xx-utils
AUR
Для ноутбуків з підтримкою NVIDIA Optimus, які використовують інтегровану відеокарту у поєднанні з виділеним графічним процесором, див.
NVIDIA Optimus
.
Для графічних процесорів Intel 4-го покоління і вище див.
Intel graphics#Installation
щодо доступних драйверів.
Класичні драйвери OpenGL (не Gallium3D) для старішого обладнання (Mesa 22.0 і вище не підтримує класичний драйвер i915)
vulkan-radeon
/
lib32-vulkan-radeon
рекомендовано замість
amdvlk
AUR
/
lib32-amdvlk
AUR
(див.
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
не доступно
GCN 3 і пізніше
GCN 1&2
AMDGPU
1
/
ATI
не доступно
TeraScale
та старіші
ATI
не доступно
Експериментальний.
Запуск
Команду
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
.
Примітка
Ключові слова файлу конфігурації нечутливі до регістру, символи "_" ігноруються. Більшість рядків (включаючи назви опцій) також нечутливі до регістру, пробілу та символу "_".
Пристрої введення
Для пристроїв введення даних 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
.
Налаштування клавіатури
Дивіться
Xorg (Українська)/Keyboard configuration (Українська)
.
Налаштування монітору
Ручне налаштування
Примітка
Новіші версії 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:
NVIDIA#Multiple monitors
ATI#Multihead setup
Більш ніж одна графічна карта
Ви повинні визначити правильний драйвер для використання і ввести 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-plus
AUR
Поради та підказки
Автоматизація
У цьому розділі перелічено утиліти для автоматизації введення та виведення клавіатури / миші, операцій з вікнами (наприклад переміщення, зміна розміру або фокусування).
Інструмент
Пакет
Документація
Емуляція
введення
Операції
з вікнами
Примітка
xautomation
xautomation
xte(1)
Так
Ні
Також містить інструменти для очищення екрана. Не може емулювати
F13
+.
xdo
xdo
xdo(1)
Ні
Так
Невелика утиліта X для виконання елементарних дій над вікнами.
xdotool
xdotool
xdotool(1)
Так
Так
Багато помилок
і не перебуває в активній розробці, наприклад: зламався парсинг CLI.
[2]
[3]
xvkbd
xvkbd
AUR
xvkbd(1)
Так
Ні
Віртуальна клавіатура для Xorg, також має параметр
-text
для надсилання символів.
AutoKey
autokey-qt
AUR
autokey-gtk
AUR
документація
Так
Так
Високорівнева, потужна утиліта для написання макросів і сценаріїв, з інтерфейсами 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
Дивіться також
#Візуальне закриття програми
.
Блокування доступу до 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 (Українська)#Зупинка Xorg з 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 створює проблеми з безпекою. Дивіться
#Xorg без прав користувача
для подальшого обговорення.
/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 і виконайте наведені нижче кроки.
Залежно від налаштувань, вам потрібно буде виконати один або декілька з цих кроків:
Вимкнути
менеджер дисплеїв
.
Вимкнути
автоматичний запуск Х
.
Перейменуйте файл
~/.xinitrc
або закоментуйте рядок
exec
у ньому.
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
.
Дивіться також
Xplain
- поглиблене пояснення системи X Window System
Xorg(1)
Підготовка до іспиту LPIC-1 2 - тема 106.1: X11
- коротко описує архітектуру,
#Конфігурація
,
оточення робочого столу
, віддалене використання,
Wayland
.
xorg.conf(5)
Gentoo:Xorg/Guide#Configuration