Cara menjalankan perintah terminal setiap kali windows firefox ditutup

8

Saya perlu menjalankan ini:

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

setiap kali jendela Firefox ditutup. Tetapi tidak harus ketika semua jendela ditutup, tetapi pada setiap jendela yang tertutup. Misalnya, jika saya memiliki satu jendela Firefox dan satu jendela pop-up Firefox. Jika saya menutup setidaknya satu jendela, saya ingin menjalankan perintah ini. Apakah ini mungkin? Terima kasih!

Dusan Milosevic
sumber
1
Mengapa Anda ingin melakukan ini? Kemungkinan besar akan lebih mudah untuk menyelesaikan masalah daripada menggunakan solusi seperti itu. Pipelight dan versi anggur-compolio apa yang Anda gunakan?
Michael Müller
Saya mengikuti toutorial ini . itu dalam bahasa Serbia, tetapi ada kode yang digunakan dalam deskripsi.
Dusan Milosevic
Ini adalah salah satu layanan dari perusahaan broadband Serbia yang tidak secara resmi didukung di linux.
Dusan Milosevic

Jawaban:

11

Satu-satunya cara yang bisa saya pikirkan adalah tidak terlalu elegan. Anda dapat memiliki skrip yang berjalan di latar belakang yang menghitung jumlah jendela firefox terbuka setiap detik dan meluncurkan perintah Anda jika nomor itu berubah. Sesuatu seperti:

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

Simpan skrip di atas sebagai firefox, letakkan di ~/bindirektori Anda dan buat itu dapat dieksekusi chmod a+x ~/bin/firefox. Karena Ubuntu menambahkan ~/binke Anda $PATHsecara default dan menambahkannya sebelum direktori lain, menjalankan firefoxakan meluncurkan skrip itu alih-alih executable firefox normal. Sekarang, karena skrip diluncurkan /usr/bin/firefox, ini berarti firefox normal Anda akan muncul, seperti yang Anda harapkan, hanya dengan skrip berjalan juga. Script akan keluar segera setelah Anda menutup firefox.

PENOLAKAN:

Script ini adalah

  1. Tidak elegan, itu harus dijalankan sebagai loop tak terbatas di latar belakang.
  2. Membutuhkan xdotool, menginstalnya dengansudo apt-get install xdotool
  3. Tidak berfungsi untuk tab, hanya windows.
terdon
sumber
solusi yang bagus
kenn
Terima kasih! Saya tidak akan membuatnya autostart, tetapi membuatnya mulai saat firefox dimulai. Terima kasih banyak, saya akan mencobanya.
Dusan Milosevic
@terdon Karena saya berencana untuk memulai ketika firefox mulai, apakah mungkin untuk membuatnya berhenti ketika firefox ditutup. Mungkin sesuatu seperti: while ["0" -lt "$(xdotool search --name firefox | wc -l)" ]. Saya tidak tahu apakah sintax benar tetapi Anda mendapatkan intinya ... Bisakah Anda menulis ulang untuk memenuhi kondisi ini? Terima kasih!
Dusan Milosevic
@DusanMilosevic melihat jawaban yang diperbarui. Saya menulis ulang sehingga skrip itu sendiri meluncurkan firefox dan hanya berjalan selama setidaknya satu contoh firefox berjalan.
terdon