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!


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.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.