LINUX.ORG.RU

В Haiku появилась реализация Wayland с возможностью запуска GTK-приложений

 , , ,


4

1

Небольшая новость в преддверии свежей beta-версии Haiku.

Илья Чугин (@X512) портировал реализацию протокола Wayland, через которую стало возможно запускать GTK-приложения на Haiku. Данный слой совместимости использует модифицированный код libwayland. Он предоставляет библиотеку libwayland-client.so, совместимую с API и ABI, которая позволяет запускать приложения Wayland без изменений. Cервер работает не в отдельном процессе, а в виде аддона (плагина) в процессе приложения. Для этого была адаптирована библиотека libwayland-client.so. Вместо сокетов в сервере используется нативный цикл обработки сообщений на основе BLooper.

Ранее другим разработчиком уже была подготовлена начальная реализация прослойки для обеспечению совместимости с библиотекой Xlib, позволяющую запускать X11-приложения в Haiku без использования X-сервера. Прослойка реализована через эмуляцию функций Xlib при помощи трансляции вызовов в высокоуровневый графический API Haiku. Но она немного глючная по сравнению с Wayland-библиотекой Ильи.

Для теста в репозитории Герасима 3dEyes Троеглазова (@threedeyes) доступны следующие приложения:

Всех заинтересованных милости просим в наш чатик в телеграмме.

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



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 5)

Только одно уточнение: не сделал порт wayland (потому что это полнейшая чушь), а сделал композитор (ну не совсем традиционный, но не суть) wayland на базе графического API Гайки.

SkyMaverick ★★★★★
()

А нужность-то этой вашей Гойды Гайки обосновать может? Почему не Хурд хурдить? Почему не БЗДю бздить? Почему, в конце концов, Линукс не допиливать до вменяемого состояния?

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

Почему не Хурд хурдить? Почему не БЗДю бздить?

Потому что это всё не десктопные системы и в них нет единого системного API для GUI.

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

Может, это и хорошо, что система отделена от ГУИ? Вот в Маках примерно так же сделано, возможно, не стоит изобретать велосипед?

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

не сделал порт wayland (потому что это полнейшая чушь)

Не совсем чушь. Без доработки напильником libwayland в Haiku не собирается из-за epoll, eventfd и прочего. Так что элемент портирования тоже есть.

а сделал композитор (ну не совсем традиционный, но не суть) wayland на базе графического API Гайки.

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

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

Может, это и хорошо, что система отделена от ГУИ?

В Haiku система тоже отделена. GUI не в ядре работает. Вопрос в том, что есть официальный единый API для GUI, которым пользуются все программы. Это позволяет обеспечить лучшую интеграцию программ с системой и друг с другом.

Вот в Маках примерно так же сделано, возможно, не стоит изобретать велосипед?

Нет, там есть единый системный тулкит и GUI сервер, а не зоопарк как в Линуксе/BSD (в плане GUI Linux и BSD – примерно одно и тоже).

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

Есть экспериментальный Vulkan и OpenGL через Zink для некоторых видеокарт AMD. С учётом открытия ядерных исходников Nvidia и разработке открытых драйверов Vulkan NVK появляется возможность сделать поддержку видеокарт Nvidia Turing+.

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

Ну я к тому, что само по себе wayland - набор протоколов. libwayland - референсные реализации (там вроде как libwayland-client/server/scanner/egl).

Так что сделать порт wayland - это звучит бредово. Реализовал протокол waland (опционально список протоколов) - ок.

SkyMaverick ★★★★★
()

Осталось теперь портировать его в виде расширения на x.org

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

Так что сделать порт wayland - это звучит бредово.

Хорошо. Порт libwayland можно сделать? Это вполне конкретный API и ABI, от него например Mesa EGL зависит. На голом протоколе Wayland у вас не будут работать OpenGL/Vulkan.

Реализовал протокол waland

Там кстати собственно протокол не реализован потому что сокеты не используются, вместо этого передаются объекты wl_closure.

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

Этих доработок остро не хватает в линуксовэйланде, потому что монолитные композиторы, управляющие всем - отстой.

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

Я про смысл фразы в новости. Из новости получается что сделан порт XML-ек (потому что это и есть протокол). А надо было-бы «реализована поддержка протокола», или «подготовлена реализация протокола путём портирования» и т.д. и т.п. Но фраза порт wayland неправильная.

SkyMaverick ★★★★★
()
Последнее исправление: SkyMaverick (всего исправлений: 1)

Сколько она хоть потребляет памяти от старта.

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

Там кстати собственно протокол не реализован

в каждом клиентском процессе

Кажется, это лучшее, что происходило с wayland

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

Плюсую тоже не понял, почему сделали мини новость... Вполне тянет на полноценную. Все вопросы к @hobbit.

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

А так вообще, никакого негатива, плюсую за работу и вообще респект. Хоть гайкой и не пользуюсь, но работа интересная и в общем полезная.

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

Молодец, скушай конфетку.

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

Сщетаю автора большим молодцом! И себе интересное делает и остальным будет полезно. Тем не менее так же сщъетаю что гайка и вялый ненужны =) как минимум в том виде в котором они сейчас.

Код изменений не глядел @X512 долго колупался? В смысле много?

  • gnome-calculator как выглядит? А то там у него выпадайка меню прям в заголовке.
LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от SkyMaverick

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

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Wayland оказался путём наименьшего сопротивления в портировании GTK. Делать нативный бекэнд в GTK довольно трудно, надо хорошо понимать внутреннее устройство GTK и писать много кода. К тому же работу понадобится провести два раза: для GTK 3 и GTK 4. А с Wayland обе версии GTK работают с одной и той же реализацией Wayland.

gnome-calculator как выглядит?

Пока не пробовал собирать.

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

На мой взгляд, полноценной новостью был бы очередной релиз, в который всё это интегрировано. Но я не жадный, поправил.

Кстати, каст до меня не дошёл, комментарий обнаружил случайно. И судя по тому, как он выглядит, комментарий сделан в лоркоде, там касты по-другому оформляются.

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

Все эти реализации должны РЕАЛИЗОВЫВАТЬ (ять!!) единый протокол, который называется wayland. Различия реализаций как раз в частях, которые протоколом не описаны (или потому что не могут быть описаны, либо потому что все разосрались к единому мнению пока не пришли)

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

А нет ли возможности сделать бэк-енд для GTK в нативный графический API Haiku, не привлекая Wayland?

P.S. А, оказывается, @X512 выше уже эту тему затронул.

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

X512 выше ответил как раз на этот счёт.

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

Все эти реализации должны РЕАЛИЗОВЫВАТЬ (ять!!) единый протокол, который называется wayland.

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

Различия реализаций как раз в частях, которые протоколом не описаны

В протоколе запрет на захват экрана и вот всё это. В реализациях для этого обходные пути. Это такая же реализация вайланда как wine реализация венды )))) Главное что-бы работало и всё. Конечно неких рамок придерживаются, люди хотят единообразия… Но, что поделать если архитекстура того что ты реализуешь ущербна, приходится допиливать. Вайланд идеален для встроек каких, мобилок и вот всего этого. Для чего-то кастомного, взять базу и расширить. Но для десктопа это тихий ужас. К тому же способствующий что программу написаную на кроссплатформенных тулкитах КАРЛ можно запустить без бубна только в определённой DE. Дикость, которая стала нормой :(

Долой вялый, Ватаку! Ааааааааааааааааааааааааа.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Вообще можно было офомить вяленый как расширение к иксам и всё

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

В протоколе запрет на захват экрана и вот всё это

Потому что, внезапно, протокол предназначен не только и исключительно для реализации десктопов. И что в X11 у нас для захвата экрана? Насколько я помню чуть менее, чем все шпарят через Xshm. Чем портал с пайпварью не устроили?

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

Нет нельзя, потому что для этого нужно сломать протокол X11.

Weston поверх X11 умеет работать. Сделать его без корневого окна и будет что-то вроде того что я сделал с Haiku.

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

Делать нативный бекэнд в GTK довольно трудно

И неблагодарно, сломают в любой момент. Там пользовательское API шаляй валяй. Едут как локомотив по кольцевой к ним попутно на ходу пристраивают домики, делают покраску, добавляют обшивку, а они с завидной регулярностью сворачивают в тоннель набитый колючей проволокой и всё с себя сбивают. Внося абсолютно бесполезные, но что-то ломающие изменения. Был бы я конспирологом подумал что они делают всё это или часть из этого что бы не допустить развитие актуальных форков и оставаться мейнстримом.

От любителей красить вагоны они уже не скрыто просто подключили к обшивке высокое напряжение в виде libadwaita. Пусть так сказать подгорает у маляров :D

Это конечно их право, их проект делают что хотят, какие претензии. Так то да. Спору нет. Но что-то грустно, ГТК же такой хороший был.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от X512

Так как я понял, он там ничего кроме рисования в окне, да реагирования на события и не делает. Это ж и есть embedded-сервер. Оно и weston в weston может запуститься. Я даже видел что Gtk виджет пилили, внутри которого запускался отдельный композитор. И оно работало.

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

Зоопарк это хорошо. Потому что Линукс это конструктор. Который каждый волен готовить как ему угодно. А когда единообразие, это скучно, это не Линукс и не замена Линуксу точно.

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

Нет нельзя, потому что для этого нужно сломать протокол X11

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

Потому что, внезапно, протокол предназначен не только и исключительно для реализации десктопов.

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

Да порталы завезли, но только после того когда люди были готовы на головах архитекторов вайланда ча-ча-ча танцеать :D

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

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

Ну всё, план есть. Бери, реализуй, я разрешаю. Код знаешь где. Мейнтейнеры Xorg-а задолбались и дизертировали с ринга. Но ты сдюжишь. Я в тебя верю.

Да порталы завезли, но только после того когда люди были готовы на головах архитекторов вайланда ча-ча-ча танцеать :D

Они вообще-то были и раньше, ещё во Flatpak. Просто пока буднично срались, по поводу реализации у кого-то (вот не помню у кого) возникла светлая идея, что вот уже всё есть и офигенно походит для решения задачи.

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

Есть экспериментальный Vulkan и OpenGL через Zink для некоторых видеокарт AMD. С учётом открытия ядерных исходников Nvidia и разработке открытых драйверов Vulkan NVK появляется возможность сделать поддержку видеокарт Nvidia Turing+.

Это интересно. Видел в репозитории Haiku Stellarium с патчами от Герасима (@threedeyes) и почему-то считал, что OpenGL уже есть на борту во вменяемом состоянии. Теперь же выясняется, что это не так, а значит использования «тяжелых» графических программ - боль. Насколько я прав или неправ?

P.S. Часть патчей @threedeyes втянул в апстрим Stellarium’а с аффиляцией

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

Видел в репозитории Haiku Stellarium с патчами от Герасима (@threedeyes) и почему-то считал, что OpenGL уже есть на борту во вменяемом состоянии.

В репозитории пока только програмная отрисовка Mesa llvmpipe (OpenGL) и lavapipe (Vulkan). Для таких программ как Stellarium этого вполне хватает на современных процессорах.

X512 ★★★★★
()

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

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

Не надо. Всё что нужно Гайке в качестве ДЕ - классическая панель и апплет управления шромкостью в стиле плазмовского. Всё остальное в ней хорошо. :)

R_He_Po6oT ★★★★
()

Всех причастных конгратулирую. На Гайке всё больше софта, но она всё больше обрастает прослойками. По швам не трещит?

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

Нет, через LLVM с поддержкой нескольких ядер процессора в составе Mesa. AGG только для 2D графики.

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