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)

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

> что же тогда разрабы кде например или гнома в таком восторге?

Вместо того, чтобы скучно доводить до ума существующие продукты, можно написать новую модную шнягу.

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

> ну ладно, разрабы вэйлэнда доят деньгу из работодателя. что же тогда разрабы кде например или гнома в таком восторге?

Уменьшается конкуренция. Например, после внедрения вейленда будут непригодны KDE3 и Gnome2. Вероятно, и другие десктопы (E17, LXDE).

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

>Тулкитописатели в погоне за рюшечками, вместо того, чтобы добвавить в X сервер, например, команду градиентной заливки,

В X-сервер это уже добавили в XRender — запросы XRenderCreateLinearGradient, XRenderCreateRadialGradient, XRenderCreateConicalGradient. И cairo, их использует, судя по коду в cairo-xlib-surface.c и cairo-xcb-surface-render.c

или там флажок отображения текста шрифтом с алиасингом и субпикселем, за каким-то хреном сами занимаются этим в у себя в буфере и потом командуют X-ам нарисовать этот буфер целиком, как картинку.

А это о чем речь? В X-ах не так происходит (не так должна происходить) работа со сглаженным текстом.

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

вы просто не втянулись в прелести адаптивного хаоса...

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

Хм, а мне казалось, что композитность в этих оконных менеджерах останется. Только их научат рисовать мимо иксов напрямую и реализуют в них wayland. По сути уже сейчас оконные менеджеры kwin и compiz превратились в две независимые реализации вейленда.

Ага, а события от мыши, клавиатуры и обработку многоязыкового ввода для них будет делать X-сервер :-) Ребята жжут как аццкие огнеметчики. Вместо того, чтобы сделать аналог

int main() {
    pixmap = X11getPixmap(window, window.width,window.height,RGB24);
    ... рисовать тут в пиксмап...
    X11Render(window,pixmap);
}


они изобретают новый протокол :-)
no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

> Ага, а события от мыши, клавиатуры и обработку многоязыкового ввода для них будет делать X-сервер :-)

Ну там хотят привязать к линуксовым evdev, consolekit и прочая.

они изобретают новый протокол :-)

Ну дык это… Старый протокол реализует кучу лишнего и протухшего, и поэтому хорг адски тормозит!!11

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

Ребятам из проекта X.org значительно больше доверия, чем персонажам. пилящим вяленд.

Это этим то убогим, которые раз за разом, из года в год что-то ломают и с завидной силой соблюдают тенденцию повышения ресурсоёмкости иксов?! Это тем то уродам из-за которых по-сути существует два протокола управления окнами и происходит двойное буферизирование изображений?! Нуну...

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

> Ты так говоришь, будто kde3 и gnome2 - конкуренты kde4.

Gnome2 - конкурент Gnome3.

Про недоподелки я вообще молчу

Xfce тоже придется полностью переписывать на GTK3.

Ну и кроме устранения конкуренции, хорошее оправдание для внедрения Гнома 3, например «все равно все пришлобы переписать для поддержки GTK3 и вейленда».

Nxx ★★★★★
()

ТОРТ

>Сетевая прозрачность в X11 померла и так, без участия Wayland.

Тыщю постов нафлудили, а ИТАК до сих пор не исправили...

MrHouse
()
Ответ на: ТОРТ от MrHouse

facepalm

Розенталин внутривенно этому пациенту

Un
()
Ответ на: комментарий от Nxx

>Gnome2 - конкурент Gnome3

стало быть, с кде4 они и рядом не валялись оба

Xfce тоже придется полностью переписывать на GTK3

пичалька

Un
()
Ответ на: комментарий от Reset

вендовый rdp отлично работает на 1mbit независимо от того на каких тулкитах пускаешь в нем приложения.

Опа, исчо один долгоносик!

Слыш, чудо, ты наверное не в курсе, что RDP по своей структуре сходен с X11, просто оперирует меньшим количеством сущностей (атомов) - pixmap, brush, pen, с опциональным фоллбэком на отдачу пиксмапа в случае, когда фича протокола недоступна/нереализована клиентом. Существенное отличие RDP от X11 - это поддержка потоков внутри одного соединения (используются для редиректов принтеров/звука/смарткарт).

Из минусов - практически невозможно «внятно» пробросить выхлоп одного окна", поскольку событийный уровень хреново проработан, а обработка многоязыкового ввода целиком отдана клиенту. Утверждение же что «независимо от того на каких тулкитах» это канонический бред, вследствие того, что RDP работает с одним тулкитом - GDI, и все остальные (GTK, QT и прочие) также работают с GDI.

В общем-то RDP это тот же X11, только чуть более новый.

no-dashi ★★★★★
()
Ответ на: комментарий от shahid

А вот VNC работал неторопливо, но вполне быстро в таких условиях: загрузил всё окошко

Во-первых, ты только что соврал - во-первых, ты загрузил весь десктоп, а не всё окошко. Во-вторых, VNC у тебя шел практически наверняка в 8bpp. В-третьих, ты «забыл» упомянуть, что X11 отрисовало бы КАЖДОЕ изменение, а VNC отрисовывает только состояние окна в отдельные моменты времени, то есть неконсистентно. Это примерно также, как сбеседовать по SIP с потерей 70% пакетов.

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

Так тут и не надо 100% пакетов передавать. Главное чтобы на экране постоянно была максимально актуальная картинка. А если этого проще добиться передачей полного растра - да будет так.

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

Да я про градиент и шрифты исключительно для примера. Ну пусть не градиент будет, а какая-нибудь «под дерево» заливка из дурацкой темы. И приложение использующее тулкит с такой темой будет тормозить по сети, пересылая это чортово дерево в каждый виджет вместо того, чтобы на удалённом сервере отображать какую-нибудь fallback тему посылая только команду заливки.

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

> виндовые приложения одинаково хорошо работают локально и по рдп, а линуксовые - одинаково плохо.

...сказал дельфикодер

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

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

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

Зоопарк тулкитов и тем - беда линукса. В рдп тема автоматически отключается если рдп настроен на малую скорость.

farafonoff ★★
()
Ответ на: комментарий от no-dashi

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

Поэтому, кстати, какой-нибудь xedit через сеть работает в разы быстрее чем какой-нибудь kedit и уж точно не медленнее чем notepad с винды по RDP.

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

>Ну, как минимум, unity у canonical получился достаточно вменяемым, удобным и эргономичным.

абсолютно никчемная быдлоподелка.

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

>Поэтому, кстати, какой-нибудь xedit через сеть работает в разы быстрее чем какой-нибудь kedit

Я юзал kmail через nx, вполне приемлемо

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

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

Не пойму зачем гонять картинки туда-сюда?

Ну ладно, пусть окошко с текстом прозрачное. Чтобы его перерисовать нужно всего лишь послать «прозрачность gc 60%, очистить фон, нарисовать текст». Зачем пересылать картинки? Не реализовано в удалённом сервере расширение понимающее команду «прозрачнось gc 60%»? - да и хрен с ним, ну будет на этом конкретном сервере непрозрачное окно. Или аффтар софтины непременно хочет свою долбаную прозрачность втюхать всем в любом случае, надеясь что все прям восхитятся его программерскими способностями?

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

>Да просто виндописатели сами обычно не рисуют контролы, довольствуясь системными, а нашим подавай эти чортовы темы, которые не в сервере реализованы, а в тулките. Вот и получается - виндовое приложение шлёт «нарисовать прямоугольник, залить стандартным фоном, написать строку стандартным шрифтом», а линуксячье само (через тулкит) рисует всю кнопку, а потом целиком шлёт эту картинку.

Это да, невозможно не согласиться. Мне лично наплевать на красивость при удаленной работе с приложением

annulen ★★★★★
()

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

Спорно. Очень спорно.

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

> Думаете, TDE не приспособят?

Ну на данный момент оно не совсем работоспособно с Qt4.

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

Мне вот интересно, будут ли под Wayland портированы dwm, awesome, LXDE, наконец?...

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

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

виндовые приложения одинаково хорошо работают локально и по рдп, а линуксовые - одинаково плохо.

...сказал дельфикодер

Про плохо сказал не я

Какие деццкие отмазки - «это не я, это они меня подговорили».

а разработчики вейланда.

Естественно, вялендописатели будут поливать иксы.

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

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

Ну ладно, пусть окошко с текстом прозрачное

Прозрачность к композиту имеет весьма посредственное отношение. В той же венде прозрачность уже была в вин2к, а композит добавили относительно недавно.

x3al ★★★★★
()

// Тред не читал Прям захотелось потрогать его. С чего бы начать, что почитать, чтобы после этого можно было для практики портировать какое-нибудь простое X11-only приложение на Wayland?

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

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

Ага или в /tmp создать файл и в него хреначить с помощью чего-нить, а потом слать в вяленного, изврящаться способов всегда хватало :D

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

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

Да и по VNC простые темы должны передаваться реактивно, потому что сжимаются хорошо. Серость megabaks'а, например.

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

> Для композита нужно иметь доступ к картинке окна.

Зачем? Кому нужно? Что вообще имеется ввиду под «композитом» в данном контексте? Какие-такие штуки этого «композита» настолько необходимы, что ради них нужно отдавать _приложению_ изображение на экране? Какое вообще приложению дело до оконного менеджера, который вообще на другой стороне земного шара может работать, или его вовсе может не быть?

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

>Какие-такие штуки этого «композита» настолько необходимы
http://en.wikipedia.org/wiki/Compositing_window_manager#Usability_and_eye_candy плюс возможность вывести одно окно на два монитора (второй, к примеру, может быть проектором).
Похоже, кто-то не владеет предметом разговора.
Оконного менеджера может и не быть, но кого волнует эта ситуация на практике? Половина приложений в этом случае всё равно не будет нормально работать.
Ну и композитный менеджер в иксах может быть отделён от оконного (proof-of-concept: xcompmgr).

Какое вообще приложению дело до оконного менеджера, который вообще на другой стороне земного шара может работать

http://xkcd.com/619/

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

пещеры и наскальная живопись это как раз вейлеyнд. самый эффективный путь это речь.слова и предложения. применительно к программированию это команды и их параметры. о чем здесь уже было сказано - надо разрабатывать (расширять) список команд и параметров которые используются для работы gui тулкитов... ну хотя бы что бы они были стольже развитыми как в X(с существующими расширениями),

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

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

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

Оо я удивлён, хоть кто-то способен прочитать текст, а не кидаться как бык на красную тряпку )))

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

> Начни с осовенни GTK3 лиюо Qt, на вяленом ты приложение не напишешь, сам вяленый НИЧЕГО не рисует.

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

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

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

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

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

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

из презентации матрина следует 1) он не видит основной проблемы X - поддержка от производителей железа 2) он явно большой любитель наиболее неэффективных и плохоспроектированных тулкитов. не все чем просто пользоваться хорошо использовать в нормальном (длительном) проекте.

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

У вялендописателей есть и аргументы, прочитай их. Иксы слишком долго не умели рисовать градиенты, нормальные шрифты и прочее, в итоге все это реализовали в тулкитах, а в иксы стали гнать картинку. Программы, написанные на X11 выглядят жутко уродливо. В виндах программа написанная на GDI выглядит нативно в любой винде, по этому и rdp работает лучше чем X11.

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

Поддержка производителей железа есть (nvidia). Иксы дублируют функционал тулкитов, за что должны поплатиться рано или поздно.

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

>Да и по VNC простые темы должны передаваться реактивно, потому что сжимаются хорошо.

NX тоже сжимает траф. Проблема не в этом, проблема зачем в принципе что-то жать

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