AIMP Forum
AIMP for PC => Вопросы / Questions => Topic started by: pdy on May 17, 2026, 23:22:13
-
На некоторых DE особенно WM которые поддерживают только Wayland (например hyprland), не очень стабильно работают с x11 приложениями. Насколько я знаю в Delphi имеется возможность написания оконных приложений под Wayland, и от этого вопрос, почему был выбран x11? Планируется ли в дальнейшем миграция на Wayland?
-
X11 требуется для работы глобальных горячих клавиш. На сколько я читал форумы, аналога XGrab в Wayland нет, а люди советуют использовать разного рода ухищрения, что меня категорически не устраивает.
Насколько я знаю в Delphi имеется возможность написания оконных приложений под Wayland
Не имеется. Delphi умеет только консольные приложения для линукса.
Планируется ли в дальнейшем миграция на Wayland?
Если не найдем аналога XGrab-у - нет.
-
Интересно, насчёт глобальных горячих клавиш даже и не задумывался - действительно проблема. Спасибо за ответ
-
Delphi умеет только консольные приложения для линукса.
Да, я понимаю. Я имел в виду компиляцию с использованием библиотек
Если не найдем аналога XGrab-у - нет.
Я глянул в obs используется XDG Desktop Portal, он замечательно подходит, но обёртки под Delphi он не имеет. Здесь скорее упор идёт в язык, а не в поиск аналогов, к сожалению. Так что да, ситуация патовая.
-
Здесь скорее упор идёт в язык
Причем здесь язык? Причем Delphi?
используется XDG Desktop Portal, он замечательно подходит
Скиньте ссылку, посмотрю, как они это сделали (если сделали). Проблема именно в глобальных горячих клавишах, когда приложение свернуто и не имеет фокуса.
-
Скиньте ссылку, посмотрю, как они это сделали (если сделали)
Оказывается в реализации под wayland у них обработчик событий пустой... Так что да, вы были абсолютно правы, язык ни при чем, это ограничение wayland'а, xdg не поможет, он там для другого используется. У меня было стойкое ощущение что там работают глобальные горячие клавишы под wayland, проверил - это не так.
https://github.com/obsproject/obs-studio/blob/5dacbb63fb17bbbf5bc556ec87f19f9cf8f962cf/libobs/obs-nix-wayland.c#L261 - в этом методе под комментарием написано почему так.
в obs просто написаны одновременно две реализации для x11 и wayland. И похоже, разработчики wayland не собираются вводить api для глобальных клавиш, из-за безопасности.
-
И похоже, разработчики wayland не собираются вводить api для глобальных клавиш, из-за безопасности.
Да, я везде встречаю эту фразу... нельзя определить координаты мыши вне приложения, нельзя перехватывать хоткеи...
Когда я начинал портирование, главной моей целью было дать пользователям то, чего не может дать WINE-версия приложения. Хоткеи - один из этих пунктов. Поэтому будем сидеть на Х11 пока от нее не откажутся со всем, а что делать...
-
Вот что накопал:
- Для работы глобальных клавиш в Wayland, когда окно вне фокуса, есть XDG Desktop Portal (https://wiki.archlinux.org/title/XDG_Desktop_Portal_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)). Хоть он и разработан для Flatpak, но им могут пользоваться любые приложения.
- Документация по org.freedesktop.portal.GlobalShortcuts есть тут (https://flatpak.github.io/xdg-desktop-portal/docs/doc-org.freedesktop.portal.GlobalShortcuts.html).
- Правда дальше открывается самое интересное. Каждое окружение должно реализовывать свой бэкенд для XDG Desktop Portal, в рамках которого должна быть реализация интерфейса Global shortcuts portal. Согласно вики Арча (https://wiki.archlinux.org/title/XDG_Desktop_Portal#List_of_backends_and_interfaces), на данный момент его поддерживают только KDE, Gnome, Deepin и Hyprland.
- Какая-то реализация на С++ в EasyEffects (https://github.com/wwmm/easyeffects/blob/master/src/global_shortcuts.cpp) или реализация в Chromium (https://chromium-review.googlesource.com/c/chromium/src/+/5871484).
-
Спасибо, посмотрю.