วิธีเรียกใช้งานคำสั่งเทอร์มินัลทุกครั้งที่หน้าต่าง firefox ปิด


8

ฉันต้องการดำเนินการนี้:

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

ทุกครั้งที่หน้าต่าง Firefox ปิด แต่ไม่จำเป็นเมื่อปิดหน้าต่างทั้งหมด แต่ปิดทุกหน้าต่างที่ปิด ตัวอย่างเช่นถ้าฉันมีหน้าต่าง Firefox หนึ่งหน้าต่างและหน้าต่างป๊อปอัป Firefox หนึ่งหน้าต่าง ถ้าฉันปิดหน้าต่างอย่างน้อยหนึ่งหน้าต่างฉันต้องการรันคำสั่งนี้ เป็นไปได้ไหม ขอบคุณ!


1
ทำไมคุณถึงต้องการทำเช่นนี้? มันอาจจะง่ายกว่าในการแก้ปัญหามากกว่าใช้วิธีแก้ปัญหาดังกล่าว คุณใช้ Pipelight และ Wine-compholio รุ่นใด?
Michael Müller

ผมทำตามนี้ toutorial มันอยู่ในเซอร์เบีย แต่มีรหัสที่ใช้ในคำอธิบาย
Dusan Milosevic

เป็นบริการหนึ่งของ บริษัท เซอร์เบียบรอดแบนด์ซึ่งไม่ได้รับการสนับสนุนอย่างเป็นทางการบน linux
Dusan Milosevic

คำตอบ:


11

วิธีเดียวที่ฉันสามารถนึกได้ไม่หรูหรามาก คุณสามารถให้สคริปต์ทำงานในพื้นหลังซึ่งนับจำนวนหน้าต่าง 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. ใช้งานไม่ได้กับแท็บหน้าต่างเท่านั้น

วิธีแก้ปัญหาที่ดี
เคน

ขอบคุณ! ฉันจะไม่ทำให้มันเริ่มอัตโนมัติ แต่ให้เริ่มต้นเมื่อ firefox เริ่ม ขอบคุณมากฉันจะลอง
Dusan Milosevic

@terdon เนื่องจากฉันวางแผนที่จะทำให้มันเริ่มขึ้นเมื่อ Firefox เริ่มต้นเป็นไปได้ที่จะทำให้มันหยุดลงเมื่อ firefox ถูกปิด อาจจะเป็นสิ่งที่ชอบ: while ["0" -lt "$(xdotool search --name firefox | wc -l)" ]. ฉันไม่ทราบว่าซินแทกซ์ถูกต้อง แต่คุณได้ประเด็น ... คุณช่วยเขียนมันใหม่เพื่อให้เป็นไปตามเงื่อนไขนี้ได้หรือไม่? ขอบคุณ!
Dusan Milosevic

@DusanMilosevic ดูคำตอบที่ปรับปรุงแล้ว ฉันเขียนใหม่เพื่อให้สคริปต์เปิดตัว firefox และจะทำงานได้ตราบใดที่อินสแตนซ์ firefox อย่างน้อยหนึ่งตัวกำลังทำงานอยู่
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.