web-dev-qa-db-ja.com

Firefoxウィンドウが閉じるたびに端末コマンドを実行する方法

これを実行する必要があります:

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

firefoxウィンドウが閉じるたび。しかし、必ずしもすべてのウィンドウが閉じられたときではなく、閉じられたすべてのウィンドウで。たとえば、Firefoxウィンドウが1つとFirefoxポップアップウィンドウが1つある場合。少なくとも1つのウィンドウを閉じた場合、このコマンドを実行します。これは可能ですか?ありがとう!

8
Dusan Milosevic

私が考えることができる唯一の方法は非常にエレガントではありません。バックグラウンドでスクリプトを実行して、開いている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
terdon