Yanıtlar:
Şey, sudo apt-get install wmctrl
-ing sonra , bu bash betiği ile oynayabilirsiniz:
#! /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
Burada bulduğum
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
-i
onaltılık tanımlayıcı ile pencere ile çalışmayı destekleyen bir seçeneğe sahiptir . Ve böylece bunu yapabilirsiniz wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai
- ki bu da benzer bir şey yapar
Kullanırken xdotool
, yalnızca bir komut kullanarak belirli bir uygulama veya sınıf için tüm pencereleri öne getirmek zor görünüyor . for
Kabuk düzeyinde bir döngü içine sarılarak daha iyi sonuçlar elde ediyorum . Bash Kullanımı:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
Birkaç açıklama:
xdotool search
modeli (burada Firefox
) pencere adı, sınıf ve sınıf adında arar . Eğer arama alanını kısıtlamak istiyorsanız, ilgili kullanabilir --class
, --name
ya da --classname
seçenekleri.--desktop 0
Seçenek ilk masaüstüne arama sınırlar. Bu XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
, bazı yorumlarda bahsedilenlerden kaçınmak için bir geçici çözüm gibi görünüyor .xdotool
proje 2015'ten beri durmaktadır. Hala seçim aracım olmaya devam ediyor. Kişisel nedenlerden ötürü, Jordan Sissel (orijinal yazar) geçmişte olduğu kadar aktif değil, bu yüzden projeye katkıda bulunmaktan çekinmeyin.
xdotool windowraise
pencereyi öne getirir, ancak pencereye odaklanmaz veya pencereyle masaüstüne geçmez. bunun yerine,windowactivate
üçünü de yapacak.