Cómo ejecutar un comando de terminal cada vez que se cierra la ventana de Firefox

8

Necesito ejecutar esto:

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

cada vez que se cierra la ventana de Firefox. Pero no necesariamente cuando todas las ventanas están cerradas, sino en cada ventana que está cerrada. Por ejemplo, si tengo una ventana de Firefox y una ventana emergente de Firefox. Si cierro al menos una ventana, quiero ejecutar este comando. es posible? ¡Gracias!

Dusan Milosevic
fuente
1
¿Por qué quieres hacer esto? Lo más probable es que sea más fácil resolver el problema que usar una solución alternativa. ¿Qué versión de Pipelight y wine-compholio usas?
Michael Müller
Seguí este tutorial. está en serbio, pero hay códigos utilizados en la descripción.
Dusan Milosevic
Es un servicio de la compañía de banda ancha de Serbia que no es oficialmente compatible con Linux.
Dusan Milosevic

Respuestas:

11

La única forma en que puedo pensar es que no es muy elegante. Puede tener una secuencia de comandos ejecutándose en segundo plano que cuente la cantidad de ventanas abiertas de Firefox cada segundo e inicie su comando si ese número cambia. 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

Guarde el script anterior como firefox, póngalo en su ~/bindirectorio y hágalo ejecutable chmod a+x ~/bin/firefox. Dado que Ubuntu agrega ~/bina su $PATHvalor predeterminado y lo agrega antes que cualquier otro directorio, la ejecución firefoxiniciará ese script en lugar del ejecutable normal de Firefox. Ahora, debido a que el script se está iniciando /usr/bin/firefox, esto significa que su Firefox normal aparecerá, tal como espera, solo con el script ejecutándose también. El script se cerrará tan pronto como cierre firefox.

DESCARGO DE RESPONSABILIDAD:

Este guión es

  1. No es elegante, debe ejecutarse como un bucle infinito en segundo plano.
  2. Requiere xdotool, instalarlo consudo apt-get install xdotool
  3. No funciona para pestañas, solo para ventanas.
terdon
fuente
buena solución
temporal
¡Gracias! No haré que se inicie automáticamente, sino que comenzaré cuando se inicie Firefox. Muchas gracias, lo intentaré.
Dusan Milosevic
@terdon Como estoy planeando hacer que comience cuando Firefox se inicie, ¿es posible hacer que se detenga cuando Firefox esté cerrado? Tal vez algo como: while ["0" -lt "$(xdotool search --name firefox | wc -l)" ]. No sé si sintax es correcto pero entiendes ... ¿Podrías reescribirlo para cumplir con esta condición? ¡Gracias!
Dusan Milosevic
@DusanMilosevic ver respuesta actualizada. Lo reescribí para que el script en sí inicie Firefox y solo se ejecute mientras se ejecute al menos una instancia de Firefox.
terdon