LINUX.ORG.RU

Wayland в отображает окно в рандомном месте

 


0

2

Всем привет, изучаю wayland и его клиентские h все что хотел удалось отобразить, всем доволен кроме одного НО. При первой привязке wl_buffer к wl_surface левый верхний угол нового окна оказывается в случайном месте экрана. Покопался на форумах и ни чего свежее 2014 года не нашел. Мельком просмотрел создание поверхности из композитора и привязку буфера в доках и не нашел ни чего про стартовую позицию. С форумов я понял что разработчик изначально не хотел пользователю давать абсолютные координаты и поэтому механизма нет, но то был 2014. К сожалению не смог найти ни чего посвежее. В курсе кто нибудь как это можно сделать через api wayland(желательно без использования функций weston)? P.S. Нашел костыльное решение: выделяем пустой буффер размером под все разрешение экрана, биндим его, разрушаем, а потом уже ТОЛЬКО ПЕРВЫЙ целевой буфер wl_surface_damage и wl_surface_attach с нужным сдвигом по x и y. Далее обновляем буфферы со сдвигом 0. Проверил эвенты курсора, работают правильно, ливают прямо на стыке целевого буфера. Но хотелось бы использовать сдвиг без костылей.

Какой ты протокол используешь? Старые туториалы лучше не смотреть, они часто используют wl_shell, который уже много лет deprecated. В xdg_shell с помощью xdg_request можно запросить move.

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

Да я юзаю wl_shell_interface, мой registry_global предлагает 3 shell:

wl_shell

zxdg_shell_v6

weston_desktop_shell

Но пока я не нахожу объявлений этих интерфейсов:

extern const struct wl_interface wl_shell_interface;

Поищу, xdg это отдельный пакет? потому что прямым поиском по /usr/include не ищет (у меня микро компьютер на buildroot, так что возможно не все нужные пакеты развернуты)

Спасибо за наводку.

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

Посмотри вот эту тему и всю книгу в целом. Там достаточно подробно объясняется, что такое xdg shell, и с чем его едят.

Непосредственно xml с описанием протокола лежит тут, рядом с другими. Как у тебя назван пакет, я не знаю, у меня это и есть wayland-protocols.

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

Изучил весь этот учебник, хочу уточнить, вы имели в виду xdg_toplevel.move ??? Другие я не нашел в xml. И этот запрос не дает при старте аппы выбрать положение окна, а сам в обход программиста двигает окно через wl_seat (я тестил на мышке). Плюс в учебнике еще раз подчеркнуто, что им не нравится идея, когда аппа знает свое абсолютное положение.

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

вы имели в виду xdg_toplevel.move

Да.

И этот запрос не дает при старте аппы выбрать положение окна, а сам в обход программиста двигает окно через wl_seat (я тестил на мышке)

Да, это интерактивный move. Вы можете использовать zwlr_layer_shell, там есть overlay layer. Это расширение, но оно поддерживается любым композитором, основанным на wlroots. Для примера посмотрите, как сделан lavalauncher, файл src/layersurface.c.

Но вообще, для большинства приложений задавать координаты самим – моветон.

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

Там цель выводить что то вроде пушей снизу слева, но когда пуши появляются там где вздумается, то выглядит не оч. Может я просто не тем инструментом пользуюсь?

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

ни чего…. кто нибудь

Правельно песать таг: ни че го…. кто-не-бу-дь

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