Альтернатива Wayland для xdotool от xorg?

16

xdotool - хорошее X-приложение, я склонен использовать его для создания макрокоманд (например, alt + f4 или ctrl + w или ctrl + alt + backspace или что-то в этом роде)

Это действительно легко и удобно, но я не знаю ни одной подобной программы, совместимой с Wayland. Есть ли способ отправить входные сигналы мыши и клавиатуры в Wayland прямо сейчас, как Xdotool для X?

Сейчас он работает в основном с xwayland, но не все команды работают (например, alt + f4, xev может даже читать ввод alt + f4, но это не вызывает завершение приложения, как нажатие на клавиатуре), также есть вопрос потенциально не используя xwayland.

Cestarian
источник

Ответы:

3

Нет, такие функции были явно исключены из проекта Wayland по соображениям безопасности. (Чтение ввода других программ является самой большой проблемой, но разрешение фальшивого ввода отправлять другим программам также может привести к проблемам.)

Тем не менее, я ожидаю, что некоторые Wayland WM в конечном итоге реализуют какую-то функцию макросов; В конце концов, они будут нуждаться в поддержке на экране клавиатуры и голосового управления (для доступности).

Но если бы такая функция существовала, это зависело бы от того, какой компилятор Wayland вы используете: Weston? KDE KWin? GNOME Shell? Просвещение? В Wayland нет разделения «сервер дисплея - оконный менеджер»; оконный менеджер - это сервер Wayland, который решает, какие функции следует реализовать (в виде суб-протоколов Wayland, API-интерфейсов D-Bus и т. д.).

user1686
источник
1
Я думаю, что возможно создать такую ​​программу, которая будет работать для всех композиторов Wayland. Libinput направляет пользовательский ввод в wayland, и именно через libinput могут быть запущены alt + f4 и другие команды, использующие функцию wayland. Все, что вам нужно сделать, это заставить libinput читать макрос как ввод с клавиатуры или мыши; это то, что я думаю, но я понятия не имею, как это сделать сам.
Cestarian
@Cestarian: Вам нужно создать поддельное устройство ввода с функцией ядра uinput.
user1686
1
это не должно быть таким сложным, я вспоминаю, что когда-то делал это в какой-то работе с драйверами, возможно, если бы я просто посмотрел на этот код, я мог бы найти какой-то способ. (Хотя я никогда не знал, что я делал в то время)
Cestarian
1
В списке рассылки был RFC: RFC: интерфейс для ввода событий ввода и добавления API для создания снимков экрана и записи снимков экрана . Похоже, проблемы могут быть решены с помощью дополнительной работы по усилению безопасности.
Бен Криси
3

В настоящее время нет идеального решения, но есть близкое: ydotool .

Он использует интерфейс uinput в качестве бэкэнда и не зависит от серверов отображения.

Сатори Комейджи
источник
К сожалению, я не смог заставить его работать на Ubuntu 19.04. Я установил libboost-program-options-dev, libevdevplus, libuinputplusи , наконец, ydotoolсам , но я все еще получаюydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a