Wayland jest alternatywą dla xdotoola Xorga?

16

xdotool jest ładną aplikacją X, zwykle używam jej do tworzenia makropoleceń (takich jak alt + f4 lub ctrl + w lub ctrl + alt + backspace lub coś takiego)

Jest naprawdę łatwy w użyciu i wygodny, ale nie znam żadnego takiego programu kompatybilnego z drogą lądową. czy jest jakiś sposób, aby wysyłać sygnały wejściowe myszy i klawiatury do Wayland teraz podobne do Xdotool dla X?

Działa w dużej mierze teraz z xwayland, ale nie wszystkie polecenia działają (np. Alt + f4, xev może nawet odczytać wejście alt + f4, ale nie wyzwala zakończenia aplikacji, jak naciśnięcie jej na klawiaturze), jest też kwestia potencjalnie nie używa Xwayland.

Cestarian
źródło

Odpowiedzi:

3

Nie, ze względów bezpieczeństwa takie funkcje zostały wyraźnie wyłączone z projektu Wayland. (Czytanie danych wejściowych innych programów jest największym problemem, ale zezwolenie na wysyłanie fałszywych danych wejściowych do innych programów może również prowadzić do problemów).

To powiedziawszy, spodziewam się, że niektóre Wayland WMs ostatecznie zaimplementują jakąś funkcję makr; w końcu będą musieli obsługiwać klawiatury ekranowe i sterowanie głosowe (dla ułatwienia dostępu).

Ale gdyby taka funkcja istniała, zależałoby to od używanego kompozytora Waylanda: Weston? KWin KDE? Powłoka GNOME? Oświecenie? W Wayland nie ma podziału „serwer wyświetlania - menedżer okien”; menedżer okien jest serwerem Wayland i decyduje, które funkcje wdrożyć (jako podprotokole Wayland lub jako interfejsy API D-Bus lub podobne).

użytkownik1686
źródło
1
Myślę, że powinno być możliwe stworzenie takiego programu, który działałby dla wszystkich kompozytorów Wayland. Libinput przekazuje dane wejściowe użytkownika do wayland, a poprzez libinput można wywoływać alt + f4 i inne polecenia, które używają funkcji wayland. Wszystko, co musisz zrobić, to oszukać libinput w czytaniu makra jako klawiatury lub myszy; tak myślę, ale nie mam pojęcia, jak to zrobić.
Cestarian
@Cestarian: Trzeba będzie stworzyć fałszywe urządzenie wejściowe z funkcją uinput jądra.
user1686
1
nie powinno to być takie trudne, pamiętam, że raz to zrobiłem przy pracy ze sterownikami, może jeśli spojrzę na ten kod, to uda mi się jakoś wymyślić. (Chociaż nigdy nie wiedziałem, co wtedy robiłem)
Cestarian
1
Na liście mailowej znajdował się RFC: RFC: Interfejs do wstrzykiwania zdarzeń wejściowych i Dodaj interfejs API do robienia zrzutów ekranu i nagrywania zrzutów ekranu . Wygląda na to, że wyzwaniom można sprostać za pomocą dodatkowej pracy nad wzmocnieniem bezpieczeństwa.
Ben Creasy
3

Obecnie nie ma idealnego rozwiązania, ale istnieje jedno: ydotool .

Używa interfejsu uinput jako backendu i nie ma zależności od serwerów wyświetlających.

Satori Komeiji
źródło
Niestety nie mogłem go uruchomić na Ubuntu 19.04. Po zainstalowaniu libboost-program-options-dev, libevdevplus, libuinputplusi wreszcie ydotoolsam , ale ja wciąż sięydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a