Como executar um comando de terminal toda vez que as janelas do firefox se fecham

8

Eu preciso executar isso:

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

toda vez que a janela do Firefox é fechada. Mas não necessariamente quando todas as janelas estão fechadas, mas em todas as janelas fechadas. Por exemplo, se eu tiver uma janela do Firefox e uma janela pop-up do Firefox. Se eu fechar pelo menos uma janela, quero executar este comando. Isso é possível? Obrigado!

    
por Dusan Milosevic 06.07.2014 / 16:50

1 resposta

11

A única maneira que consigo pensar não é muito elegante. Você pode ter um script em execução em segundo plano que conte o número de janelas abertas do firefox a cada segundo e inicie seu comando se esse número for alterado. Algo como:

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

Salve o script acima como firefox , coloque-o no diretório ~/bin e torne-o executável chmod a+x ~/bin/firefox . Como o Ubuntu adiciona ~/bin ao seu $PATH por padrão e o adiciona antes de qualquer outro diretório, executar firefox iniciará esse script em vez do executável normal do firefox. Agora, como o script está iniciando /usr/bin/firefox , isso significa que o seu firefox normal será exibido, exatamente como esperado, apenas com o script em execução também. O script sairá assim que você fechar o firefox.

TERMO DE RESPONSABILIDADE:

Este script é

  1. Não elegante, ele precisa ser executado como um loop infinito no plano de fundo.
  2. Requer xdotool , instale-o com sudo apt-get install xdotool
  3. Não funciona para guias, apenas janelas.
por terdon 07.07.2014 / 18:47