О Wayland и Mir.

В данной статье пойдет речь о двух новых протоколах для организации графического сервера в Linux и других UNIX-подобных операционных системах, а именно о Wayland и Mir.

Чем плох Xorg?

Графическая система Linux оставалась в своей сути неизменной с 1993 года. Xorg (до 2004 года он назывался XFree86) — это та реализация графической системы, которая лучше всего соответствует инженерной направленности Linux. Она построена по архитектуре «клиент-сервер», может отрисовывать окна на удалённых машинах, её функциональность легко нарастить расширениями.

Но такой подход заложил и слабые места, которые ярко проявились в наше время многоядерных вычислений, сложной графики и множества устройств ввода. Сейчас Xorg — это рядовая программа, через которую проходит вся графика и данные от клавиатур, мышей, джойстиков, тачпадов, и т. д. Существование такой монолитной прослойки порождает уйму проблем:
  • X-сервер получает от программ поток кадров, который нужно отобразить на экран, но из-за особенностей реализации протокола Xorg может терять кадры или путать их местами — пользователь видит это как лаги, подёргивания и разрывы картинки (тиринг);
  • модернизация Xorg практически невозможна из-за очень сложного кода — это давно уже не стройная «академическая» программа, а нагромождение слоёв, каждый из которых — попытка осовременить Xorg, в итоге нижние слои почти не используются, без толку «утяжеляя» протокол;
  • Xorg плохо работает с несколькими одновременными нажатиями — о тачпадах в 90-х годах никто не думал, капризен к переключениям видеокарт, не может обрабатывать отжатие клавиши вместо нажатия, теряет ввод при открытии меню — таких вот недочётов и странностей много;
  • чтобы быстро и плавно отрисовывать тени, прозрачности, шрифты и прочие элементы GUI, нужно напрямую использовать аппаратные ресурсы видеокарты, но Xorg не может обеспечить прямую отрисовку — он «гоняет» всю эту кипу данных через себя от программы к композитному менеджеру, а от него — к видеокарте, опять же через себя;
  • наконец, существование централизованного графического сервера опасно с точки зрения безопасности, ведь если злоумышленник получает контроль над Xorg, в его руки попадает и всё то, что видит пользователь на экране, и все его устройства ввода, при этом в X-сервере нередко находят опасные уязвимости.

Как с этим бороться?

Были попытки создать X12 (нынешняя реализация Xorg обозначается как X11), но скоро разработчики Xorg поняли, что проще всё выкинуть и сделать с нуля, заложив современные возможности в самую основу протокола. Так был начат проект Wayland — начала его компания Intel, которая активно участвует в развитии Linux.

Wayland — протокол общения приложений с композитным менеджером. Композитный менеджер это почти всегда менеджер окон: Weston, KWin, Mutter, Compiz, и т. д. Он напрямую использует ресурсы видеокарты, взаимодействуя с ядром. Сам протокол Wayland включает в себя только работу с поверхностями — окнами, панелями, виджетами. То, что внутри панели, рисует сама программа.

Так исчезает надобность в графическом сервере типа того, что виден в диспетчере задач под именем Xorg (в некоторых дистрибутивах — просто X). Как следствие, отрисовка становится очень быстрой и плавной, при этом нагрузка на оборудование — минимальна. Особенно сильно разница заметна на слабом «железе», например, на Raspberry Pi:

Wayland не единственная альтернатива Xorg — для Ubuntu разрабатывается протокол Mir, на который планируется перевести окружение Unity. Он также избавляет графическую систему от посредничества X-сервера, делает Unity более приятным в использовании.

Когда всё это будет в Linux?

Разработка Wayland длится больше 5 лет, но до сих пор он применяется лишь на некоторых смартфонах. Наверное, только в 2017 году следует ожидать начала массового прихода Wayland на компьютеры пользователей. Ведь, с одной стороны, KDE и Gnome уже готовы для работы на Wayland, с другой — Nvidia, наконец, реализовала полноценную поддержку протокола в своём драйвере.

А вот с Mir пока всё не очень понятно. Уже сейчас есть контейнер с Unity 8, которая использует Qt и Mir, его можно установить так:
sudo apt install unity8-desktop-session-mir
Но до сих пор Mir не так готов для использования, как Wayland. Может быть, Canonical снова откажется от собственного варианта, как отказалась от своего upstart и перевела Ubuntu на systemd.

P.S. Напишите в комментариях, что Вы думаете о всей этой ситуации с новыми протоколами для организации графического сервера в Linux.