Untuk membuat perintah yang menemukan id
jendela terakhir, dibuat oleh Firefox
(dan untuk menutupnya), Anda harus wmctrl
diinstal:
sudo apt-get install wmctrl
Perintah
Kemudian gunakan perintah:
wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"
Penjelasan:
wmctrl -l
daftar semua jendela, tetapi properti penting dari perintah ini adalah bahwa daftar jendela-jendela dalam urutan mereka dibuat .
Karena itu:
wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'
akan:
daftar semua jendela:
wmctrl -l
temukan yang (baris) dengan 'Mozilla Firefox' di namanya:
grep 'Mozilla Firefox'
temukan yang terakhir (yang juga merupakan yang terakhir dibuat):
tail -1
ekstrak string pertama di baris (yang merupakan jendela -id):
awk '{ print $1 }'
Perintah:
wmctrl -ic
kemudian akan mematikan jendela Firefox terbaru dengan id (anggun).
Atau bahkan lebih dapat diandalkan:
Sementara perintah di atas bekerja dengan baik di hampir semua kasus, ada adalah kemungkinan kecil bentrokan nama, jika misalnya jendela lain ada dengan "Mozilla Firefox" dalam namanya, tetapi tidak jendela dari Firefox
(mungkin, tapi masih).
Apa yang harus bekerja "tahan air" karena itu untuk mengidentifikasi jendela dalam daftar window (menggunakan wmctrl -lp
) oleh pid dari firefox
, bukannya string dalam nama jendela:
wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"
Seperti yang Anda lihat, dalam perintah ini,
wmctrl -l | grep 'Mozilla Firefox'
memproduksi baris yang berisi 'Mozilla Firefox', digantikan oleh:
wmctrl -lp | grep "$(pgrep firefox)"
menghasilkan garis-garis yang berisi pid dari firefox (sebagai output dari pgrep firefox
)