Os programas GUI não lêem suas entradas padrão, eles recebem sua entrada do servidor X . Existem ferramentas para injetar um pressionamento de tecla em uma janela. O xdotool é bastante comum e conveniente.
Você precisará encontrar o ID da janela para o qual deseja enviar o pressionamento de tecla. Você pode fazer isso com o xdotool. xdotool search --class Chrome
retorna a lista de IDs de janela de todas as janelas do Chrome. Se isso retorna mais de um, você precisa escolher o que você deseja. Você pode usar xdotool search --name
para corresponder ao título em vez da classe. Você também pode analisar a saída de wmctrl e extrair a ID da janela desejada.
Depois de encontrar a ID da janela correta, você pode chamar xdotool
para injetar um pressionamento de tecla. Infelizmente, muitos aplicativos rejeitam eventos sintéticos, ou seja, pressionamentos de tecla e eventos de mouse enviados por outro aplicativo. Este é o caso das versões atuais do Chrome. É possível injetar um pressionamento de tecla de outro aplicativo por um mecanismo diferente, mas isso requer que a janela seja focada. Você pode fazer tudo isso com o xdotool, mas isso fará com que o foco pisque rapidamente na janela do Chrome e volte. O snippet a seguir envia F5 para a primeira janela do Chrome (em uma ordem arbitrária).
xdotool search --class Chrome windowactivate --sync %1 key F5 windowactivate $(xdotool getactivewindow)
Ou com versões mais antigas do xdotool:
xdotool windowactivate $(xdotool search --class Chrome) &&
xdotool key F5 &&
xdotool windowactivate $(xdotool getactivewindow)
Lembre-se que isto envia F5 para aquela janela e cabe ao programa decidir o que fazer com ela. No Chrome, isso recarrega a guia atual.