GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mengirim Keystrokes (f5) Dari Terminal Ke Program Gui?

Saya menggunakan Raspberry Pi yang dikombinasikan dengan Chromium (mode kios) untuk menampilkan beberapa statistik. Pi tidak memiliki keyboard yang terhubung jadi saya mencari solusi untuk mengirim penekanan tombol dari terminal ke proses Chromium (tab). Input normal berfungsi tetapi bagaimana cara mengirim sesuatu seperti F5 (kunci khusus:penyegaran peramban) melalui solusi ini?

# pidof chromium
20809 20790 20788 20786 20783
# echo 'some text' > /proc/20809/fd/0

Jawaban yang Diterima:

Program GUI tidak membaca dari input standar mereka, mereka mendapatkan input dari server X. Ada alat untuk menyuntikkan penekanan tombol ke jendela. xdotool cukup umum dan nyaman.

Anda harus menemukan ID jendela yang ingin Anda kirimi penekanan tombol. Anda dapat melakukannya dengan xdotool. xdotool search --class Chrome mengembalikan daftar ID jendela dari semua jendela Chrome. Jika ini mengembalikan lebih dari satu, Anda harus memilih yang Anda inginkan. Anda dapat menggunakan xdotool search --name untuk mencocokkan pada judul bukan kelas. Anda juga dapat mengurai output wmctrl dan mengekstrak ID jendela yang diinginkan.

Setelah Anda menemukan ID jendela yang tepat, Anda dapat memanggil xdotool untuk menyuntikkan keystroke. Sayangnya, banyak aplikasi yang menolak kejadian sintetik, yaitu penekanan tombol dan kejadian mouse yang dikirim oleh aplikasi lain. Ini adalah kasus dengan versi Chrome saat ini. Dimungkinkan untuk menyuntikkan penekanan tombol dari aplikasi lain dengan mekanisme yang berbeda, tetapi itu membutuhkan jendela untuk difokuskan. Anda dapat melakukan semua itu dengan xdotool, tetapi itu akan menyebabkan fokus berkedip cepat ke jendela Chrome dan kembali. Cuplikan berikut mengirimkan F5 ke jendela Chrome pertama (dalam urutan yang agak acak).

xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)

Atau dengan xdotool versi lama:

xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)

Ingat bahwa ini mengirim F5 ke jendela itu dan terserah program untuk memutuskan apa yang harus dilakukan dengannya. Di Chrome, ini memuat ulang tab saat ini.


Linux
  1. Bagaimana cara membuka tab baru di Terminal GNOME dari baris perintah?

  2. Bagaimana cara membuat file di Linux dari jendela terminal?

  3. Bagaimana cara memulai program linux GUI dari baris perintah, tetapi terpisah dari baris perintah?

  1. Cara Mencari Web Dari Terminal Di Linux

  2. Gnome (Ubuntu):bagaimana cara membawa jendela program ke depan menggunakan baris perintah dari terminal?

  3. Bagaimana cara mematikan Linux pada waktu tertentu dari terminal?

  1. Jalankan Program Gui Saat Startup?

  2. Cara Menggunakan SSMTP untuk Mengirim Email dari Terminal Linux

  3. Bagaimana cara mengirim sinyal ke program yang dijalankan dalam wadah buruh pelabuhan?