Come eseguire un comando terminale ogni volta che si chiude Windows Firefox


8

Devo eseguire questo:

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

ogni volta che la finestra di Firefox si chiude. Ma non necessariamente quando tutte le finestre sono chiuse, ma su tutte le finestre chiuse. Ad esempio, se ho una finestra di Firefox e una finestra pop-up di Firefox. Se chiudo almeno una finestra, voglio eseguire questo comando. È possibile? Grazie!


1
Perchè vuoi fare questo? Molto probabilmente sarebbe più semplice risolvere il problema piuttosto che utilizzare una soluzione alternativa. Quale versione di Pipelight e wine-compholio usi?
Michael Müller,

Ho seguito questo tutorial. è in serbo, ma ci sono codici usati nella descrizione.
Dusan Milosevic,

È un servizio della società a banda larga della Serbia che non è supportato ufficialmente su Linux.
Dusan Milosevic,

Risposte:


11

L'unico modo in cui riesco a pensare non è molto elegante. Puoi avere uno script in esecuzione in background che conta il numero di finestre firefox aperte ogni secondo e avvia il tuo comando se quel numero cambia. Qualcosa di simile a:

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

Salvare lo script sopra come firefox, inserirlo nella ~/bindirectory e renderlo eseguibile chmod a+x ~/bin/firefox. Poiché Ubuntu si aggiunge ~/binal tuo $PATHdi default e lo aggiunge prima di qualsiasi altra directory, l'esecuzione firefoxlancerà quello script invece del normale eseguibile di Firefox. Ora, poiché lo script è in fase di avvio /usr/bin/firefox, ciò significa che il tuo normale firefox apparirà, proprio come ti aspetti, solo con lo script in esecuzione. Lo script verrà chiuso non appena si chiude firefox.

NOTA BENE:

Questo script è

  1. Non elegante, deve essere eseguito come un ciclo infinito in background.
  2. Richiede xdotool, installalo consudo apt-get install xdotool
  3. Non funziona per le schede, solo per Windows.

bella soluzione alternativa
kenn

Grazie! Non lo farò avviare automaticamente, ma piuttosto farlo partire all'avvio di Firefox. Grazie mille, ci proverò.
Dusan Milosevic,

@terdon Dal momento che sto programmando di avviarlo all'avvio di Firefox, è possibile farlo arrestare quando Firefox è chiuso. Forse qualcosa di simile: while ["0" -lt "$(xdotool search --name firefox | wc -l)" ]. Non so se la sintassi è giusta ma ottieni il punto ... Potresti riscriverlo per soddisfare questa condizione? Grazie!
Dusan Milosevic,

@DusanMilosevic vedi risposta aggiornata. L'ho riscritto in modo che lo script stesso avvii firefox e funzioni solo finché è in esecuzione almeno un'istanza di firefox.
terdon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.