¿Alternativa de Wayland para xdotool de xorg?

16

xdotool es una buena aplicación X, tiendo a usarla para crear comandos de macro (como alt + f4 o ctrl + w o ctrl + alt + retroceso o algo así)

Es realmente fácil de usar y conveniente, pero no conozco ningún programa compatible con Wayland como este. ¿Hay alguna forma de enviar señales de entrada de mouse y teclado a wayland en este momento similar a xdotool para X?

Funciona en gran medida con xwayland en este momento, pero no todos los comandos funcionan (como alt + f4, xev incluso puede leer la entrada alt + f4 pero no activa la finalización de la aplicación como presionarlo en el teclado) también está la cuestión de potencialmente no está usando xwayland.

Cestariano
fuente

Respuestas:

3

No, tales características se excluyeron explícitamente del diseño de Wayland por razones de seguridad. (Leer la entrada de otros programas es el mayor problema, pero permitir que se envíen entradas falsas a otros programas también puede generar problemas).

Dicho esto, espero que algunos Wayland WM implementen algún tipo de función de macros; después de todo, deberán admitir teclados en pantalla y control de voz (para accesibilidad).

Pero si existiera tal característica, dependería de qué compositor de Wayland esté usando: ¿Weston? ¿KWin de KDE? GNOME Shell? ¿Iluminación? No hay un "servidor de visualización - administrador de ventanas" dividido en Wayland; el administrador de ventanas es el servidor de Wayland y decide qué características implementar (ya sea como sub-protocolos de Wayland o como API de D-Bus o similares).

usuario1686
fuente
1
Creo que debería ser posible crear un programa que funcione para todos los compositores de wayland. Libinput reenvía la entrada del usuario a wayland, y es a través de libinput que se pueden activar alt + f4 y otros comandos que usan una función wayland. Todo lo que tiene que hacer es engañar a libinput para que lea una macro como entrada de teclado o mouse; es lo que pienso, pero no tengo idea de cómo hacerlo yo mismo.
Cestarian
@Cestarian: Tendría que crear un dispositivo de entrada falso con la función uinput del kernel.
user1686
1
No debería ser tan difícil, recuerdo haberlo hecho en algún trabajo de controladores una vez, tal vez si solo veo ese código podría encontrar alguna forma. (Aunque nunca supe lo que estaba haciendo en ese momento)
Cestarian
1
Había un RFC en una lista de correo: RFC: Interfaz para la inyección de eventos de entrada y Agregar una API para tomar capturas de pantalla y grabar screencasts . Parece que los desafíos podrían abordarse con un trabajo de refuerzo de seguridad adicional.
Ben Creasy
3

Actualmente no hay una solución perfecta, pero hay una solución cercana: ydotool .

Utiliza la interfaz uinput como back-end y no depende de los servidores de visualización.

Satori Komeiji
fuente
Lamentablemente no pude hacerlo funcionar en Ubuntu 19.04. He instalado libboost-program-options-dev, libevdevplus, libuinputplusy finalmente el ydotoolmismo , pero todavía estoyydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a