Дзен и искусство ухода за Arch Linux (3)
3. Display Protocols детальнее.
= X11 (X.Org Server) — «Дедушка» (1984 г.)
Это классический клиент-серверный протокол.
X Server -- это программа, которая имеет монопольный доступ к видеокарте. Приложения говорят ей: "Нарисуй мне окно 500x500", сервер рисует и отправляет события обратно.
Минусы:
Любое приложение может прочитать ввод с клавиатуры любого другого окна.
При падении X Server падают все графические приложения.
Мониторы с разной частотой обновления (60 Гц + 144 Гц) работают плохо (тряска).
HDR и HiDPI -- костыли, работают через раз.
Каждое действие проходит длинный путь (App - X Server - GPU).
= Wayland — «Преемник» (2008 – н.в.)
Это протокол, а не программа. "Композитор" (например, KWin, Mutter, Sway, Hyprland) сам является сервером. Приложение говорит композитору напрямую: «Дай мне участок памяти (buffer), я сам туда нарисую», композитор просто собирает эти буферы и отправляет на экран.
Почему круто:
Приложение не видит ввод других окон.
Путь короткий (App - Compositor - GPU).
Каждое окно рендерится с собственной частотой.
Нет разрывов по определению (если приложение не просит explicit sync).
Почему это уровень стека, а не просто галочка? В большинстве ОС (Windows, macOS, Ubuntu) выбор протокола скрыт от пользователя. А в Arch вы выбираете это сознательно! :)
Вы не ставите «видеодрайвер» и радуетесь, вы выбираете стек:
sudo pacman -S sway wayland libinput mesa