Alternativa de Wayland para o xdotool do xorg?

16

O xdotool é um bom aplicativo X, costumo usá-lo para criar comandos de macro (como alt + f4 ou ctrl + w ou ctrl + alt + backspace ou algo assim)

É realmente fácil de usar e conveniente, mas não conheço nenhum programa compatível com wayland como este. existe alguma maneira de enviar sinais de entrada do mouse e do teclado para o wayland agora semelhantes ao xdotool for X?

Ele funciona amplamente com o xwayland no momento, mas nem todos os comandos funcionam (como alt + f4, xev pode até ler a entrada alt + f4, mas não aciona o encerramento do aplicativo, como pressioná-lo no teclado). potencialmente não usando xwayland.

Cestarian
fonte

Respostas:

3

Não, esses recursos foram explicitamente excluídos do design do Wayland por razões de segurança. (Ler a entrada de outros programas é o maior problema, mas permitir que entradas falsas sejam enviadas para outros programas também pode causar problemas.)

Dito isso, espero que alguns Wayland WMs implementem algum tipo de recurso de macros; afinal, eles vão precisar para suportar teclados na tela e controle de voz (para acessibilidade).

Mas se esse recurso existisse, dependeria de qual compositor de Wayland você está usando: Weston? O KWin do KDE? Shell do GNOME? Iluminação? Não há "servidor de exibição - gerenciador de janelas" dividido em Wayland; o gerenciador de janelas é o servidor Wayland e decide quais recursos implementar (como subprotocolo de Wayland ou como APIs de D-Bus ou outras).

user1686
fonte
1
Acho que devo criar um programa que funcione para todos os compositores de wayland. O Libinput encaminha a entrada do usuário para o wayland, e é através do libinput que alt + f4 e outros comandos que usam a função wayland podem ser acionados. Tudo o que você precisa fazer é enganar a libinput para ler uma macro como entrada de teclado ou mouse; é o que penso, mas não tenho ideia de como fazer isso sozinho.
Cestarian
@ Cristian: Você teria que criar um dispositivo de entrada falso com o recurso de entrada do kernel.
user1686
1
não deve ser tão difícil, lembro-me de fazê-lo em algum trabalho de driver uma vez, talvez se eu apenas olhar para esse código eu poderia descobrir alguma maneira. (Embora eu nunca soubesse o que estava fazendo na época)
Cestarian
1
Havia uma RFC em uma lista de correspondência: RFC: interface para injeção de eventos de entrada e Adicionar uma API para tirar capturas de tela e gravar screencasts . Parece que os desafios poderiam ser enfrentados com algum trabalho adicional de proteção de segurança.
Ben Creasy
3

No momento, não existe uma solução perfeita, mas existe uma próxima: ydotool .

Ele usa o uinput interface como backend, e não tem nenhuma dependência em servidores de exibição.

Satori Komeiji
fonte
Infelizmente não consegui rodar no Ubuntu 19.04. Eu instalei libboost-program-options-dev, libevdevplus, libuinputpluse, finalmente, a ydotoolsi , mas ainda estou recebendoydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a