回答:
wmctrlがインストールされていると仮定します(インストールされてsudo apt-get install wmctrlいない場合は実行します)。
コマンド:
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"
最後に開いたgeditウィンドウを上げます。他のアプリケーションと交換してください。
pgrep gedit
geditのpidを取得します
wmctrl -lp
すべてのウィンドウとそれらが属するpidをリストします
awk '{ print $1 }'
window-id(行の最初の文字列)を分割します。
$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')
したがって、最後に作成されたウィンドウのwindow-idを見つけますgedit(wmctrl -lpアプリケーションの出力に複数のウィンドウがある場合、出力には、作成順にウィンドウがリストされますtail -1)。
wmctrl -ia
続いてそのウィンドウを上げる window-id
...アプリケーションを引数として実行します:
#!/bin/bash
wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
switchto.sh(eg)として実行する
/path/to/switchto.sh firefox
理論的には、コマンド:
xdotool search --class gedit windowactivate
同じことをするべきです この場合、最初に見つかったウィンドウが表示されますgedit。
ただし、堅牢性は低くなります。私のシステム(Unity)ではまったく何もしませんでした。
firefox &を使用jobsしてFirefoxを実行している場合は、その番号を確認するために使用できます。それをフォアグラウンドに書き込む%n firefoxにnは、その数を表します。例:
sabrina@ubuntu:~$ jobs
[1]+ Stopped firefox
sabrina@ubuntu:~$ fg %1
また、プログラムを「強制終了」することもできます。
sabrina@ubuntu:~$ kill %1