106.1 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
106 Інтерфейси користувача та робочі столи |
Тема: |
106.1 Встановлення та налаштування X11 |
Урок: |
1 з 1 |
Вступ
X Window System — це програмний стек, який використовується для відображення тексту та графіки на екрані. Загальний вигляд і дизайн X-клієнта не визначаються системою X Window, а натомість обробляються кожним окремим X-клієнтом, менеджером вікон (наприклад, Window Maker, Tab Window Manager) або повним середовищем робочого столу, таким як KDE, GNOME або Xfce. Робочі середовища будуть розглянуті в наступному уроці. Цей урок буде зосереджений на основній архітектурі та загальних інструментах для системи X Window, які адміністратор використовуватиме для налаштування X.
Система X Window є кросплатформною та працює на різних операційних системах, таких як Linux, BSD, Solaris та інших Unix-подібних системах. Також доступні реалізації для macOS від Apple і Microsoft Windows.
Основною версією протоколу X, що використовується в сучасних дистрибутивах Linux, є X.org версія 11, зазвичай записується як X11. Протокол X — це механізм зв’язку між X-клієнтом і X-сервером. Відмінності між X-клієнтом і X-сервером будуть розглянуті нижче.
Note
|
Попередником X Window System була віконна система під назвою W, яка була спільною розробкою IBM, DEC і MIT. Це програмне забезпечення виникло в Project Athena в 1984 році. Коли розробники почали роботу над новим дисплеєм, вони вибрали наступну літеру англійського алфавіту: “X”. Еволюція системи X Window наразі контролюється MIT X Consortium. |
Архітектура системи X Window
X Window System надає механізми для відтворення базових двовимірних форм (і тривимірних форм через розширення) на дисплеї. Вона розділена на клієнта та сервер, і в більшості установок, де потрібен графічний робочий стіл, обидва ці компоненти знаходяться на одному комп’ютері. Клієнтський компонент приймає форму програми, такої як емулятор терміналу, гра або веб-браузер. Кожна клієнтська програма інформує X-сервер про розташування та розмір свого вікна на екрані комп’ютера. Клієнт також обробляє те, що надходить у це вікно, а X-сервер розміщує запитуване зображення на екрані. Система X Window також обробляє вхідні дані з таких пристроїв, як миші, клавіатури, трекпади тощо.
Система X Window підтримує роботу в мережі, і кілька X-клієнтів з різних комп’ютерів у мережі можуть надсилати запити на малювання до одного віддаленого X-сервера. Це пояснюється тим, що адміністратор або користувач може отримати доступ до графічної програми на віддаленій системі, яка може бути недоступна в їхній локальній системі.
Ключовою особливістю системи X Window є її модульність. Протягом існування системи X Window було розроблено нові функції та додано до її структури. Ці нові компоненти були додані лише як розширення до X-сервера, залишивши основний протокол X11 без змін. Ці розширення містяться у файлах бібліотеки Xorg. Приклади бібліотек Xorg включають: libXrandr
, libXcursor
, libX11
, libxkbfile
, а також кілька інших, кожна з яких надає розширену функціональність для X-сервера.
Менеджер дисплея забезпечує графічний вхід до системи. Ця система може бути локальним комп’ютером або комп’ютером у мережі. Менеджер дисплея запускається після завантаження комп’ютера та запускає сеанс X-сервера для автентифікованого користувача. Менеджер дисплея також відповідає за підтримку та роботу X-сервера. Приклади менеджерів дисплеїв: GDM, SDDM і LightDM.
Кожен екземпляр запущеного X-сервера має display name для його ідентифікації. Display name містить наступне:
hostname:displaynumber.screennumber
Display name також вказує графічній програмі, де його слід відобразити та на якому хості (якщо використовується віддалене X-з’єднання).
hostname
відноситься до назви системи, яка відображатиме програму. Якщо hostname відсутнє у display name, тоді передбачається localhost.
displaynumber
посилається на колекцію “екранів”, які використовуються, чи то один екран ноутбука, чи кілька екранів на робочій станції. Кожному запущеному сеансу X-сервера надається display number, починаючи з 0
.
screennumber
за умовчанням дорівнює 0
. Це може бути, якщо є лише один фізичний екран або кілька фізичних екранів налаштовані для роботи як один екран. Коли всі екрани в налаштуваннях із кількома моніторами об’єднані в один логічний екран, вікна програм можна вільно переміщувати між екранами. У ситуаціях, коли кожен екран налаштовано на роботу незалежно один від одного, на кожному екрані будуть розміщені вікна програм, які відкриваються в них, і вікна не можна переміщати з одного екрана на інший. Кожен дисплейний екран матиме власний номер. Якщо використовується лише один логічний екран, то крапка та номер екрана опускаються.
Display name запущеного X-сеансу зберігається в змінній середовища DISPLAY
:
$ echo $DISPLAY :0
Наведемо детальний опис отриманого результату:
-
X-сервер, який використовується, знаходиться в локальній системі, тому ліворуч від двокрапки нічого не друкується.
-
Поточний сеанс X-сервера є першим, на що вказує
0
відразу після двокрапки. -
Використовується лише один логічний екран, тому номер екрана не видно.
Щоб детальніше проілюструвати цю концепцію, зверніться до наступної діаграми:
(A): Один монітор із конфігурацією одного дисплея та лише одним екраном.
(B): Налаштовано як один дисплей із двома фізичними моніторами, налаштованими як один екран. Вікна програм можна вільно переміщати між двома моніторами.
(C):: Конфігурація єдиного дисплея (на що вказує :0
), однак кожен монітор є незалежним екраном. Обидва екрани використовуватимуть ті самі пристрої введення, наприклад, клавіатуру та мишу, однак програму, відкриту на екрані :0.0
, не можна перемістити на екран :0.1
і навпаки.
Щоб запустити програму на певному екрані, призначте номер екрана змінній середовища DISPLAY
перед запуском програми:
$ DISPLAY=:0.1 firefox &
Ця команда запустить веб-браузер Firefox на екрані праворуч на діаграмі вище. Деякі набори інструментів також надають параметри командного рядка, щоб вказати програмі працювати на певному екрані. Перегляньте --screen
і --display
на man-сторінці gtk-options(7)
для прикладу.
Конфігурація X-сервера
Традиційно основним конфігураційним файлом, який використовується для налаштування X-сервера, є файл /etc/X11/xorg.conf
. У сучасних дистрибутивах Linux X-сервер налаштовуватиме себе під час свого запуску, тому файл xorg.conf
може не існувати.
Файл xorg.conf
розділений на окремі частини, які називаються розділи (sections). Кожен розділ починається з терміну Section
, а після цього терміну йде ім’я розділу, яке вказує на конфігурацію компонента. Кожен Section
завершується відповідним EndSection
. Типовий файл xorg.conf
містить такі розділи:
InputDevice
-
Використовується для налаштування певної моделі клавіатури чи миші.
InputClass
-
У сучасних дистрибутивах Linux цей розділ зазвичай знаходиться в окремому файлі конфігурації, розташованому в папці
/etc/X11/xorg.conf.d/
.InputClass
використовується для налаштування класу апаратних пристроїв, таких як клавіатури та миші, а не окремого апаратного забезпечення. Нижче наведено приклад файлу/etc/X11/xorg.conf.d/00-keyboard.conf
:Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "us" Option "XkbModel" "pc105" EndSection
Параметр для
XkbLayout
визначає розкладку клавіш на клавіатурі, наприклад Дворака, для лівої чи правої руки, QWERTY і мову. Параметр дляXkbModel
використовується для визначення типу клавіатури, що використовується. Таблицю моделей, розкладок та їхніх описів можна знайти вxkeyboard-config(7)
. Файли, пов’язані з розкладками клавіатури, можна знайти в/usr/share/X11/xkb
. Приклад грецької політонічної розкладки клавіатури на комп’ютері Chromebook буде мати такий вигляд:Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "gr(polytonic)" Option "XkbModel" "chromebook" EndSection
Крім того, розкладку клавіатури можна змінити під час запущеного сеансу X за допомогою команди
setxkbmap
. Ось приклад цієї команди, яка налаштовує грецький політонічний макет на комп’ютері Chromebook:$ setxkbmap -model chromebook -layout "gr(polytonic)"
Це налаштування діятиме лише доки використовується сеанс X. Щоб зробити такі зміни постійними, змініть файл
/etc/X11/xorg.conf.d/00-keyboard.conf
, включивши необхідні налаштування.NoteКоманда
setxkbmap
використовує X Keyboard Extension (XKB). Це приклад додаткової функціональності системи X Window завдяки використанню розширень.Сучасні дистрибутиви Linux надають команду
localectl
черезsystemd
, яка ітакож може використовувати для зміни розкладки клавіатури та автоматично створює файл конфігурації/etc/X11/xorg.conf.d/00-keyboard.conf
. Ось ще раз приклад налаштування грецької політонічної клавіатури на Chromebook, цього разу за допомогою командиlocalectl
:$ localectl --no-convert set-x11-keymap "gr(polytonic)" chromebook
Параметр
--no-convert
використовується тут, щоб завадитиlocalectl
змінювати розкладку клавіш консолі хоста. Monitor
-
Розділ
Monitor
описує фізичний монітор, який використовується, і місце, куди його підключено. Ось приклад конфігурації апаратного монітора, підключеного до другого порту дисплея, який використовується як основний монітор.Section "Monitor" Identifier "DP2" Option "Primary" "true" EndSection
Device
-
У розділі
Device
описується фізична відеокарта, яка використовується. Розділ також містить модуль ядра, який використовується як драйвер для відеокарти, а також його фізичне розташування на материнській платі.Section "Device" Identifier "Device0" Driver "i915" BusID "PCI:0:2:0" EndSection
Screen
-
Розділ
Screen
об’єднує розділиMonitor
іDevice
. Приклад розділуScreen
може мати такий вигляд:Section "Screen" Identifier "Screen0" Device "Device0" Monitor "DP2" EndSection
ServerLayout
-
Розділ
ServerLayout
об’єднує всі розділи, такі як миша, клавіатура та екрани, в один інтерфейс X Window System.Section "ServerLayout" Identifier "Layout-1" Screen "Screen0" 0 0 InputDevice "mouse1" "CorePointer" InputDevice "system-keyboard" "CoreKeyboard" EndSection
Note
|
У конфігураційному файлі можна знайти не всі розділи. У випадках, коли розділ відсутній, значення за замовчуванням надаються запущеним екземпляром X-сервера. |
Зазначені користувачем конфігураційні файли також знаходяться в /etc/X11/xorg.conf.d/
. Файли конфігурації, які надаються дистрибутивом, знаходяться в /usr/share/X11/xorg.conf.d/
. Конфігураційні файли, розташовані в /etc/X11/xorg.conf.d/
, аналізуються перед файлом /etc/X11/xorg.conf
, якщо він існує в системі.
Команда xdpyinfo
використовується на комп’ютері для відображення інформації про запущений екземпляр X-сервера. Нижче наведено зразок результату команди:
$ xdpyinfo name of display: :0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 12004000 X.Org version: 1.20.4 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst number of supported pixmap formats: 7 supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 4, bits_per_pixel 8, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 255 focus: None number of extensions: 25 BIG-REQUESTS Composite DAMAGE DOUBLE-BUFFER DRI3 GLX Generic Event Extension MIT-SCREEN-SAVER MIT-SHM Present RANDR RECORD RENDER SECURITY SHAPE SYNC X-Resource XC-MISC XFIXES XFree86-VidModeExtension XINERAMA XInputExtension XKEYBOARD XTEST XVideo default screen number: 0 number of screens: 1 screen #0: dimensions: 3840x1080 pixels (1016x286 millimeters) resolution: 96x96 dots per inch depths (7): 24, 1, 4, 8, 15, 16, 32 root window id: 0x39e depth of root window: 24 planes number of colormaps: minimum 1, maximum 1 default colormap: 0x25 default number of colormap cells: 256 preallocated pixels: black 0, white 16777215 options: backing-store WHEN MAPPED, save-unders NO largest cursor: 3840x1080 current input event mask: 0xda0033 KeyPressMask KeyReleaseMask EnterWindowMask LeaveWindowMask StructureNotifyMask SubstructureNotifyMask SubstructureRedirectMask PropertyChangeMask ColormapChangeMask number of visuals: 270 ...
Більш релевантні частини результату виділено жирним шрифтом, наприклад, display name (таке саме, як і вміст змінної середовища DISPLAY
), інформація про версію X-сервера, що використовується, кількість і список Xorg-розширеннь, які використовуються, та додаткова інформація про сам екран.
Створення базового файлу Xorg-конфігурації
Незважаючи на те, що X створить свою конфігурацію після запуску системи на встановлених сучасних Linux, файл xorg.conf
все ще можна використовувати. Щоб створити постійний файл /etc/X11/xorg.conf
, виконайте таку команду:
$ sudo Xorg -configure
Note
|
Якщо сеанс X вже запущено, вам потрібно буде вказати інший $ sudo Xorg :1 -configure |
У деяких дистрибутивах Linux команду X
можна використовувати замість Xorg
, оскільки X
є символьним посиланням на Xorg
.
У вашому поточному робочому каталозі буде створено файл xorg.conf.new. Вміст цього файлу отримано з того, що X-сервер виявив доступним в апаратному забезпеченні та драйверах локальної системи. Щоб використовувати цей файл, його потрібно буде перемістити до каталогу /etc/X11/
і перейменувати на xorg.conf
:
$ sudo mv xorg.conf.new /etc/X11/xorg.conf
Note
|
Наступні man-сторінки містять додаткову інформацію про компоненти системи X Window: |
Wayland
Wayland — це новий протокол відображення, призначений для заміни системи X Window. Багато сучасних дистрибутивів Linux використовують його як сервер відображення за умовчанням. Він потребує менше системних ресурсів та займає менше місця при встановленні, ніж X. Проект розпочався у 2010 році та все ще перебуває в стадії активного розвитку, включаючи роботу активних і колишніх розробників X.org.
На відміну від X Window System, немає екземпляра сервера, який працює між клієнтом і ядром. Натомість вікно клієнта працює з власним кодом або кодом інструментарію (наприклад, Gtk+ або Qt), щоб забезпечити рендеринг. Щоб виконати візуалізацію, до ядра Linux надсилається запит через протокол Wayland. Ядро пересилає запит через протокол Wayland до Wayland композитору, який обробляє введення з пристрою, керування вікнами та композицію. Композитор — це частина системи, яка поєднує відтворені елементи у візуальний вихід на екрані.
Більшість сучасних наборів інструментів, таких як Gtk+ 3 і Qt 5, було оновлено, щоб дозволити рендеринг або в системі X Window, або на комп’ютері, на якому запущено Wayland. Наразі не всі автономні програми були написані для підтримки візуалізації у Wayland. Для програм і фреймворків, які все ще орієнтовані на роботу системи X Window, програма може працювати в XWayland. Система XWayland — це окремий X-сервер, який працює всередині клієнта Wayland і, таким чином, відображає вміст вікна клієнта в окремому екземплярі X-сервера.
Подібно до того, як система X Window використовує змінну середовища DISPLAY
для відстеження екранів, що використовуються, протокол Wayland використовує змінну середовища WAYLAND_DISPLAY
. Нижче наведено зразок вихідних даних із системи, на якій працює дисплей Wayland:
$ echo $WAYLAND_DISPLAY wayland-0
Ця змінна середовища недоступна в системах під керуванням X.
Вправи до посібника
-
Яку команду ви використаєте, щоб визначити, які розширення Xorg доступні в системі?
-
Ви щойно отримали абсолютно нову 10-кнопкову мишу для свого комп’ютера, однак її потрібно буде додатково налаштувати, щоб усі кнопки працювали належним чином. Не змінюючи решту конфігурації X-сервера, який каталог ви б використали для створення нового файлу конфігурації для цієї миші, і який конкретний розділ конфігурації використовувався б у цьому файлі?
-
Який компонент встановленого Linux відповідає за підтримку роботи X-сервера?
-
Який параметр командного рядка використовується з командою
X
для створення нового файлу конфігураціїxorg.conf
?
Дослідницькі вправи
-
Яким буде вміст змінної середовища
DISPLAY
у системі з назвоюlab01
, яка використовує одну конфігурацію дисплея? Припустімо, що змінна середовищаDISPLAY
переглядається в емуляторі терміналу на третьому дисплейному екрані. -
Яку команду можна використати для створення файлу конфігурації клавіатури для використання системою X Window?
-
При стандартному встановленні Linux користувач може переключитися на віртуальний термінал, натиснувши клавіші Ctrl+Alt+F1-F6 на клавіатурі. Вас попросили налаштувати систему кіоску з графічним інтерфейсом і цю функцію потрібно вимкнути, щоб запобігти несанкціонованому втручанню в систему. Ви вирішили створити файл конфігурації
/etc/X11/xorg.conf.d/10-kiosk.conf
. Використовуючи розділServerFlags
(який використовується для встановлення глобальних параметрів Xorg на сервері), який параметр потрібно вказати? Перегляньте man-сторінкуxorg(1)
, щоб знайти потрібну опцію.
Підсумки
У цьому уроці розглядалася система X Window, яка використовується в Linux. X Window System використовується для відтворення зображень і тексту на екранах, як вони визначені в різних конфігураційних файлах. Система X Window часто використовується для налаштування пристроїв введення, таких як миші та клавіатури. На цьому уроці обговорювалися такі моменти:
-
Архітектура X Window System на високому рівні.
-
Які файли конфігурації використовуються для налаштування системи X Windows і їх розташування у файловій системі.
-
Як використовувати змінну середовища
DISPLAY
у системі з X. -
Короткий вступ до дисплейного протоколу Wayland.
Були розглянуті наступні команди та конфігураційні файли:
-
Зміна розкладки клавіатури в інсталяції Xorg за допомогою
setxkbmap
іlocalectl
. -
Команда
Xorg
для створення нового файлу конфігурації/etc/X11/xorg.conf
. -
Вміст конфігураційних файлів Xorg, розташованих:
/etc/X11/xorg.conf
,/etc/X11/xorg.conf.d/
та/usr/share/X11/xorg.conf.d/
. -
Команда
xdpyinfo
для відображення загальної інформації про запущений сеанс X-сервера.
Відповіді до вправ посібника
-
Яку команду ви використаєте, щоб визначити, які розширення Xorg доступні в системі?
$ xdpyinfo
-
Ви щойно отримали абсолютно нову 10-кнопкову мишу для свого комп’ютера, однак її потрібно буде додатково налаштувати, щоб усі кнопки працювали належним чином. Не змінюючи решту конфігурації X-сервера, який каталог ви б використали для створення нового файлу конфігурації для цієї миші, і який конкретний розділ конфігурації використовувався б у цьому файлі?
Визначені користувачем конфігурації мають бути розташовані в
/etc/X11/xorg.conf.d/
, а окремим розділом, необхідним для цієї конфігурації миші, будеInputDevice
. -
Який компонент встановленого Linux відповідає за підтримку роботи X-сервера?
Менеджер дисплея.
-
Який параметр командного рядка використовується з командою
X
для створення нового файлу конфігураціїxorg.conf
?-configure
Пам’ятайте, що команда
X
є символьним посиланням на командуXorg
.
Відповіді до дослідницьких вправ
-
Яким буде вміст змінної середовища
DISPLAY
у системі з назвоюlab01
, яка використовує одну конфігурацію дисплея? Припустімо, що змінна середовищаDISPLAY
переглядається в емуляторі терміналу на третьому дисплейному екрані.$ echo $DISPLAY lab01:0.2
-
Яку команду можна використати для створення файлу конфігурації клавіатури для використання системою X Window?
$ localectl
-
При стандартному встановленні Linux користувач може переключитися на віртуальний термінал, натиснувши клавіші Ctrl+Alt+F1-F6 на клавіатурі. Вас попросили налаштувати систему кіоску з графічним інтерфейсом і цю функцію потрібно вимкнути, щоб запобігти несанкціонованому втручанню в систему. Ви вирішили створити файл конфігурації
/etc/X11/xorg.conf.d/10-kiosk.conf
. Використовуючи розділServerFlags
(який використовується для встановлення глобальних параметрів Xorg на сервері), який параметр потрібно вказати? Перегляньте man-сторінкуxorg(1)
, щоб знайти опцію.Section "ServerFlags" Option "DontVTSwitch" "True" EndSection