จะปิดอินสแตนซ์ทั้งหมดของโปรแกรมทันทีได้อย่างไร


11

แมวของแฟนสาวของฉันกำลังเดินบนแล็ปท็อปของฉันและฉันไม่ได้สังเกตเห็นเธอ เมื่อฉันหันไปตรวจสอบฉันเห็นว่าฉันมีแท็บ "ตัวจัดการเก็บถาวร" 32 แท็บ ฉันจะปิดพวกเขาทั้งหมดได้อย่างไรราวกับใช้Alt+ F4กับพวกเขาทั้งหมดในครั้งเดียว

คำตอบ:


14

จากบรรทัดคำสั่ง:

killall file-roller

คุณสามารถทำได้ alt + f4 แต่คุณต้องทำเช่นนั้นสำหรับตัวจัดการเก็บถาวรทั้งหมดที่เปิดขึ้น


21
แม้ว่าบางคนอาจแย้งว่าคำสั่ง "killall" นั้นค่อนข้างหนักหน่วง แต่คุณก็ยังเป็นคำตอบที่มีมนุษยธรรมมากกว่าการkill catกระทำที่ผมอยากจะแนะนำ
Nick Weinberg

ฉันไม่คิดว่าจะมีวิธีที่ง่ายกว่าในการหยุดพวกเขาทั้งหมด alt + f4 จำนวนมากจะทำเช่นนั้น แต่นั่นไม่ใช่คำถาม ;-)
Rinzwind

5
@NickWeinberg ฉันซาบซึ้ง :)
แมว

5
ฉันอ่านคำถามนี้และตอบผิด ฉันคิดว่ามันเกี่ยวกับแมวได้ปิดทั้งหมดและ OP นั้นไม่รู้ว่าแมวทำมันได้อย่างไร ฉันประหลาดใจที่แมวสามารถเขียนได้killall file-roller: D
Viktor Mellgren

1
damn @ViktorMellgren หยุดทำกาแฟให้ฉันบนหน้าจอของฉัน
Rinzwind

3

อีกวิธีหนึ่งคือการใช้wmctrlยูทิลิตี (การควบคุม Window Manager) สิ่งนี้สามารถใช้บอกตัวจัดการหน้าต่างเพื่อแกล้งคุณคลิกปุ่มปิด นี้หลีกเลี่ยงธรรมชาติที่อาจเกิดขึ้นหนักของkillall; ตัวอย่างเช่นบางโปรแกรมที่มีเอกสารที่ไม่ได้บันทึกจะออกจากโปรแกรมทันทีเมื่อถูกฆ่า (แม้เบา ๆ ) ในขณะที่คลิกปุ่มปิดจะปรากฏข้อความ "คุณต้องการบันทึกหรือไม่" รวดเร็ว

คำสั่งพื้นฐานคือwmctrl -c WINDOWTITLEดังนั้นในกรณีนี้wmctrl -c "Archive Manager"(สมมติว่าไม่มีไฟล์ที่เปิด: ที่เปลี่ยนชื่อ) น่าเสียดายที่ปิดครั้งละหนึ่งครั้งเท่านั้นดังนั้นเราต้องทำมากกว่านี้เพื่อปิดทั้งหมด

wmctrl คืนความสำเร็จหากพบการแข่งขันดังนั้นเราสามารถวนซ้ำจนกว่าจะล้มเหลว:

while wmctrl -c "Archive Manager"; do sleep 0.1; done

นี่จะเลือกหน้าต่างแรกที่พบเสมอดังนั้นเราจำเป็นต้องพักสักครู่เพื่อหลีกเลี่ยงการส่งคำสั่งปิดไปยังหน้าต่างแรกที่ปิดการใช้งานอยู่อย่างต่อเนื่อง - ซึ่งอาจทำให้เกิดข้อผิดพลาดซึ่งหยุดลูป

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

wmctrl -lเราสามารถหาหน้าต่างที่เปิดอยู่ทั้งหมดที่มี นี่แสดงรายการรหัสหน้าต่างตัวเลขที่เราสามารถใช้ระบุแต่ละหน้าต่างได้แม้ว่าจะมีชื่อเหมือนกันก็ตาม จากนั้นเราจำเป็นต้องกรองเฉพาะหน้าต่างที่ตรงกัน ( grepคำสั่ง) ดึงเฉพาะ ID หน้าต่าง ( cutคำสั่ง) และเรียกwmctrl -i -cแต่ละหน้าต่าง -iเป็นสิ่งจำเป็นเพื่อให้ตรงกับรหัสหน้าต่างแทนชื่อหน้าต่าง

for w in $(wmctrl -l | grep "Archive Manager" | cut -d" " -f1); do
    wmctrl -i -c $w
done

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


2
ดังนั้นคุณคาดหวังให้แมวพิมพ์สิ่งที่คุ้มค่ากับการประหยัด?
Rinzwind

0

คุณสามารถใช้แป้นพิมพ์ลัดCtrl+ Qซึ่งจะปิดหน้าต่างที่เปิดทั้งหมดของ Archive Manager


Ctrl+ Qทางลัดเป็นเรื่องธรรมดาบน Ubuntu (และจำนวนมากของการแจกแจงอื่น ๆ เช่นกัน) มันทำงานได้เหมือนกันกับแอพพลิเคชั่นส่วนใหญ่ที่ฉันเคยใช้ นั่นคือมันจะปิดหน้าต่างทั้งหมดของแอปพลิเคชันที่ทำงานอยู่


ยกเลิกการลงคะแนนของฉันเนื่องจากฉันไม่สามารถยืนยันได้ว่าCtrl+Qทำเช่นนั้นจริง ในขณะที่Quitเมนูปิดหน้าต่างที่เปิดทั้งหมดของ Archive Manager คีย์ลัดไม่ได้ทำเช่นเดียวกัน (อย่างน้อยใน 14.04)
clearkimura

1
@clearkimura ฉันไม่สามารถยืนยันได้ว่าเป็นเพราะฉันใช้ gnome หรือว่าเป็นเพราะรุ่น Ubuntu แต่มันใช้งานได้กับฉันใน Ubuntu 17.04 (กับ gnome) ซึ่งใช้ Archive Manager รุ่น 3.22.3
Dan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.