每次firefox窗口关闭时如何执行终端命令

Modified on: Sat, 09 Jun 2018 03:35:23 +0800

我需要执行此操作:

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

每次Firefox窗口关闭时。但不一定是所有窗户关闭,而是关闭每个窗户。
例如,如果我有一个Firefox窗口和一个Firefox弹出窗口。如果我关闭至少一个窗口,我想执行此命令。这可能吗?谢谢!

最佳答案

我能想到的唯一方法并不是很优雅。您可以在后台运行一个脚本,每秒计算一次打开的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. 安装它
  4. 不适用于标签,仅适用于Windows。
  5. 醇>
作者:,terdon

相关问答

添加新评论