Alternatif wayland untuk xdotool xorg?

16

xdotool adalah aplikasi X yang bagus, saya cenderung menggunakannya untuk membuat perintah makro (seperti alt + f4 atau ctrl + w atau ctrl + alt + backspace atau sesuatu seperti itu)

Ini sangat mudah digunakan dan nyaman, tetapi saya tidak tahu ada program yang kompatibel dengan wayland seperti ini. apakah ada cara untuk mengirim sinyal input mouse dan keyboard ke wayland sekarang mirip dengan xdotool untuk X?

Ini bekerja sebagian besar dengan xwayland sekarang, tetapi tidak semua perintah bekerja (seperti alt + f4, xev bahkan dapat membaca input alt + f4 tetapi tidak memicu penghentian aplikasi seperti menekannya pada keyboard) ada juga masalah berpotensi tidak menggunakan xwayland.

Pemeliharaan
sumber

Jawaban:

3

Tidak, fitur seperti itu secara eksplisit dikecualikan dari desain Wayland untuk alasan keamanan. (Membaca input program lain adalah masalah terbesar, tetapi membiarkan input palsu dikirim ke program lain juga dapat menyebabkan masalah.)

Yang mengatakan, saya berharap beberapa WM Wayland akhirnya mengimplementasikan semacam fitur makro; setelah semua, mereka akan perlu untuk mendukung on-screen keyboard dan kontrol suara (untuk aksesibilitas).

Tetapi jika fitur seperti itu ada, itu akan tergantung pada komposer Wayland mana yang Anda gunakan: Weston? KWE KDE? GNOME Shell? Pencerahan? Tidak ada "display server - window manager" terpecah di Wayland; manajer jendela adalah server Wayland dan memutuskan fitur mana yang harus diterapkan (baik sebagai sub-protokol Wayland atau sebagai API D-Bus atau semacamnya).

pengguna1686
sumber
1
Seharusnya mungkin saya berpikir untuk membuat program seperti itu yang berfungsi untuk semua penyusun wayland. Libinput meneruskan input pengguna ke wayland, dan melalui libinput itulah alt + f4 dan perintah lain yang menggunakan fungsi wayland dapat dipicu. Yang harus Anda lakukan adalah menipu libinput agar dapat membaca makro sebagai input keyboard atau mouse; adalah apa yang saya pikirkan, tetapi saya tidak tahu bagaimana melakukannya sendiri.
Cadangan
@Cestarian: Anda harus membuat perangkat input palsu dengan fitur uinput kernel.
user1686
1
Seharusnya tidak sesulit itu, saya ingat pernah melakukannya di beberapa pekerjaan pengemudi, mungkin jika saya hanya melihat kode itu saya bisa mencari cara. (Meskipun saya tidak pernah tahu apa yang saya lakukan pada saat itu)
Cadangan
1
Ada RFC di milis: RFC: Antarmuka untuk injeksi peristiwa input dan Tambahkan API untuk mengambil tangkapan layar dan merekam screencast . Sepertinya tantangan bisa diatasi dengan beberapa pekerjaan pengerasan keamanan tambahan.
Ben Creasy
3

Saat ini tidak ada solusi yang sempurna, tetapi ada yang dekat: ydotool .

Ia menggunakan antarmuka uinput sebagai backend, dan tidak memiliki ketergantungan pada server tampilan.

Satori Komeiji
sumber
Sayangnya saya tidak bisa menjalankannya di Ubuntu 19.04. Saya telah menginstal libboost-program-options-dev, libevdevplus, libuinputplusdan akhirnya ydotoolitu sendiri , tapi aku masih mendapatkanydotool: error while loading shared libraries: libboost_program_options.so.1.65.1: cannot open shared object file: No such file or directory
m93a