Jawaban:
Saya dulu menggunakan wmctrl -a <name>
, yang berfungsi dengan baik, tetapi baru-baru ini beralih ke xdotool
, misalnya:
xdotool search --name <name-or-regex-for-name> windowraise
Ini memiliki banyak fitur lain juga.
Untuk memasang:
sudo apt-get install xdotool
Nah, setelah sudo apt-get install wmctrl
-ing, Anda bisa bermain dengan skrip bash ini:
#! /bin/bash
WINTITLE="Mail/News" # Main Thunderbird window has this in titlebar
PROGNAME="mozilla-thunderbird" # This is the name of the binary for t-bird
# Use wmctrl to list all windows, count how many contain WINTITLE,
# and test if that count is non-zero:
if [ `wmctrl -l | grep -c "$WINTITLE"` != 0 ]
then
wmctrl -a "$WINTITLE" # If it exists, bring t-bird window to front
else
$PROGNAME & # Otherwise, just launch t-bird
fi
exit 0
Yang saya temukan di sini
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
memiliki -i
opsi, yang mendukung bekerja dengan jendela dengan pengenal heksanya. Jadi Anda dapat melakukan ini wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai
- yang akan melakukan hal serupa
Saat menggunakan xdotool
, tampaknya sulit untuk membawa ke depan semua jendela untuk aplikasi atau kelas yang diberikan hanya dengan satu perintah. Saya akhirnya memiliki hasil yang lebih baik dengan membungkusnya dalam satu for
lingkaran di tingkat shell. Menggunakan Bash:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
Beberapa komentar:
xdotool search
akan mencari pola (di sini Firefox
) di nama jendela, kelas, dan nama kelas. Jika Anda ingin membatasi ruang pencarian Anda, gunakan opsi yang relevan --class
, --name
atau --classname
.--desktop 0
pilihan membatasi pencarian ke desktop pertama. Ini tampaknya menjadi solusi untuk menghindari yang XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
disebutkan dalam beberapa komentar.xdotool
proyek ini macet sejak tahun 2015. Itu masih menjadi alat pilihan saya. Untuk alasan pribadi, Jordan Sissel (penulis asli) tidak seaktif dulu, jadi jangan ragu untuk berkontribusi pada proyek.
xdotool windowraise
membawa jendela ke depan tetapi tidak memberikan fokus ke jendela atau beralih ke desktop dengan jendela. sebaliknya,windowactivate
akan melakukan ketiganya.