web-dev-qa-db-fra.com

Comment exécuter une commande de terminal à chaque fermeture de la fenêtre firefox

J'ai besoin d'exécuter ceci:

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

chaque fois que la fenêtre de Firefox se ferme. Mais pas nécessairement lorsque toutes les fenêtres sont fermées, mais sur chaque fenêtre fermée. Par exemple, si j'ai une fenêtre Firefox et une fenêtre contextuelle Firefox. Si je ferme au moins une fenêtre, je veux exécuter cette commande. Est-ce possible? Merci!

8
Dusan Milosevic

Le seul moyen auquel je puisse penser n'est pas très élégant. Vous pouvez avoir un script exécuté en arrière-plan qui compte le nombre de fenêtres firefox ouvertes chaque seconde et lance votre commande si ce nombre change. Quelque chose comme:

_#!/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
_

Enregistrez le script ci-dessus sous le nom firefox, placez-le dans votre répertoire _~/bin_ et rendez-le exécutable _chmod a+x ~/bin/firefox_. Étant donné qu'Ubuntu ajoute _~/bin_ à votre _$PATH_ par défaut et l'ajoute avant tous les autres répertoires, l'exécution de firefox lancera ce script à la place de l'exécutable firefox normal. Maintenant, étant donné que le script lance _/usr/bin/firefox_, cela signifie que votre firefox normal apparaîtra, comme vous le souhaitez, uniquement lorsque le script est également exécuté. Le script se fermera dès que vous fermez Firefox.

AVERTISSEMENT:

Ce script est

  1. Pas élégant, il doit être exécuté comme une boucle infinie en arrière-plan.
  2. Nécessite xdotool, installez-le avec _Sudo apt-get install xdotool_
  3. Ne fonctionne pas pour les onglets, seulement les fenêtres.
11
terdon