Ausführen eines Terminalbefehls bei jedem Schließen des Firefox-Fensters

8

Ich muss dies ausführen:

rm -rf ~/.wine-pipelight/*;
rm -rf ~/.wine-pipelight/./.*;
cp -a ~/viewright_backup/. ~/.wine-pipelight

Jedes Mal, wenn das Firefox-Fenster geschlossen wird. Aber nicht unbedingt, wenn alle Fenster geschlossen sind, sondern an jedem Fenster, das geschlossen ist. Zum Beispiel, wenn ich ein Firefox-Fenster und ein Firefox-Popup-Fenster habe. Wenn ich mindestens ein Fenster schließe, möchte ich diesen Befehl ausführen. Ist das möglich? Vielen Dank!

Dusan Milosevic
quelle
1
Warum willst du das tun? Es wäre höchstwahrscheinlich einfacher, das Problem zu lösen, als eine solche Problemumgehung zu verwenden. Welche Pipelight- und Wine-Compholio-Version verwenden Sie?
Michael Müller
Ich folgte diesem Tutorial. Es ist auf Serbisch, aber in der Beschreibung werden Codes verwendet.
Dusan Milosevic
Es ist ein Dienst des serbischen Breitbandunternehmens, der unter Linux nicht offiziell unterstützt wird.
Dusan Milosevic

Antworten:

11

Der einzige Weg, den ich mir vorstellen kann, ist nicht sehr elegant. Im Hintergrund kann ein Skript ausgeführt werden, das die Anzahl der geöffneten Firefox-Fenster pro Sekunde zählt und Ihren Befehl startet, wenn sich diese Anzahl ändert. Etwas wie:

#!/usr/bin/env bash


## Run firefox
/usr/bin/firefox &

## Initialize the variable to 100
last=100;

## Start infinite loop, it will run while there
## is a running firefox instance.
while pgrep firefox >/dev/null;
do
    ## Get the number of firefox windows    
    num=$(xdotool search --name firefox | wc -l)

    ## If this number is less than it was, launch your commands
    if [ "$num" -lt "$last" ]
    then
        rm -rf ~/.wine-pipelight/*;
        ## I included this since you had it in your post but it
        ## does exactly the same as the command above.
        rm -rf ~/.wine-pipelight/./.*;
        cp -a ~/viewright_backup/. ~/.wine-pipelight      
    fi

    ## Save the number of windows as $last for next time
    last=$num

    ## Wait for a second so as not to spam your CPU.
    ## Depending on your use, you might want to make it wait a bit longer,
    ## the longer you wait, the lighter the load on your machine
    sleep 1

done

Speichern Sie das obige Skript als firefox, legen Sie es in Ihrem ~/binVerzeichnis ab und machen Sie es ausführbar chmod a+x ~/bin/firefox. Da Ubuntu standardmäßig ~/binzu Ihrem $PATHVerzeichnis hinzufügt und es vor allen anderen Verzeichnissen hinzufügt, wird beim Ausführen firefoxdieses Skript anstelle der normalen ausführbaren Firefox-Datei gestartet. Da das Skript jetzt gestartet wird /usr/bin/firefox, bedeutet dies, dass Ihr normaler Firefox wie erwartet nur mit dem Skript angezeigt wird, das ebenfalls ausgeführt wird. Das Skript wird beendet, sobald Sie Firefox schließen.

HAFTUNGSAUSSCHLUSS:

Dieses Skript ist

  1. Nicht elegant, muss es als Endlosschleife im Hintergrund ausgeführt werden.
  2. Benötigt xdotool, installieren Sie es mitsudo apt-get install xdotool
  3. Funktioniert nicht für Registerkarten, nur für Fenster.
Terdon
quelle
schöne Problemumgehung
Kenn
Vielen Dank! Ich werde es nicht automatisch starten, sondern starten, wenn Firefox startet. Vielen Dank, ich werde es versuchen.
Dusan Milosevic
@terdon Da ich vorhabe, es zu starten, wenn Firefox startet, ist es möglich, es zu stoppen, wenn Firefox geschlossen wird. Vielleicht so etwas wie : while ["0" -lt "$(xdotool search --name firefox | wc -l)" ]. Ich weiß nicht, ob Sintax richtig ist, aber Sie verstehen es ... Könnten Sie es umschreiben, um diese Bedingung zu erfüllen? Vielen Dank!
Dusan Milosevic
@ DusanMilosevic siehe aktualisierte Antwort. Ich habe es so umgeschrieben, dass das Skript selbst Firefox startet und nur ausgeführt wird, solange mindestens eine Firefox-Instanz ausgeführt wird.
Terdon