Wayland-Alternative für xorgs xdotool?

16

xdotool ist eine nette X-Anwendung, ich neige dazu, sie zum Erstellen von Makrobefehlen zu verwenden (wie Alt + F4 oder Strg + W oder Strg + Alt + Rücktaste oder ähnliches)

Es ist wirklich einfach zu bedienen und bequem, aber ich kenne kein Wayland-kompatibles Programm wie dieses. Gibt es eine Möglichkeit, Maus- und Tastatureingabesignale ähnlich wie bei xdotool for X an wayland zu senden?

Im Moment funktioniert es weitgehend mit xwayland, aber nicht alle Befehle funktionieren (wie Alt + F4, xev kann sogar die Alt + F4-Eingabe lesen, aber es löst nicht die Programmbeendigung aus, wie wenn man sie auf der Tastatur drückt) Möglicherweise wird xwayland nicht verwendet.

Cestarian
quelle

Antworten:

3

Nein, solche Funktionen wurden aus Sicherheitsgründen ausdrücklich vom Wayland-Design ausgeschlossen. (Das Lesen der Eingaben anderer Programme ist das größte Problem, aber das Senden von falschen Eingaben an andere Programme kann ebenfalls zu Problemen führen.)

Trotzdem erwarte ich, dass einige Wayland-WMs irgendwann eine Art Makrofunktion implementieren. schließlich sind sie werden müssen On-Screen - Tastatur und Sprachsteuerung (für Zugänglichkeit) unterstützen.

Aber wenn es eine solche Funktion gäbe, würde sie davon abhängen, welchen Wayland-Compositor Sie verwenden: Weston? KDE ist KWin? GNOME-Shell? Erleuchtung? In Wayland gibt es keinen geteilten "Display Server - Window Manager". Der Fenstermanager ist der Wayland-Server und entscheidet, welche Funktionen implementiert werden sollen (entweder als Wayland-Unterprotokolle oder als D-Bus-APIs oder dergleichen).

user1686
quelle
1
Ich denke, es sollte möglich sein, ein solches Programm zu erstellen, das für alle Wayland-Compositors funktioniert. Libinput leitet Benutzereingaben an wayland weiter, und über libinput können Alt + F4 und andere Befehle, die eine wayland-Funktion verwenden, ausgelöst werden. Sie müssen lediglich libinput überlisten, um ein Makro als Tastatur- oder Mauseingabe zu lesen. ist, was ich denke, aber ich habe keine Ahnung, wie ich es selbst machen soll.
Cestarian
@Cestarian: Sie müssten ein gefälschtes Eingabegerät mit der Eingabe-Funktion des Kernels erstellen.
user1686
1
es sollte nicht so schwierig sein, ich erinnere mich, dass ich es einmal in einer Fahrerarbeit gemacht habe, vielleicht könnte ich es irgendwie herausfinden, wenn ich nur diesen Code betrachte. (Obwohl ich nie wusste, was ich zu der Zeit tat)
Cestarian
1
Es gab einen RFC auf einer Mailingliste: RFC: Schnittstelle zum Einfügen von Eingabeereignissen und Hinzufügen einer API zum Aufnehmen von Screenshots und Aufzeichnen von Screencasts . Es hört sich so an, als könnten die Herausforderungen mit zusätzlichen Sicherheitsmaßnahmen bewältigt werden.
Ben Creasy
3

Es gibt derzeit keine perfekte Lösung, aber eine nahe liegende: ydotool .

Es verwendet die uinput- Schnittstelle als Backend und ist nicht von Anzeigeservern abhängig.

Satori Komeiji
quelle
Leider konnte ich es unter Ubuntu 19.04 nicht zum Laufen bringen. Ich installierte libboost-program-options-dev, libevdevplus, libuinputplusund schließlich die ydotoolselbst , aber ich bin noch immerydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
M93a