Как выполнить команду терминала каждый раз, когда закрывается окно Firefox

Мне нужно выполнить это:

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

каждый раз, когда окно Firefox закрывается. Но не обязательно, когда все окна закрыты, но на каждом окне, которое закрыто. Например, если у меня есть одно окно Firefox и одно всплывающее окно Firefox. Если я закрою хотя бы одно окно, я хочу выполнить эту команду. Это возможно? Спасибо!

8
задан 6 July 2014 в 19:17

1 ответ

Единственным путем я могу думать, не очень изящно. У Вас может быть сценарий, работающий в фоновом режиме, который считает количество открытых окон Firefox каждую секунду и запускает Вашу команду, если то число изменяется. Что-то как:

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

Сохраняют сценарий выше как firefox, выразитесь в Вашем ~/bin каталог и сделайте его исполняемым файлом chmod a+x ~/bin/firefox. Так как Ubuntu добавляет ~/bin к Вашему $PATH по умолчанию и добавляет его, прежде чем любые другие каталоги, работая firefox запустят тот сценарий вместо нормального исполняемого файла Firefox. Теперь, потому что сценарий запускается /usr/bin/firefox, это означает, что Ваш нормальный Firefox появится, как Вы ожидаете, только со сценарием, работающим также. Сценарий выйдет, как только Вы закрываете Firefox.

ПРАВОВАЯ ОГОВОРКА:

Этот сценарий

  1. Не изящен, он должен быть выполнен как бесконечный цикл в фоновом режиме.
  2. Требует xdotool, установите, это с sudo apt-get install xdotool
  3. не работает на вкладки, только окна.
11
ответ дан 6 July 2014 в 19:17

Другие вопросы по тегам:

Похожие вопросы: