LINUX.ORG.RU

Wayland — разъяснения от разработчиков KWin

 , ,


0

3

Дисклаймер. В связи с тем, что очень многие (почти все) здесь не понимают, зачем нужен Wayland, пишу в новости, благо есть источник, где кое-что разжёвано. Текст чуть-чуть подсократил, чтобы не захламлять.

Итак, приступим.

  1. В Wayland может быть реализована сетевая прозрачность.

    Это дело конкретного композитора. Всё дело в ошибочном понимании фразы «в Wayland нет сетевой прозрачности». Правильное понимание этой фразы таково: «спецификация Wayland не занимается сетевой прозрачностью и не определяет её». Композиторы могут быть выполнять локальную отрисовку, могут быть сервером и передавать картинку по сети (хоть на много машин одновременно), а могут делать и то и другое. Те, кто думают, что в Wayland сетевой прозрачности быть не может вообще, ошибаются.

  2. Сетевая прозрачность X11 не подходит для современных приложений.

    Она давно устарела, будучи сделанной с расчётом на то, что приложения используют простые команды для отображения содержимого окна, и эти команды можно отправлять по сети. Когда-то это было разумно, но современные приложения не используют X11 для рендеринга, они используют такие технологии как Cairo, Clutter, QPainter (Raster) или OpenGL. В этом случае X11 вынужден отправлять по сети готовую картинку, а для этой ситуации есть технологии, которые делают это гораздо лучше, чем X11. Сетевая прозрачность в X11 померла и так, без участия Wayland.

  3. X11-приложения будут поддерживаться.

    Никто не хочет ломать систему, переход на Wayland будет произведён если и только тогда, когда X11-only приложения будут в ней хорошо работать (через слой совместимости). Сетевую прозрачность X11, очевидно, тоже можно будет использовать.

  4. Сетевой прозрачности не место в оконной системе. Если вы хотите быстрой сетевой прозрачности, ей место в тулките виджетов.

    Оконная система должна просто заниматься отображением картинки, которую ей дали. Она не знает ничего про виджеты, у неё есть только картинка, которую гнать по сети достаточно накладно. Сетевой прозрачности когда-то было место в X11 только потому, что X11 был не только оконной системой, но ещё и тулкитом виджетов.

  5. «Дистибутивы выкинут иксы, моё любимое X11-only приложение не заведётся!»

    Для этого уже есть слои совместимости (X11 приложения можно запускать из композитора Wayland). Поддержку X11 никто не выкинет из дистрибутивов, пока она будет востребована, даже Mac OS X всё ещё поддерживает X11 для совместимости. Постепенно количество X11-only приложений будет уменьшаться (переписывание, естественная смерть), и даже если из вашего дистрибутива поддержку X11 уберут, вы всегда сможете её собрать сами.

Прекратите повторять ошибочные утверждения.

P.S. Отвечу на вопрос «Зачем вообще нужен Wayland, давайте улучшать X11».

Такие (или аналогичные) изменения даже если были бы возможны в X, всё равно бы сломали X11 и дали несовместимый с ним X12. Без слоя совместимости обойтись невозможно, а сам X12 тоже был бы не сахар, так как писался бы с оглядкой на X11. И чем это было бы лучше того, что мы имеем с Wayland?

В основе X11 лежат архитектурные решения более чем двадцатилетней давности (см выше). Так делать уже не надо, очень много функциональности иксов перешло в тулкиты, ядро, D-Bus, и другие системы. Замену легче написать с нуля, которая делает только свою прямую работу, а не пытается объять всё.

>>> Подробности

★★★★★

Проверено: svu ()
Последнее исправление: cetjs2 (всего исправлений: 11)

Ответ на: комментарий от TheMixa

> основные тулкиты, в частности gtk и qt, уже не используют для отрисовки иксы. Что там решать еще?

Через астрал рисуют, вестимо. С вами всё ясно.

geekless ★★
()
Ответ на: комментарий от erfea

>Для них никакой совместимости и не требуется, а вот у иксов уже есть два (так и непонял нахрена) протокола для вм.

Какие два? ICCCM и EWMH? Это не два протокола. Второй — это расширение первого. Он построен на ICCCM, поэтому и называется Extended Window Manager Hints.

Zubok ★★★★★
()
Ответ на: комментарий от baverman

Слова писателя wm'ов под иксы? А я писал, справился за вечер.

Не поверишь, я тоже, вот только писать дубли для одного и того же мне не понравилось.

Кстати, где можно глянуть на рабочую панельку под вейленд?Ни разу на скриншотах не мелькала. Неужели разработчикам не нужен такой функционал?

Оно ещё даже наполовину не готово, а тебе уже готовое DE для него подавай...

erfea ★★★★★
()
Ответ на: комментарий от baverman

Кстати, где можно глянуть на рабочую панельку под вейленд? Ни разу на скриншотах не мелькала. Неужели разработчикам не нужен такой функционал?

А причем тут вообще вайланд? Он вообще не должен ими заниматься, это скорее задача для dbus'а! То бишь нужна dbus спека от fdo наподобие status notifier item.

Gorthauer ★★★★★
()
Ответ на: комментарий от anonymous

>затем из текстовой консоли делаем что-то вроде `startx xterm — :1`, и в открывшемся xterm-е запускаем glxgears, смотрим на fps, закрываем.
Забыл xcompmgr и любой WM на твой выбор. Иначе ты сравниваешь их в разных условиях.
В голом wayland работает композит и можно передвигать окна.

x3al ★★★★★
()
Ответ на: комментарий от erfea

а вот у иксов уже есть два (так и непонял нахрена) протокола для вм.

Огласи список.

baverman ★★★
()
Ответ на: комментарий от Gorthauer

это скорее задача для dbus'а! То бишь нужна dbus спека от fdo наподобие status notifier item.

Окуда прилетел? Если сделать через dbus, тогда можно смело хоронить сетевую прозрачность, а она, не забываем, нужна.

baverman ★★★
()
Ответ на: комментарий от baverman

<буквоедство>У dbus есть сетевая прозрачность. Доказано гномом и telepathy.</буквоедство>.
Только не заставляйте меня этим пользоваться =)

x3al ★★★★★
()
Ответ на: комментарий от baverman

Тогда расширяем dbus так, чтобы он ей обладал, это вполне реально, при желании! Но в _любом_ подобные вещи _НЕ_ должны рулиться _ОКОННОЙ_ системой. Я может хочу консольную панельку запилить или ещё что-то такое же странное.

Gorthauer ★★★★★
()
Ответ на: комментарий от quantum-troll

Линуксоиды никогда этого не знали.

Просто у линуксоидов это единственное 3d приложение, дающее больше 30fps.

baverman ★★★
()
Ответ на: комментарий от Gorthauer

Я может хочу консольную панельку запилить или ещё что-то такое же странное.

Я сейчас могу сделать консольную панельку, вообще без проблем. Без dbus.

baverman ★★★
()
Ответ на: комментарий от Zubok

Не суть, я точно помню, что после проверки на некоторых примерах мне пришлось делать реализацию того, что уже прекрасно работало и без NET_WM в других приложениях. Колизии были хоть и не многочисленные. И да читать для них доки пришлось в разных местах, что это за бред?! ЗЫ Виденные мной примеры композиторов для вяленого были куда более читаемыми, чем то что и сам писал для иксов, и видел у других.

erfea ★★★★★
()
Ответ на: комментарий от baverman

Все с вами ясно, сударь.

С тобой собсвенно тоже, сравнил бы две вещи прежде чем вторую обсерать, да ещё и ссылаться на не реализованость чего-то для проекта который сам ещё и на половину не готов :D

Просто у линуксоидов это единственное 3d приложение, дающее больше 30fps.

Это у тебя.

erfea ★★★★★
()
Ответ на: комментарий от x3al

> Дарю идею для оптимизации: объединить все недокартинки в одну большую и описывать, например, угол кнопки как кусок пиксмапа начиная с координат X,Y с заданной шириной и высотой. Позволит быстрее загрузить пиксмап на сервер.

Зачем? Создаётся окно с флажком «кнопка Qt». На стороне сервера модуль расширения, если он есть, при получении запроса на отрисовку этого окна при обнаружении флажка рисует весь бэкграунд кнопки как задумано кутёй и текущей темой. Если модуля нет - тупо рисуется обычное окно с использованием обычных CWBackPixel СWBorderPixel.

Тулкит со стороны приложения не пересылает при этом никаких пиксмапов вообще.

Ну вот чем плох такой алгоритм? И кнопку можно нарисовать ниэпически модной, и приложению не надо тонны данных пересылать. И даже совместимо с самым минимальным и убогим Х сервером.

Stanson ★★★★★
()
Ответ на: комментарий от x3al

У dbus есть сетевая прозрачность.

Я в курсе. Просто как ее интегрировать в вялендовское соединение? Мрачнее костыля не придумаешь.

baverman ★★★
()
Ответ на: комментарий от Stanson

> Но вот если приглядется и подумать головой

Если подумать головой, то и система кеширования картинок вполне способна выделить на картинке одинаковые области и оптимизировать передачу. В век HD видео стримов это вообще не имеет значения. Универсальность и простота - залог успеха.


все виджеты можно свести к фиксированному набору примитивов (пусть даже очень нарядных примитивов типа «нижний край кнопки», «буква с тенью», «полупрозрачное закругление угла окошка»)


Глупее этого сложно что-то придумать. Зачем загонять себя в какие-то дебильные рамки и потом ещё лет 20 расширять набор команд?
Большинство людей хотят видеть результат пиксель в пиксель. А закругления у каждого свои. Кнопки тоже. Каждое приложение может выглядеть по своему. Не говоря уже про кросс-ос.


Тут думать головой надо.


Вот ей и попробуй думать. Пора начинать!

Какая-то тотальная близорукость.

d9d9 ★★★★
()
Ответ на: комментарий от erfea

да ещё и ссылаться на не реализованость чего-то для проекта который сам ещё и на половину не готов

Вот сначала пускай покажут, как всё легко и просто получается и работает. А то одни дифирамбы, очень похожи на браваду лисперов — у них тоже, куда ни глянь, одна элементарщина в пару строк.

baverman ★★★
()
Ответ на: комментарий от baverman

> И он *уже* пускается под вяленым?

Если я правильно понял - он и есть реализация вяленого сам по себе.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

>На стороне сервера модуль расширения, если он есть, при получении запроса на отрисовку этого окна при обнаружении флажка рисует весь бэкграунд кнопки как задумано кутёй и текущей темой.
То есть все стили известны заранее? Неплохое предположение. Опять же, новые виджеты рисуем сами или передаём серверу (работающему, напоминаю, под рутом)?

И даже совместимо с самым минимальным и убогим Х сервером.

Нет, не совместимо. Посчитай количество флажков и прочего мусора, которое тебе нужно будет добавить в html^Wpostscript^WX11-протокол. Ты вылетишь за его ограничения :3

x3al ★★★★★
()
Ответ на: комментарий от baverman

> Просто у линуксоидов это единственное 3d приложение, дающее больше 30fps. Вообще-то, по умолчанию оно даёт fps равный частоте вертикальной развёртки. :)

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Если я правильно понял - он и есть реализация вяленого сам по себе.

Не суть важно. Важно, что в собранном виде и рабочий он не скоро появится.

baverman ★★★
()
Ответ на: комментарий от Deleted

> Когда задним числом прикрутили что-то, значит изначально этого недодумали.

Фишка в том, что в иксах это было куда прикручивать.

И вообще, что значит задним числом? X11 существует с 87-го года. ICCCM была разработана в 88-м.

Но велосипед != продуманность

man велосипед переносное значение

geekless ★★
()
Ответ на: комментарий от Stanson

Вообще-то, по умолчанию оно даёт fps равный частоте вертикальной развёртки.

И?

baverman ★★★
()
Ответ на: комментарий от Zubok

Второй — это расширение первого

И првда расширение, только сей фак запонмился хуже чем наличие таких атомов как:

WM_STATE и _NET_WM_STATE, WM_NAME и _NET_WM_NAME это так беглая оглятка по докам. Детали реально забыл как страшный сон, хватило пару раз влезть в код иксов и один раз что-то на xlib поваять, теперь всю работу с графикой предоставляю тулкитам. Работать с иксами реально муторное дело.

erfea ★★★★★
()
Ответ на: комментарий от baverman

Вот сначала пускай покажут, как всё легко и просто получается и работает. А то одни дифирамбы, очень похожи на браваду лисперов — у них тоже, куда ни глянь, одна элементарщина в пару строк

Ну вот что-то уже показали что-то ещё нет, не вижу кстати проблемы сделать панельку для вяленого.

erfea ★★★★★
()
Ответ на: комментарий от erfea

Работать с иксами реально муторное дело.

wm не писал только ленивый, их больше чем плееров. А ты говоришь муторное дело, что как бы намекает.

baverman ★★★
()
Ответ на: комментарий от erfea

не вижу кстати проблемы сделать панельку для вяленого.

Отдельную панельку! Не интегрированную в композитор-менеджер-окон. Это важно и как это осуществить на текущем вяленде, я не представляю. Можешь ткнуть в соответствующий апи?

baverman ★★★
()
Ответ на: комментарий от x3al

Это уже второй вопрос. Видимо, авторам хватает.

baverman ★★★
()
Ответ на: комментарий от x3al

> То есть все стили известны заранее? Неплохое предположение.

Стили определяются на стороне сервера. Тулкит состоит из собственно тулкита который рисует виджеты примитивами X11 используя Xlib и модуля X сервера, который обеспечивает рисование примитивов так, как хочется аффтару тулкита. Можно с темами.

Опять же, новые виджеты рисуем сами или передаём серверу (работающему, напоминаю, под рутом)?

Если виджета нет в тулките - то, разумеется рисуем сами. Можно тулкитный флажок окошка использовать, чтобы всякие рамки-бэкграунды и пр. выглядели тулкитно.

Stanson ★★★★★
()
Ответ на: комментарий от baverman

Ага, вот только блин лучше бы этот ВМ не писать вообще, иксы реально убоги, столько оглядок приходится делать, тот же NET_WM оказался просто сюрпризом, когда выяснилось что и о его существовании стоит знать прежде чем начинать работу. Плюс ещё масса деталей вызвала недоумение. Иксы красивы только на бумаге, на практике убожество состоящее из тоны лишнего кода и тащущее с собой уйму никому не нужного наследия из давно забытых времен.

erfea ★★★★★
()
Ответ на: комментарий от erfea

> Работать с иксами реально муторное дело.

Принципиально - ничем не отличается от работы с Win32 GDI. А на деле - гораздо приятнее, ибо доки нормальные и в сырцы заглянуть можно.

Stanson ★★★★★
()
Ответ на: комментарий от baverman

Можешь ткнуть в соответствующий апи?

Можешь дать доку, описывающую его апи? ЗЫ его апи уже заморозили?!

erfea ★★★★★
()
Ответ на: комментарий от Stanson

>Можно с темами.
Хочется увидеть темы примитивов X11. Просто как это выглядит.
default-линия — серая dashed с размером штриха в 2 пикселя? Примерно так? =)

x3al ★★★★★
()
Ответ на: комментарий от Stanson

Принципиально - ничем не отличается от работы с Win32 GDI. А на деле - гораздо приятнее, ибо доки нормальные и в сырцы заглянуть можно.

Я, конечно, понимаю, ты очень любишь венду. Но вот для меня как там в твоей форточке фиолетово!

erfea ★★★★★
()
Ответ на: комментарий от tailgunner

> Я бы не имел против вяленда вообще ничего, если бы он планировал быть бэкендом отрисовки X-сервера. Но он хочет быть чем-то большим и с тупым подростковым упорством форсит «иксы тормозят и устарели!!!11». Хотя бы поэтому его стоит закопать.

Два чаю этому господину.

geekless ★★
()
Ответ на: комментарий от erfea

Можешь дать доку, описывающую его апи? ЗЫ его апи уже заморозили?!

Нет апи, давай ссылку на место в протоколе, которое это предусматривает, если нет, то ссылку на бложек авторов или рассылку, где они об этом рассуждают. Они же не настолько идиоты, чтоб пропустить такой важный момент, как получение списка окон с их иконками, заголовками и состоянием? Или все же, да? И авторы надеются, что каждый композитор будет с нуля воздвигать все необходимые элементы окружения? Бред какой-то.

baverman ★★★
()
Ответ на: комментарий от baverman

Они же не настолько идиоты, чтоб пропустить такой важный момент...

Вот и я склоняюсь именно к такой точке зрения, особенно учитывая тот код что мне довелось почитать. Ещё хочу заметить что разрабы кедов тоже интересуются вяленым, они тоже на таких идиотов не похожи. А ещё я ленивый. Потому раз тебе так надо доказывай сам, что это невозможно, а не требуй с меня доказательств обратного.

erfea ★★★★★
()
Ответ на: комментарий от x3al

> default-линия — серая dashed с размером штриха в 2 пикселя? Примерно так? =)

Вроде solid чёрная если без извращений.

Но никто же не запрещает перехватить на стороне сервера XDrawLine, взять окно через gc, и если окно имеет флажок SUPER_TOOLKIT_XXX то рисовать её, например, с алиасингом.

Ну а вообще - темы скорее всего будут заключаться в основном в хитромудром заполнении фона окон-виджетов согласно задумке дизайнера темы.

Stanson ★★★★★
()
Ответ на: комментарий от erfea

> Я, конечно, понимаю, ты очень любишь венду.

Не понимаешь. Я её ненавижу. Причём не слепо, как большинство ненавистников винды, а по совершенно конкретным и объективным причинам.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

>Ну а вообще - темы скорее всего будут заключаться в основном в хитромудром заполнении фона окон-виджетов согласно задумке дизайнера темы.
Я уже надеялся на вменяемое описание механизма тем, прикрученного расширением к X12 (в X11 оно не вписывается и в нём многовато проблем). Зря надеялся.
Удачи в реализации, в общем. Больше сказать нечего.

x3al ★★★★★
()
Ответ на: комментарий от erfea

> Сравни хотя бы кол-во кода.

Лол. Сравни количество кода для сортировки пузырьком и introsort.

Ты сделал мой день, однозначно.

geekless ★★
()
Ответ на: комментарий от x3al

> Я уже надеялся на вменяемое описание механизма тем, прикрученного расширением к X12

И к X11 прикручивается. Минимальное расширение на стороне сервера должно перехватывать XCreateWindow и Expose (может и resize надо, не помню, генерит оно expose или нет) и при обнаружении у окна флажка TOOLKIT_XXX_WIDGET_ZZZ (в valuemask там, в пропертях окна или ещё где) рисовать не обыкновенный, а навороченный бэкграунд для виджета ZZZ.

Тулкиту со стороны приложения при создании виджета нужно лишь создать окно с таким флажком и нарисовать требуху примитивами.

Не сложнее Xaw со стороны приложения, но выглядеть может не хуже модерновой темы для Qt или GTK.

Шрифты - другая история, но тоже не вижу проблем перетащить нормальный рендер шрифтов по XDrawString в сервер.

Stanson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.