ฉันจะปิดหน้าต่าง Firefox ใหม่จากเทอร์มินัลได้อย่างไร


10

ฉันมี Firefox หลายอินสแตนซ์ที่ทำงานใน Ubuntu 14.04 ฉันจะปิดหน้าต่าง / อินสแตนซ์ที่เปิดล่าสุดจากเทอร์มินัลได้อย่างไร

ฉันลองใช้นามแฝง cfct ที่กำหนดไว้ในคำตอบของคำถามที่เกี่ยวข้องแต่ไม่ได้ผล


@chaos ผมถือว่า OP หมายถึงหน้าต่างไม่ได้แท็บ
จาค็อบ Vlijm

@JacobVlijm คำตอบนั้นก็ปิดหน้าต่างและดูเหมือนว่าสำหรับฉันทางออกเดียว เนื่องจาก firefox ทำงานเพียงกระบวนการเดียวไม่ต้องเปิดกี่หน้าต่างคุณจึงต้องใช้วิธีแก้ปัญหาในการเผยแพร่ killall firefoxจะSIGTERMกระบวนการทั้งหมดไม่เพียง แต่หน้าต่าง
ความโกลาหล

@chaos ผมไม่เห็นดีไปได้มากผมไม่ได้อยู่ที่บ้านดูว่าผมพอที่รวดเร็วในการผลิตคำตอบในการแบ่งของฉัน :)
จาค็อบ Vlijm

1
@chaos ซ้ำสำหรับเมื่อคำถามเหมือนกันไม่ใช่คำตอบ การทับซ้อนบางอย่างไม่สามารถหลีกเลี่ยงได้
เซท

cfct คืออะไร การค้นหาส่งคืนคำถามนี้เป็นส่วนใหญ่
TRiG

คำตอบ:


13

ในการสร้างคำสั่งที่ค้นหาidหน้าต่างสุดท้ายที่สร้างโดยFirefox(และเพื่อปิด) คุณจะต้องwmctrlติดตั้ง:

sudo apt-get install wmctrl

คำสั่ง

จากนั้นใช้คำสั่ง:

wmctrl -ic "$(wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }')"


คำอธิบาย:

wmctrl -l

แสดงรายการหน้าต่างทั้งหมด แต่คุณสมบัติที่สำคัญของคำสั่งก็คือว่ามันจะแสดงรายการหน้าต่างในลำดับที่พวกเขาสร้างขึ้น

ดังนั้น:

wmctrl -l | grep 'Mozilla Firefox' | tail -1 | awk '{ print $1 }'

จะ:

  • แสดงรายการ windows ทั้งหมด:

    wmctrl -l
    
  • ค้นหารายการ (บรรทัด) ด้วย 'Mozilla Firefox' ในชื่อ:

    grep 'Mozilla Firefox'
    
  • ค้นหาอันสุดท้าย (ซึ่งเป็นอันสุดท้ายที่สร้างขึ้น):

    tail -1
    
  • แยกสตริงแรกในบรรทัด (ซึ่งเป็นหน้าต่าง -id):

    awk '{ print $1 }'
    

คำสั่ง:

wmctrl -ic

จากนั้นจะฆ่าหน้าต่าง Firefox ล่าสุดด้วยรหัส (สง่างาม)

หรือน่าเชื่อถือมากยิ่งขึ้น:

ในขณะที่คำสั่งดังกล่าวทำงานได้ดีในทางปฏิบัติทุกกรณีที่มีเป็นโอกาสเล็ก ๆ ของการปะทะกันชื่อถ้าเช่นหน้าต่างอื่นอยู่ด้วย "Mozilla Firefox" ในชื่อของมัน แต่ไม่ได้เป็นหน้าต่างFirefox(ไม่แน่ แต่ยังคง)

สิ่งที่ควรใช้ "กันน้ำ" คือการระบุหน้าต่างในรายการหน้าต่าง (โดยใช้wmctrl -lp) โดยpidของfirefoxแทนที่จะเป็นสตริงในชื่อหน้าต่าง:

wmctrl -ic "$(wmctrl -lp | grep "$(pgrep firefox)" | tail -1 | awk '{ print $1 }')"

อย่างที่คุณเห็นในคำสั่งนี้

wmctrl -l | grep 'Mozilla Firefox'

การผลิตบรรทัดที่มี 'Mozilla Firefox' จะถูกแทนที่ด้วย:

wmctrl -lp | grep "$(pgrep firefox)"

การผลิตเส้นที่มี pid ของ firefox (เป็นผลลัพธ์ของpgrep firefox)


2

หากต้องการปิดหน้าต่าง (ด้วยแท็บที่เปิดอยู่จำนวนมาก) ให้ใช้คำสั่งนั้น:

wmctrl -a firefox; xdotool key Ctrl+Shift+w

แจ้งให้ทราบว่าwmctrlและxdotoolจะต้องติดตั้ง:

$ sudo apt-get install wmctrl xdotool

ดูเพิ่มเติมคำตอบว่า: ปิดแท็บปัจจุบัน Firefox ใช้ terminal

คำตอบของฉันมีการปรับเปลี่ยนเล็กน้อยเนื่องจากCtrl+ Shift+ wปิดหน้าต่าง firefox


สำหรับทางลัดทั้งหมดให้ดูFirefox แป้นพิมพ์ลัด

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