Wie schließe ich ein neues Firefox-Fenster vom Terminal aus?

10

Ich habe mehrere Instanzen von Firefox in Ubuntu 14.04 ausgeführt. Wie kann ich das zuletzt geöffnete Fenster / die zuletzt geöffnete Instanz vom Terminal aus schließen?

Ich habe versucht, den in einer Antwort auf eine verwandte Frage definierten cfct-Alias ​​zu verwenden , aber es hat nicht funktioniert.

sgu
quelle
@chaos Ich nehme an, OP bedeutet Fenster, keine Tabs
Jacob Vlijm
@JacobVlijm diese Antwort schließt auch Fenster und scheint für mich die einzige Lösung. Da Firefox nur einen Prozess ausführt, unabhängig davon, wie viele Fenster geöffnet sind, benötigen Sie diese Lösung in der Republik. killall firefoxwäre SIGTERMder ganze prozess nicht nur ein fenster.
Chaos
@chaos Ich stimme nicht zu, sehr gut möglich, ich bin nicht zu Hause, sehen Sie, ob ich schnell genug bin, um eine Antwort in meiner Pause zu produzieren :)
Jacob Vlijm
1
@chaos Duplikate sind, wenn die Fragen gleich sind, nicht die Antworten. Eine gewisse Überlappung ist unvermeidlich.
Seth
Was ist cfct? Suchanfragen geben hauptsächlich genau diese Frage zurück.
TRiG

Antworten:

13

Um einen Befehl zu erstellen, idder das letzte Fenster findet, das von erstellt wurde Firefox(und um es zu schließen), müssen Sie wmctrlinstalliert sein:

sudo apt-get install wmctrl

Der Befehl

Verwenden Sie dann den Befehl:

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


Erläuterung:

wmctrl -l

listet alle Fenster auf, aber eine wichtige Eigenschaft des Befehls ist, dass die Fenster in der Reihenfolge aufgelistet werden, in der sie erstellt wurden .

Deshalb:

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

werden:

  • Alle Fenster auflisten:

    wmctrl -l
    
  • Finden Sie diejenigen (die Zeilen) mit 'Mozilla Firefox' in ihrem Namen:

    grep 'Mozilla Firefox'
    
  • finde den letzten (der auch der zuletzt erstellte ist):

    tail -1
    
  • Extrahieren Sie die erste Zeichenfolge in der Zeile (dies ist die Fenster-ID):

    awk '{ print $1 }'
    

Der Befehl:

wmctrl -ic

beendet dann das neueste Firefox-Fenster anhand seiner ID (anmutig).

Oder noch zuverlässiger:

Während der obige Befehl in praktisch allen Fällen gut funktioniert, besteht eine geringe Wahrscheinlichkeit von Namenskonflikten, wenn z. B. ein anderes Fenster mit dem Namen "Mozilla Firefox" vorhanden ist, jedoch kein Fenster von Firefox(unwahrscheinlich, aber immer noch).

Was "wasserdicht" funktionieren sollte, ist daher, die Fenster in der Fensterliste (mit wmctrl -lp) anhand der PID von firefoxanstelle der Zeichenfolge im Fensternamen zu identifizieren :

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

Wie Sie in diesem Befehl sehen können,

wmctrl -l | grep 'Mozilla Firefox'

Das Produzieren der Zeilen mit 'Mozilla Firefox' wird ersetzt durch:

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

Erzeugen der Linien, die die PID von Firefox enthalten (als Ausgabe von pgrep firefox)

Jacob Vlijm
quelle
2

Verwenden Sie den folgenden Befehl, um ein Fenster zu schließen (auch mit vielen geöffneten Registerkarten):

wmctrl -a firefox; xdotool key Ctrl+Shift+w

Beachten Sie , dass wmctrlund xdotoolinstalliert werden muss:

$ sudo apt-get install wmctrl xdotool

Siehe auch diese Antwort: Schließen Sie die aktuelle Registerkarte Firefox mit dem Terminal .

Meine Antwort ist etwas geändert, weil Ctrl+ Shift+ wein Firefox-Fenster schließt.


Alle Verknüpfungen finden Sie unter Firefox-Tastaturkürzel .

Chaos
quelle