Gnome (Ubuntu): jak przenieść okno programu z przodu za pomocą wiersza poleceń z terminala?

14

Mam pewne środowisko pracy z dziesiątkami otwartego systemu Windows. Jak mogę wyświetlić na froncie okno o znanej nazwie / tytule programowo lub za pomocą wiersza poleceń?

GJ
źródło

Odpowiedzi:

12

Kiedyś używałem wmctrl -a <name>, co działa dobrze, ale ostatnio przełączyłem się na xdotoolnp .:

xdotool search --name <name-or-regex-for-name> windowraise

Ma też wiele innych funkcji.

Żeby zainstalować:

sudo apt-get install xdotool

frabjous
źródło
5
xdotool windowraiseprzesuwa okno do przodu, ale nie skupia się na oknie ani nie przełącza na pulpit z oknem. zamiast windowactivatetego zrobi wszystkie trzy.
jozxyqk
6

Po zakończeniu sudo apt-get install wmctrlgry 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

digitxp
źródło
4
Nie ma potrzeby stosowania nawiasów ani tylnych:if ! wmctrl -l | grep -q "$WINTITLE"
Wstrzymano do odwołania.
wmctrlma -iopcję, 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
vlad-ardelean
0

Podczas używania xdotoolwydaje 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 forpętlę na poziomie powłoki. Korzystanie z Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Kilka uwag:

  • Domyślnie xdotool searchprzeszukuje wzorzec (tutaj Firefox) w nazwie okna, klasie i nazwie klasy. Jeśli chcesz zawęzić przestrzeń przeszukiwania, należy użyć odpowiednich --class, --nameczy --classnameopcje.
  • Ta --desktop 0opcja 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.
  • W chwili pisania tego tekstu xdotoolprojekt 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.


To jest kopia odpowiedzi, którą opublikowałem na AskUbuntu , ale myślę, że jest niezależna od Linuksa, więc może się tu przydać.

Sylvain Leroux
źródło