Xorg (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
Xorg
. Дата последней синхронизации: 21 октября 2023. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Автозапуск
Экранный менеджер
Оконный менеджер
Настройка шрифтов
Темы курсора
Среда рабочего стола
Wayland (Русский)
xinit (Русский)
xrandr (Русский)
XDMCP
C
https://www.x.org/wiki/
:
Проект X.Org предоставляет свободную реализацию
X Window System
с открытым исходным кодом. Разработка осуществляется X.Org Foundation, которая является образовательной некоммерческой организацией, совместно с сообществом freedesktop.org.
Xorg
(обычно называемый просто
X
) очень популярен среди пользователей Linux, что привело к тому, что большинство приложений с графическим интерфейсом используют X11, из-за этого Xorg доступен в большинстве дистрибутивов. Для более подробной информации смотрите статью
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 ускорение.
Если и он не найден, тогда Xorg ищет общий драйвер
vesa
(
xf86-video-vesa
), который поддерживает большое количество чипсетов, но не включает 2D или 3D ускорение.
А если и
vesa
не найден, тогда X обратится к режиму
KMS
, который включает ускорение GLAMOR (смотрите
modesetting(4)
).
Для того, чтобы ускорение видео работало, и часто для того, чтобы разблокировать все режимы, в которых может работать GPU, требуется правильный видеодрайвер:
Бренд
Тип
Документация
Драйвер
OpenGL
OpenGL (
multilib
)
Vulkan
Vulkan (
multilib
)
AMD (ранее ATI)
Свободный
AMDGPU
xf86-video-amdgpu
mesa
lib32-mesa
vulkan-radeon
/
amdvlk
AUR
4
lib32-vulkan-radeon
/
lib32-amdvlk
AUR
4
ATI
xf86-video-ati
Нет
Проприетарный
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
or
mesa-amber
3
lib32-mesa
vulkan-intel
lib32-vulkan-intel
NVIDIA
Свободный
Nouveau
1
xf86-video-nouveau
mesa
lib32-mesa
Нет
5
Проприетарный
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 (Русский)#Установка
.
Классические драйверы OpenGL (не-Gallium3D) для старого оборудования (в Mesa 22.0 и выше поддержка классического драйвера i915 прекращена)
Рекомендуется
vulkan-radeon
/
lib32-vulkan-radeon
вместо
amdvlk
AUR
/
lib32-amdvlk
AUR
(смотрите
AMDGPU#Installation
).
NVK
, экспериментальный свободный драйвер Vulkan для видеокарт NVIDIA, как ожидается,
будет добавлен
в
mesa
23.3
Другие видеодрайверы можно найти в группе
xorg-drivers
.
Xorg должен нормально работать без проприетарных драйверов, которые обычно требуются только для дополнительных возможностей, таких как аппаратное ускорение 3D-рендеринга в играх. Исключением из этого правила являются новейшие графические процессоры (особенно видеокарты NVIDIA), которые не поддерживаются драйверами с открытым исходным кодом.
AMD
Соответствие между моделью (например,
Radeon RX 6800
) и архитектурой GPU (например,
RDNA 2
) можно посмотреть здесь:
Wikipedia:ru:Список графических процессоров AMD
.
Архитектура GPU
Свободный драйвер
Проприетарный драйвер
RDNA и новее
AMDGPU
AMDGPU PRO
GCN 3 и новее
GCN 1 и 2
AMDGPU
1
/
ATI
недоступен
TeraScale
и более старые
ATI
недоступен
Экспериментальный.
Запуск
Команду
Xorg(1)
обычно не используют для запуска. Вместо этого оконный сервер X запускают с помощью
экранного менеджера
или
xinit
.
Совет
Вам, скорее всего, понадобится
оконный менеджер
или
среда рабочего стола
в дополнение к X.
Настройка
Примечание
Arch предоставляет файлы конфигурации по умолчанию в
/usr/share/X11/xorg.conf.d/
. Большинству пользователей никакая дополнительная настройка не нужна.
Xorg можно настроить через файл
xorg.conf
и файлы с расширением
.conf
: полный список каталогов, в которых ищутся эти файлы, есть в
xorg.conf(5)
вместе с подробным объяснением всех доступных опций.
Через файлы .conf
Каталог
/etc/X11/xorg.conf.d/
хранит конфигурацию, специфичную для хоста (вашего компьютера). Вы можете свободно добавлять конфигурационные файлы сюда, но они обязательно должны оканчиваться на
.conf
: файлы читаются в алфавитном порядке и по соглашению их имена начинаются с
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
. То же самое относится, если вы желаете использовать другой драйвер.
Чтобы изменить поведение горячего подключения (hotplugging), смотрите раздел
#Настройка
.
Конкретные инструкции есть в статье
libinput
и в упомянутых ниже статьях, а дополнительные примеры можно посмотреть в
Fedora Wiki
.
Идентификация ввода
Смотрите
Keyboard input (Русский)#Определение кодов клавиш в Xorg
.
Ускорение мыши
Смотрите
Mouse acceleration
.
Дополнительные кнопки мыши
Смотрите
кнопки мыши
.
Тачпад
Смотрите
libinput
или
Touchpad Synaptics (Русский)
.
Тачскрин
Смотрите
Touchscreen
.
Настройка клавиатуры
Смотрите
конфигурация клавиатуры в Xorg
.
Настройка монитора
Ручная настройка
Примечание
Новые версии Xorg автоматически всё настраивают, поэтому ручная настройка чаще всего не требуется.
Если Xorg не может обнаружить монитор или если автонастройка не нужна, можно использовать файл конфигурации. Распространённым случаем, когда это необходимо, является система без монитора (headless), которая автоматически запускает 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
для получения общей информации.
Более одной видеокарты
Вы должны определить нужный драйвер для использования и ввести ID шины (bus ID) нужной видеокарты (в десятичном виде).
Section "Device"
    Identifier             "Screen0"
    Driver                 "intel"
    BusID                  "PCI:0:2:0"
EndSection

Section "Device"
    Identifier             "Screen1"
    Driver                 "nouveau"
    BusID                  "PCI:1:0:0"
EndSection
Чтобы узнать ID шины (в шестнадцатеричном виде):
$ 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)
ID шины здесь
0:2:0
и
1:0:0
.
Размер дисплея и DPI
По умолчанию Xorg всегда устанавливает DPI равным 96, начиная с
2009-01-30
. В версии 21.1 было добавлено корректное автоопределение DPI, но оно было
убрано
.
Задать DPI для X-сервера можно с помощью опции командной строки
-dpi
.
Наличие правильного DPI особенно необходимо, когда требуются точные детали (например, рендеринг шрифтов). Ранее производители пытались создать стандарт для 96 DPI (монитор с диагональю размером 10,3 дюйма был бы 800x600, 13,2-дюймовый монитор - 1024x768). Сейчас DPI экранов отличаются и могут быть не равными по горизонтали и по вертикали. Например, 19-дюймовый широкоэкранный ЖК-дисплей с разрешением 1440x900 может иметь DPI 89х87.
Чтобы убедиться, что разрешение вашего дисплея и DPI обнаружены/правильно рассчитаны:
$ xdpyinfo | grep -B2 resolution
Убедитесь, что выведенные размеры (dimensions) соответствуют настоящему размеру вашего монитора.
Если вы знаете физический размер экрана, его можно ввести в конфигурационный файл Xorg так, чтобы был рассчитан правильный DPI (измените
Identifier
в соответствии с выводом вашего 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
Примечание
Если вы используете проприетарный драйвер 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, будут масштабироваться соответственно, рекомендуется устанавливать dpi в 96, 120 (на 25% больше), 144 (на 50% больше), 168 (на 75% больше), 192 (на 100% больше) и так далее, чтобы уменьшить артефакты, которые могут возникнуть при масштабировании элементов интерфейса, использующих растровые изображения. Уменьшение dpi ниже 96 может не привести к уменьшению размера элементов интерфейса, так как обычно наименьшее значение dpi, на которое сделаны значки, равно 96.
Для RandR-совместимых драйверов (например, драйвер ATI с открытым исходным кодом) вы можете установить dpi так:
$ 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 (англ), сигналы управления энергопотреблением дисплеев) — технология, позволяющая настроить энергосбережение монитора, когда компьютер не используется. Она позволит вам автоматически переключить монитор в режим ожидания через определенное время простоя.
Композит
Расширение Composite для X позволяет вывести всё поддерево иерархии окон в буфер вне экрана. Затем приложения могут загружать содержимое этого буфера и делать с ним всё, что им заблагорассудится. Закадровый буфер может автоматически объединяться в родительское окно или объединяться внешними программами, называемыми композитными менеджерами. Для получения дополнительной информации смотрите статью
Wikipedia:ru:Композитный менеджер окон
.
Некоторые оконные менеджеры (например,
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)
Да
Нет
Также содержит инструменты для анализа содержимого экрана (screen scraping). Не может эмулировать F13+.
xdo
xdo
xdo(1)
Нет
Да
Небольшая утилита X для выполнения элементарных действий над окнами.
xdotool
xdotool
xdotool(1)
Да
Да
Очень забагованный
и находится в неактивной разработке, например: имеет сломанный CLI parsing.
[2]
[3]
xvkbd
xvkbd
AUR
xvkbd(1)
Да
Нет
Виртуальная клавиатура для Xorg, также имеет параметр
-text
для отправки символов.
AutoKey
autokey-qt
AUR
autokey-gtk
AUR
documentation
Да
Да
Высокоуровневая мощная утилита для работы с макросами и скриптами, имеющая интерфейсы Qt и GTK.
Смотрите также
Буфер обмена#Инструменты
и
обзор средств автоматизации X
.
Вложенная X-сессия
Для запуска вложенного сеанса другой среды рабочего стола:
$ /usr/bin/Xnest :1 -geometry 1024x768+0+0 -ac -name Windowmaker & wmaker -display :1
Это запустит сеанс Window Maker в окне 1024 на 768 в рамках текущей X-сессии.
Для этого необходим установленный пакет
xorg-server-xnest
.
Более современный подход — использование
Xephyr
.
Запуск приложения без оконного менеджера
Смотрите
xinit (Русский)#Запуск приложений без оконного менеджера
.
Запуск графических программ удалённо
Смотрите основную статью:
Secure Shell (Русский)#Проброс X11
.
Отключение и включение устройств ввода при необходимости
С помощью
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 с ID 10:
$ xinput --disable 10
Чтобы снова включить устройство, просто выполните противоположную команду:
$ xinput --enable 10
Так выглядит команда для выключения устройства (здесь тачпада) через его имя:
$ xinput --disable "SynPS/2 Synaptics TouchPad"
Постоянное отключение устройства ввода
Полностью отключить определённое устройство ввода можно с помощью такой настройки:
/etc/X11/xorg.conf.d/30-disable-
устройство
.conf
Section "InputClass"
       Identifier   "disable-
устройство
"
       Driver       "
имя_драйвера
"
       MatchProduct "
имя_устройства
"
       Option       "Ignore" "True"
EndSection
устройство
— произвольное имя, а
имя_драйвера
— например,
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
Чтобы запретить пользователю закрывать, перезапускать запущенный Xorg, добавьте следующее в файл
xorg.conf
:
Section "ServerFlags"
    Option "DontZap"      "True"
EndSection
Примечание
Непосредственно к завершению работы X-сервера приводит не сочетание клавиш
Ctrl+Alt+Backspace
, а действие
Terminate_Server
из раскладки клавиатуры (keyboard map). По умолчанию это действие обычно не установлено; смотрите
Конфигурация клавиатуры в Xorg#Завершение Xorg по сочетанию клавиш Ctrl+Alt+Backspace
.
Визуальное закрытие приложения
Если приложение ведёт себя некорректно или зависло, вместо использования
kill
или
killall
из терминала и необходимости искать идентификатор или имя процесса можно использовать
xorg-xkill
, который позволяет щёлкнуть по окну проблемного приложения, чтобы закрыть его соединение с X-сервером. Многие существующие приложения действительно завершают свою работу (abort) при закрытии соединения с X-сервером, но некоторые могут продолжить работу.
Использование Xorg без прав суперпользователя
Xorg может запускаться с привилегиями обычного пользователя вместо root (так называемый «Rootless Xorg»). Это значительно повышает безопасность по сравнению с запуском от имени суперпользователя. Обратите внимание, что некоторые популярные
экранные менеджеры
не поддерживают rootless Xorg (например,
LightDM
или
XDM
).
Проверить, от имени какого пользователя запущен Xorg, можно с помощью команды
ps -o user= -C Xorg
.
Смотрите также
Xorg.wrap(1)
,
systemd-logind(8)
,
systemd/Пользователь#Xorg как пользовательская служба systemd
,
Fedora:Changes/XorgWithoutRootRights
и
FS#41257
.
Через xinitrc
Чтобы настроить запуск rootless Xorg с использованием
xinitrc
:
Запускайте startx как подпроцесс оболочки входа (login shell); запускайте
startx
напрямую и не используйте
exec startx
.
Убедитесь, что Xorg использует виртуальный терминал, для которого были установлены права доступа, то есть который logind передал в
$XDG_VTNR
через
.xserverrc
.
При использовании некоторых проприетарных драйверов дисплея
автоопределение
kernel mode setting
может оказаться неудачным. В этом случае в файле
/etc/X11/Xwrapper.config
укажите
needs_root_rights = no
.
Через GDM
При использовании
kernel mode setting
по умолчанию
GDM
запускает Xorg без прав root.
Перенаправление журнала сеанса
Пока журналы пользователя Xorg хранятся в
~/.local/share/xorg/Xorg.log
, они не включают вывод X-сессии. Чтобы повторно включить перенаправление, запустите X с флагом
-keeptty
:
startx -- -keeptty >~/.xorg.log 2>&1
Или скопируйте
/etc/X11/xinit/xserverrc
в
~/.xserverrc
и добавьте
-keeptty
. Для получения дополнительной информации смотрите
[4]
.
Использование Xorg с правами суперпользователя
Как упоминалось выше, иногда по умолчанию используется Xorg без права root. Если это ваш случай и у вас есть необходимость запускать Xorg от имени root, вы можете настроить
Xorg.wrap(1)
на требование root:
Важно
Запуск Xorg от имени root создаёт проблемы безопасности. Подробнее в разделе
#Использование Xorg без прав суперпользователя
.
/etc/X11/Xwrapper.config
needs_root_rights = yes
Решение проблем
Общее
Если произошла какая-то проблема с X, посмотрите лог (журнал), хранящийся в
/var/log/
или для пользователей без рут-доступа в
~/.local/share/xorg/
(по умолчанию с версии 1.16). Пользователям
GDM
следует проверить
журнал systemd
.
[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)
, которые предупреждают об возможных других проблемах.
Если файл
.xinitrc
пустой
в
$HOME
, то его необходимо или удалить, или изменить для правильной загрузки X. Не сделав этого, вы получите пустой экран, а в журнале возможно
Xorg.0.log
не будет ошибок. Просто удалив его, у вас будет запускаться стандартное окружение X.
Если экран становится чёрным, вы всё ещё можете попытаться переключиться на другую виртуальную консоль (например,
Ctrl+Alt+F6
), и вслепую войти в систему как root. Чтобы сделать это, введите логин
root
(нажмите
Enter
после ввода), а потом введите пароль (снова нажмите
Enter
после ввода).
Вы можете попытаться завершить X сервер через:
# pkill -x X
Если это не сработало, просто перезагрузитесь:
# reboot
Если у вас проблемы с устройствами ввода (клавиатурой, мышкой, тачпадом, и т.д.), смотрите страницы в
Category:Input devices (Русский)
.
Смотрите также решение проблем в статьях
AMDGPU (Русский)
,
Intel graphics (Русский)
и
NVIDIA (Русский)
.
Чёрный экран, No protocol specified, Resource temporarily unavailable для всех или некоторых пользователей
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
и используйте тот шрифт, у которого dpi ближе к показанному значению.
Восстановление: отключение Xorg перед входом в GUI
Если Xorg настроен на автозапуск и по какой-то причине вам нужно предотвратить его запуск до менеджера входа/экранного менеджера (например, если ваша система неправильно настроена и Xorg не распознает ввод с помощью мыши или клавиатуры), вы можете решить эту задачу двумя способами.
Изменить цель по умолчанию на
rescue.target
. Для получения дополнительной информации смотрите
systemd (Русский)#Изменение цели загрузки по умолчанию
.
Если у вас не только сломанная система, которая делает Xorg непригодным для использования, но также задержка меню GRUB установлена в ноль, или никак иначе нельзя использовать GRUB для предотвращения загрузки Xorg, вы можете использовать установочный образ Arch Linux. Следуйте
руководству по установке
до момента монтирования разделов и выполните chroot в установленный Arch Linux. Другой вариант — попытайтесь переключиться на другую
tty
с помощью сочетания клавиш
Ctrl+Alt
+ функциональная клавиша (обычно от
F1
до
F7
в зависимости от того, на какой не запущен X), войдите как root и следуйте шагам ниже.
В зависимости от настройки, вам необходимо выполнить один или более шагов:
Отключите
экранный менеджер
.
Отключите
автозапуск X при входе в систему
.
Переименуйте файл
~/.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
не запустится. В конце журнала
/var/log/Xorg.0.log
будет:
(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
Освободите место на соответствующей файловой системе, и X сервер запустится.
Зелёный экран при попытке просмотра видео
У вас неправильно установлена цветовая глубина. Например, требуется 24 вместо 16.
Ошибка SocketCreateListener
Если X завершаются с сообщением об ошибке
SocketCreateListener() failed
, удалите файлы сокета в
/tmp/.X11-unix
. Это может происходить после того, как вы ранее запускали Xorg с правами суперпользователя (например, для создания
xorg.conf
).
Неверный ключ MIT-MAGIC-COOKIE-1 при попытке запустить программу от имени суперпользователя
Эта ошибка означает, что только текущий пользователь имеет доступ к X-серверу. Решение состоит в том, чтобы предоставить доступ для суперпользователя:
$ xhost +si:localuser:root
Эта строка также может быть использована для предоставления доступа к X другому пользователю, нежели root.
Фатальная ошибка сервера: (EE) AddScreen/ScreenInit
Если Xorg-server не работает случайным образом и в логе Xorg вы видите:
systemd-logind: failed to take device /dev/dri/card0: Operation not permitted
...
AddScreen/ScreenInit failed for driver 0
Тогда это может быть вызвано
проблемой systemd #134943
. Настройте
ранний запуск KMS
.
Смотрите также
Xplain
— подробное объяснение оконной системы X
Xorg(1)
— справочная страница Xorg
Prepare for LPIC-1 exam 2 - topic 106.1: X11
— кратко описывает архитектуру,
настройку
,
среды рабочего стола
, удалённое использование,
Wayland
.
xorg.conf(5)
Gentoo:Xorg/Guide#Configuration
— статья о конфигурации Xorg на Gentoo Wiki