Jak zamknąć nowe okno przeglądarki Firefox z terminalu?


10

Mam wiele wystąpień przeglądarki Firefox działającej w systemie Ubuntu 14.04. Jak mogę zamknąć ostatnio otwarte okno / instancję z terminala?

Próbowałem użyć aliasu cfct zdefiniowanego w odpowiedzi na powiązane pytanie , ale to nie zadziałało.


@chaos Zakładam, że OP oznacza okna, a nie zakładki
Jacob Vlijm

@JacobVlijm ta odpowiedź również zamyka okna i wydaje mi się jedynym rozwiązaniem. Ponieważ Firefox uruchamia tylko jeden proces, niezależnie od liczby otwartych okien, potrzebujesz tego rozwiązania w dublacie. killall firefoxzrobiłby SIGTERMcały proces, nie tylko okno.
chaos

@chaos Nie zgadzam się, bardzo możliwe, nie ma mnie w domu, zobaczę, czy jestem wystarczająco szybki, aby
udzielić

1
@chaos Duplikaty dotyczą sytuacji, gdy pytania są takie same, a nie odpowiedzi. Pewne nakładanie się jest nieuniknione.
Seth

Co to jest cfct? Wyszukiwania zwracają głównie to samo pytanie.
TRiG

Odpowiedzi:


13

Aby wykonać polecenie wyszukujące idostatnie okno utworzone przez Firefox(i aby je zamknąć), musisz wmctrlzainstalować:

sudo apt-get install wmctrl

Komenda

Następnie użyj polecenia:

wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"


Wyjaśnienie:

wmctrl -l

wyświetla listę wszystkich okien, ale ważną właściwością polecenia jest to, że wyświetla listę okien w kolejności, w jakiej zostały utworzone .

W związku z tym:

wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'

będzie:

  • wyświetl wszystkie okna:

    wmctrl -l
    
  • znajdź te (wiersze) z „Mozilla Firefox” w ich nazwie:

    grep 'Mozilla Firefox'
    
  • znajdź ostatni (który jest również ostatnim utworzonym):

    tail -1
    
  • wypakuj pierwszy ciąg z wiersza (którym jest okno -id):

    awk '{ print $1 }'
    

Komenda:

wmctrl -ic

następnie zabije ostatnie okno przeglądarki Firefox za pomocą swojego identyfikatora (z gracją).

Lub jeszcze bardziej niezawodny:

Chociaż powyższe polecenie sprawdza się w praktycznie wszystkich przypadkach nie jest mała szansa nazwy starć, jeśli istnieje np kolejne okno z „Mozilla Firefox” w nazwie, ale nie z okna Firefox(mało prawdopodobne, ale jednak).

Co powinno działać „wodoodporny” jest zatem zidentyfikowanie Windows na liście okna (za pomocą wmctrl -lp) przez PID z firefox, zamiast napisu w nazwie okna:

wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"

Jak widać, w tym poleceniu

wmctrl -l | grep 'Mozilla Firefox'

produkujący wiersze zawierające „Mozilla Firefox” otrzymuje brzmienie:

wmctrl -lp | grep "$(pgrep firefox)"

produkując linie zawierające pid firefox (jako wynik pgrep firefox)


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.