LINUX.ORG.RU

Как писать под wayland? Несколько вопросов.

 


1

5

В Xlib всё просто. Нужен мне оконный менеджер, #include <X11/Xlib.h> и пиши себе. Нужно гуёвое приложение, #include <X11/Xlib.h> и пиши себе. В wayland же как-то... Сложно... В общем я не разобрался.

Начнём с того, что существует либа wayland-client.h, что уже как-бэ говорит о том, что оконный менеджер на этом нельзя писать. Далее weston, в вики написано, что это «эталонная реализация композитного менеджера Wayland», из этого я мало чего понял. Что weston означает для разработчика?

Короче говоря, два вопроса:

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

2. Хочу написать приложение под оконный менеджер, какую либу брать?

Ну и вообще хотелось бы услышать про тонкости этого всего. Спасибо.

Что weston означает для разработчика?

Пример же, разве нет?

FIL ★★★★
()

Хочу написать приложение под оконный менеджер, какую либу брать?

Какое приложение? Бери GTK3, Qt5 да пиши себе.

FIL ★★★★
()

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

Никакую, либо wlc.

Хочу написать приложение под оконный менеджер, какую либу брать?

Qt5, GTK+3, любой совместимый тулкит.

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

А чтобы написать свой тулкит какую либу брать?

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

Никакую

Почему так? Оконный менеджер, базовая вещь же. Объясни.

либо wlc.

Первым делом пошел глянул сорцы sway(тайловый-оконный-менеджер-под-вейленд), его в инклюдах и увидел. Так и не понял что оно такое. Что оно такое?

Qt5, GTK+3, любой совместимый тулкит.

Мне интересно как это самим вейлендом сделать.

kokoko321
() автор топика

напиши лучше kwin

anonymous
()

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

Ты можешь либо написать свой композитор с нуля, либо встроить свой код в Weston. В вяленде композитор, вм и сервер - это всё один процесс. Со всеми вытекающими.

2. Хочу написать приложение под оконный менеджер, какую либу брать?

libwayland, конечно же. Через неё создаёшь буфер и рисуешь чо хочешь в нём, вяленд выведет его в окошке. Каких-либо примитивов и прочего там нет.

hateyoufeel ★★★★★
()

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

libwayland-server

2. Хочу написать приложение под оконный менеджер, какую либу брать?

libwayland-client

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

Иногда мне кажется, что 95% этого не понимают :)

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

Но должна же быть реализация API этой спецификации.

Вот, к слову, libwayland-server именно то что надо, если на первый взгляд. Прямо как в xlib. И вот если это действительно ОНО, то зачем wlc? Почему на wlc написано три основных тайловика?

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

именно так, это всё реализации, бери любую по вкусу или пиши свою. А ещё лучше не пиши ничего.

LiBer ★★★
()
Последнее исправление: LiBer (всего исправлений: 1)
Ответ на: комментарий от kokoko321

Мне интересно как это самим вейлендом сделать.

Насколько мне известно - никак, это не иксы. Есть, правда, некий XWayland, но насколько долго и в каком объёме его будут поддерживать...

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

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

почему Microsoft благоразумно не выбрасывает win32

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

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

Насколько мне известно - никак, это не иксы.

вот же API: https://wayland.freedesktop.org/docs/html/apb.html
примеры использования есть в исходниках weston

Есть, правда, некий XWayland

а это не API, а прослойка для запуска иксовых приложений под wayland

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

Вот, к слову, libwayland-server именно то что надо, если на первый взгляд. Прямо как в xlib. И вот если это действительно ОНО, то зачем wlc? Почему на wlc написано три основных тайловика?

подозреваю, что libwayland-server - это просто реализация протокола, а wlc - это более высокий уровень, то есть каркас композитора

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

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

Другими словами, наличие win32 даёт MS конкурентное преимущество в поддержке большого количества старых приложений, так? Всё ещё даёт, несмотря на то, что это «говно мамонта»?

Ну вот и в *nix-мире тоже есть «говно мамонта», которое, другими словами, просто работает. X11, наряду с POSIX - один из столпов, на который это «просто работает» опиралось. До самого последнего времени.

Ну и да, я про протокол, естественно, а не про реализацию. Реализации могут быть разные, хоть всё с нуля перепишите.

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

вот же API

Он на два порядка низкоуровневее иксового. Я на голой xlib, как и на голом win32, могу написать законченную прикладную программу. Не прибегая к услугам монстротулкитов, которые своё API ломают куда чаще (я помню переход с Qt3 на Qt4, например).

На этом вашем libwayland-client такое можно?

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

Ты кажется не понял главного, wayland это спецификация, а не программа.

Угу, и X11 это в первую очередь спецификация. Только когда начинаешь объяснять поклонникам Wayland, что может произойти из-за слома этой спецификации, тебе в ответ начинают говорить про тонны неподдерживаемого говнокода и другие вещи, к спецификации явно не имеющие отношения.

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

Абсолютно согласен, но wayland стали делать в том числе что бы не заботиться о совместимости со старыми спецификациями, изменили архитектуру и тп, кроме того исторически сложилось, что X11 == xorg то есть разнообразия реализаций уже нет, а xorg он монструозен, единственная проблема wayland(imho) это темп его развития, если бы то что с ним произошло случилось за 1-2 года, то всё было бы отлично, а это длится уже лет 10 кажется :)

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

На этом вашем libwayland-client такое можно?

Нет. И слава богу. Для этого придумали тулкиты.

Я на голой xlib, как и на голом win32, могу написать законченную прикладную программу. Не прибегая к услугам монстротулкитов, которые своё API ломают куда чаще (я помню переход с Qt3 на Qt4, например).

Перечисли пожалуйста свой ТОП-10 приложений на чистой Xlib, желательно, что бы про эти приложения слышали не только полтора землекопа. А то ходят слухи, что этими возможностями божественного X11 не пользуется вообще никто.

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

Кроме того, никто не мешает таким фанатикам легковесности написать такую либу, аналогичную адаптерам вывода из qt/gtk, и использовать для написания своих приложений. Технически ничто не мешает этому, но никому видимо не нужно.

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

Он на два порядка низкоуровневее иксового. Я на голой xlib, как и на голом win32, могу написать законченную прикладную программу.

Win32 API позволяет создавать элементы интерфейса, Xlib - нет. Написать прикладную программу на чистой Xlib можно, но зачем?
libwayland-client то, конечно, еще проще, чем Xlib, потому что не позволяет даже графические примитивы рисовать, для этого есть сторонние средства - cairo или opengl. Я не вижу в этом у Xlib какого-то особого преимущества (ну разве что пресловутая сетевая прозрачность, которую и на wayland реализовать никто не запрещает).

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

Почему на wlc написано три основных тайловика?

потому что так решили их разработчики. надо просто с этим смириться. ты можешь взять их код за основу если разберёшся С НИМ.

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

Ну вот и в *nix-мире тоже есть «говно мамонта»

в *nix-мире есть еще SDL, Qt, Gtk которые позволяют не кусать кактус Х11. Например SDL позволяет просто взять и захватить мышку. только в x11 это лютый хак потому что гавно мамонта тупо не может в игори.

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

и GTK и Qt не используют нативные контролы

в иксах нет нативных контролов

SDL позволяет просто взять и захватить мышку. только в x11 это лютый хак

В чем там хак, вроде бы просто делается?
Если про подсистему пользовательского ввода говорить, то там жесть в том, что есть три способа получения событий: core events, XInput и XInput 2. Код всего этого очень сильно перемешан и поддерживать его просто нереально.

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

Я это делал для qt с оглядкой на sdl2. Так вот - там «хак». Сделано по принципу «дай бог 314дорский wm не попадется»

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

На самом деле единственный способ получить мышь это xinput2. И очень желательно 2.2

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

но wayland стали делать в том числе что бы не заботиться о совместимости со старыми спецификациями

Вот в этом и печалька.

кроме того исторически сложилось, что X11 == xorg то есть разнообразия реализаций уже нет

Ну не совсем... есть ещё оригинальный XFree86 (у которого, правда, с xorg сильное пересечение по коду), есть ещё что-то под винду... Но в целом как-то так, да. Но! Получается, что путь Wayland - это написать новую спецификацию и написать под неё сервер. А был ещё путь написать новую реализацию X11, не ломая совместимости, ну и заодно предложить парочку новых полезных расширений для X11. И что-то мне кажется, что это было бы ничуть не сложнее, но гораздо продуктивнее.

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

Нет. И слава богу. Для этого придумали тулкиты.

А тебя не смущает, что под винду можно написать полноценное приложение без тулкитов? И под иксы можно было. Значит опять-таки MS получает конкурентное преимущество, не ломая совместимость.

Перечисли пожалуйста свой ТОП-10 приложений на чистой Xlib, желательно, что бы про эти приложения слышали не только полтора землекопа.

xedit, xterm, xbiff, xclock, xcalc... Слышали про них и даже применяли явно больше, чем полтора землекопа, хотя сейчас они и впрямь не слишком популярны.

Но ещё X11 позволяет работать со старыми версиями тулкитов. Грамотно статически слинкованная прога, использующая, например, Qt3, вполне может работать в современном линуксе, пока в нём есть реализация X11. А вот отказ от X11 окончательно вышибает из-под этой проги табуретку.

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

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

XFree86

Это разве не предок текущего Xorg? Он мёртвый.

есть ещё что-то под винду...

XMing. Тоже мёртвый.

А есть ещё XQuartz под macOS. И судя по всему, его тащат лишь для совместимости с неактуальным и старым софтом. Софт из AppStore не использует его и вовсе. И не ровён час, он тоже отправится на помойку.

А был ещё путь написать новую реализацию X11, не ломая совместимости, ну и заодно предложить парочку новых полезных расширений для X11.

Парочку? Куда уж больше расширений? Что в этом X11/Xorg уже не было? Был свой бинарный транслятор Elf/a.out, сервер печати, свой тулкит Xt, своя реализация шрифтов, куча хреновоработающих систем ввода (X11, Xinput 1.0, Xinput 2.0, Xinput 2.2) и где это всё? Кануло в лета.

X11 и его эталонная реализация Xorg — это позор UNIX-Way как такого. Ужасно спроектированный протокол и комбайн, который абсолютно ничего не может сделать нормально. Вот потому-то и начали делать Wayland, а не X12.

Потому что, чтобы

заодно предложить парочку новых полезных расширений для X11

Нужно понимать, как работает Xorg. А это, цитата разработчиков Xorg:

Есть всего три человека, которые действительно понимают, как подсистемы ввода уживаются вместе... И я бы хотел не быть одним из них
(c) Daniel Stone

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

xedit, xterm, xbiff, xclock, xcalc... Слышали про них и даже применяли явно больше, чем полтора землекопа, хотя сейчас они и впрямь не слишком популярны.

Ага, xeyes ещё забыл. У всего этого есть гораздо более функциональные и популярные аналоги. И они были ещё в начале нулевых.

Грамотно статически слинкованная прога, использующая, например, Qt3

А много таких? А не упрётся ли это в первую очередь во что-нибудь типа:

version `GLIBCXX_3.4.9' not found (required by build/ALPHA_SE/m5.opt)

И только потом в иксы.

А почему не спасёт XWayland?

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от hobbit

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

LiBer ★★★
()
Последнее исправление: LiBer (всего исправлений: 1)
Ответ на: комментарий от hobbit

Что ж ты всё время одну и ту же пластинку заводишь. Ведь сотни раз уже разжёвывалось.

Не нарушая совместимости, всех косяков иксов ты не исправишь. И кучу легаси расширений не уберёшь.

А с wayland'ом это всё запрячут в XWayland и будут стараться запускать как можно реже, только по необходимости.

Если ты переживаешь, что XWayland выкинут, то не переживай. Это не часть вэйланда, а часть Xorg. Просто порт Xorg на другую оконную систему, так же, как Xming и XQuartz. Покуда wayland поддерживает обратную совместимость, он будет работать и ты сможешь запускать свой любимый xterm сколько угодно. Xeyes не сможешь, да. Точнее работать не будут.

Ivan_qrt ★★★★★
()

Нормально, что у wayland-server.h нету документации? Например у wl_global_*. В мане пусто, в интернетах ничего не нашел. Можно, конечно, копнуть сорцы weston'a, или более лёгких реализаций, но хотелось бы нормального объяснения текстом как оно вообще работает. Это я плохо ищу или реально не завезли доки?

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

И да, если верить тем кто делает wayland, то код иксов ужасен

Им можно верить, потому что они и есть разработчики Xorg :)

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

под винду можно написать полноценное приложение без тулкитов? И под иксы можно было

Да нельзя было: менюхи, кнопочки - в винде для них есть API, а в иксах нет. Может быть, ты про Xt думаешь, но это тулкит.

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

Есть всего три человека, которые действительно понимают, как подсистемы ввода уживаются вместе...

Слишком оптимистичное заявление. В них больше всех разбирается Peter Hutterer, но я думаю, что даже он уже запутался :)

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

Не совсем так, это те люди, кто последними приложили руки к xorg.

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

И да, если верить тем кто делает wayland, то код иксов ужасен

Им можно верить, потому что они и есть разработчики Xorg :)

Это, может быть, просто субъективное мнение: когда работаешь со старым кодом, который непонятно что делает, то возникают такие мысли. Но вот код weston тоже конфеткой не назовешь: написан на C со всем вытекащим вырвиглазием при реализации ООП, документации никакой.

dt1 ★★
()
Последнее исправление: dt1 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.