バーコード スキャナーから入力を受け取り、2 つのウィンドウを切り替えるスクリプトをバックグラウンドで実行しようとしています。1 つのウィンドウは Google シートのドキュメントで、もう 1 つのウィンドウはスキャナーからの入力を取得してデータベースに入力する GUI です。
GUI がアクティブなウィンドウであるときに値「switch」でバーコードがスキャンされると、次のスクリプトが呼び出されて Google シート ウィンドウに切り替わります。
wmctrl -a <Window that displays the google sheets document>
バックグラウンドでスクリプトが実行されており、バーコードが再度値「switch」でスキャンされたときに GUI に戻る必要があります。このスクリプトには次のものが含まれます。
#!/bin/bash
while read input
do
if [ $input = "switch" ]
then
wmctrl -a <Window that displays GUI>
fi
done
問題は、最初のスクリプトが呼び出されると、Google シート ドキュメントがアクティブ ウィンドウになることです。2 番目のスクリプトで実行されているターミナルは、バーコード スキャナからの入力を受信しません。これは、バーコード スキャナがフォーカスされておらず、ウィンドウが GUI に戻らないためです。