Alternative à Wayland pour xdotool de xorg?

16

xdotool est une belle application X, j'ai tendance à l'utiliser pour créer des macro-commandes (comme alt + f4 ou ctrl + w ou ctrl + alt + backspace ou quelque chose comme ça)

C'est vraiment facile à utiliser et pratique, mais je ne connais aucun programme compatible avec Wayland comme celui-ci. Existe-t-il un moyen d'envoyer des signaux d'entrée de souris et de clavier à Wayland actuellement similaire à xdotool pour X?

Cela fonctionne en grande partie avec xwayland en ce moment, mais toutes les commandes ne fonctionnent pas (comme alt + f4, xev peut même lire l'entrée alt + f4 mais cela ne déclenche pas la fin de l'application comme en appuyant dessus sur le clavier), il y a aussi la question de potentiellement pas utiliser xwayland.

Cestarian
la source

Réponses:

3

Non, de telles fonctionnalités ont été explicitement exclues de la conception Wayland pour des raisons de sécurité. (La lecture des entrées d'autres programmes est le plus gros problème, mais autoriser l'envoi de fausses entrées à d'autres programmes peut également entraîner des problèmes.)

Cela dit, je m'attends à ce que certains WM Wayland finissent par implémenter une sorte de fonction de macros; après tout, ils devront prendre en charge les claviers à l'écran et la commande vocale (pour l'accessibilité).

Mais si une telle fonctionnalité existait, cela dépendrait du compositeur Wayland que vous utilisez: Weston? KWin de KDE? Shell GNOME? Éclaircissement? Il n'y a pas de "serveur d'affichage - gestionnaire de fenêtres" divisé dans Wayland; le gestionnaire de fenêtres est le serveur Wayland et décide des fonctionnalités à implémenter (sous forme de sous-protocoles Wayland ou d'API D-Bus ou autres).

user1686
la source
1
Il devrait être possible, je pense, de créer un tel programme qui fonctionne pour tous les compositeurs de Wayland. Libinput transmet les entrées utilisateur à wayland, et c'est via libinput que l'alt + f4 et d'autres commandes qui utilisent une fonction wayland peuvent être déclenchées. Tout ce que vous avez à faire est d'inciter libinput à lire une macro en tant qu'entrée clavier ou souris; c'est ce que je pense, mais je ne sais pas comment le faire moi-même.
Cestarian
@Cestarian: Vous devez créer un faux périphérique d'entrée avec la fonction uinput du noyau.
user1686
1
cela ne devrait pas être si difficile, je me souviens l'avoir fait une fois dans certains travaux de pilote, peut-être que si je regarde ce code, je pourrais trouver un moyen. (Bien que je n'ai jamais su ce que je faisais à l'époque)
Cestarian
1
Il y avait un RFC sur une liste de diffusion: RFC: Interface pour l'injection d'événements d'entrée et Ajouter une API pour prendre des captures d'écran et enregistrer des screencasts . Il semble que les défis pourraient être relevés avec un travail supplémentaire de renforcement de la sécurité.
Ben Creasy
3

Il n'y a actuellement aucune solution parfaite, mais il y en a une proche: ydotool .

Il utilise l' interface uinput comme backend et ne dépend pas des serveurs d'affichage.

Satori Komeiji
la source
Malheureusement, je n'ai pas pu le faire fonctionner sur Ubuntu 19.04. Je l' ai installé libboost-program-options-dev, libevdevplus, libuinputpluset enfin le ydotoollui - même , mais je suis encore en trainydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a