GNU/Linux >> Znalost Linux >  >> Linux

Jak posílat úhozy (f5) z terminálu do programu Gui?

K zobrazení některých statistik používám Raspberry Pi v kombinaci s Chromium (režim kiosku). Pi nemá připojenou klávesnici, takže jsem hledal řešení pro odesílání úhozů z terminálu do procesu Chromium (tab). Normální vstup funguje, ale jak mohu poslat něco jako F5 (speciální klíč:obnovení prohlížeče) prostřednictvím tohoto řešení?

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

Přijatá odpověď:

Programy GUI nečtou ze svého standardního vstupu, získávají svůj vstup z X serveru. Existují nástroje pro vložení úhozu do okna. xdotool je poměrně běžný a pohodlný.

Budete muset najít ID okna, do kterého chcete odeslat stisk klávesy. Můžete to udělat pomocí xdotool. xdotool search --class Chrome vrátí seznam ID oken všech oken Chrome. Pokud se vrátí více než jeden, musíte vybrat ten, který chcete. Můžete použít xdotool search --name aby odpovídaly názvu místo třídy. Můžete také analyzovat výstup wmctrl a extrahovat požadované ID okna.

Jakmile najdete správné ID okna, můžete zavolat xdotool vstříknout stisk klávesy. Bohužel mnoho aplikací odmítá syntetické události, tedy stisky kláves a události myši odeslané jinou aplikací. To je případ aktuálních verzí Chrome. Je možné vložit stisk klávesy z jiné aplikace jiným mechanismem, ale to vyžaduje zaostření okna. To vše můžete udělat pomocí xdotool, ale způsobí to, že zaměření rychle přejde na okno Chrome a zpět. Následující úryvek odešle F5 do prvního okna Chrome (v poněkud libovolném pořadí).

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

Nebo se staršími verzemi xdotool:

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

Pamatujte, že to odešle F5 do tohoto okna a je na programu, aby rozhodl, co s tím udělá. V prohlížeči Chrome se tím znovu načte aktuální karta.


Linux
  1. Spustit program Gui při spuštění?

  2. Jak vytvořit soubor v Linuxu z okna terminálu?

  3. Jak spustit GUI linuxové programy z příkazového řádku, ale odděleně od příkazového řádku?

  1. Jak vyhledávat na webu z terminálu v systému Linux

  2. Jak otevřít konkrétní soubor z terminálu?

  3. Jak vypnout Linux v konkrétní datum z terminálu?

  1. Jak používat SSMTP k odeslání e-mailu z terminálu Linux

  2. Jak otevřít novou kartu v terminálu GNOME z příkazového řádku?

  3. Jak poslat signál ke spuštění programu v kontejneru dockeru?