Odpowiedzi:
Po zakończeniu sudo apt-get install wmctrl
gry możesz grać w ten skrypt 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
Który tu znalazłem
if ! wmctrl -l | grep -q "$WINTITLE"
wmctrl
ma -i
opcję, która obsługuje pracę z oknem z jego identyfikatorem szesnastkowym. I możesz to zrobić wmctrl -lp|grep 'whatever incomplete name'|cut -d' ' -f1|xargs wmctrl -ai
- co zrobiłoby coś podobnego
Podczas używania xdotool
wydaje się trudne przedstawienie wszystkich okien dla danej aplikacji lub klasy za pomocą tylko jednego polecenia. W końcu osiągam lepsze wyniki, owijając go w for
pętlę na poziomie powłoki. Korzystanie z Bash:
for WINDOW in $(xdotool search --desktop 0 Firefox); do
xdotool windowactivate ${WINDOW}
done
Kilka uwag:
xdotool search
przeszukuje wzorzec (tutaj Firefox
) w nazwie okna, klasie i nazwie klasy. Jeśli chcesz zawęzić przestrzeń przeszukiwania, należy użyć odpowiednich --class
, --name
czy --classname
opcje.--desktop 0
opcja ogranicza wyszukiwanie do pierwszego pulpitu. Wydaje się, że jest to obejście, które pozwala uniknąć XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
wspomnianych w niektórych komentarzach.xdotool
projekt utknął w martwym punkcie od 2015 r. Nadal pozostaje moim wyborem. Z powodów osobistych Jordan Sissel (oryginalny autor) nie jest tak aktywny jak w przeszłości, więc nie wahaj się wnieść wkładu w projekt.
xdotool windowraise
przesuwa okno do przodu, ale nie skupia się na oknie ani nie przełącza na pulpit z oknem. zamiastwindowactivate
tego zrobi wszystkie trzy.