コマンドラインからの入力の取得と他のプログラムの起動を組み合わせたスクリプトを作成しています。したがって、スクリプトは次のようになります。
...
launch program
Read input from the terminal
...
問題は、プログラムを起動すると(バックグラウンドで起動した場合でも)、ターミナルがフォーカスを失い、起動したプログラムがアクティブになることです。
デフォルトのUbuntuコマンドで端末に焦点を合わせたプログラムを起動するにはどうすればよいですか?
ありがとうございました
端末のタイトルがわかっている場合は、プログラムを開いた後に wmctrl
コマンドを使用して元のタイトルに切り替えることができます(ウィンドウが開いていると、新しいプログラムがフォアグラウンドにあるようにも見えません)すぐに開き、sleep
コマンドは必要ありません):
wmctrl -a <WIN-TITLE>
<WIN-TITLE>
は完全なタイトルである必要はありません。たとえば、タイトルがTESTING
の場合、TEST
は機能します。
プログラムを開くのにかかる時間によっては、sleep
コマンドを使用して、端末への切り替えを遅らせる必要がある場合があります。次のように使用できます:sleep <SECONDS>s
。
スクリプト内から端末のタイトルを設定するには、次を使用します。
NAME="NEW_TITLE"; echo -en "\033]0;$NAME\a"
詳細については、 この回答 を参照してください。
たとえば、プログラムをバックグラウンドで開く小さなスクリプトを次に示します。
NAME="Opening program..."; echo -en "\033]0;$NAME\a"
$1&
sleep 0.75s
wmctrl -a "Opening program"