Відповіді:
Ну, після sudo apt-get install wmctrl
-ing, ви можете грати з цим сценарієм bash:
#! /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
Якого я тут знайшов
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
має -i
опцію, яка підтримує роботу з вікном зі своїм шестигранним ідентифікатором. А значить, ви можете зробити це wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai
- що зробить щось подібне
Під час використання xdotool
здається, що важко вивести на фронт всі вікна для певної програми чи класу, використовуючи лише одну команду. Я маю кращі результати, загортаючи його в for
петлю на рівні оболонки. Використання Bash:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
Кілька зауважень:
xdotool search
буде шукати шаблон (тут Firefox
) у назві вікна, класі та імені класу. Якщо ви хочете , щоб обмежити область пошуку, використовуйте відповідні --class
, --name
або --classname
варіанти.--desktop 0
опція обмежує пошук на першому робочому столі. Це, мабуть, є способом уникнути XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
згаданого в деяких коментарях.xdotool
проекту проект зупиняється з 2015 року. Він все ще залишається моїм інструментом вибору. З особистих причин Джордан Сіссель (оригінальний автор) не такий активний, як раніше, тому не соромтесь внести свій внесок у проект.
xdotool windowraise
приводить вікно спереду, але не фокусує вікно або не перемикається на робочий стіл разом з вікном. натомістьwindowactivate
зробить усі три.