Làm cách nào để đóng cửa sổ Firefox mới từ Terminal?


10

Tôi có nhiều phiên bản Firefox đang chạy trong Ubuntu 14.04. Làm cách nào tôi có thể đóng cửa sổ / thể hiện được mở gần đây nhất từ ​​Terminal?

Tôi đã thử sử dụng bí danh cfct được xác định trong câu trả lời cho một câu hỏi liên quan , nhưng nó không hoạt động.


@chaos Tôi giả sử OP có nghĩa là cửa sổ, không phải tab
Jacob Vlijm

@JacobVlijm câu trả lời đó cũng đóng cửa sổ và dường như đối với tôi là giải pháp duy nhất. Vì firefox chỉ chạy một tiến trình, nên có bao nhiêu cửa sổ đang mở, bạn cần giải pháp đó trong chế độ công khai. killall firefoxsẽ SIGTERMtoàn bộ quá trình, không chỉ là một cửa sổ.
hỗn loạn

@chaos Tôi không đồng ý, rất có thể, tôi không ở nhà, xem tôi có đủ nhanh để đưa ra câu trả lời trong giờ nghỉ không :)
Jacob Vlijm

1
@chaos Bản sao dành cho khi các câu hỏi giống nhau, không phải câu trả lời. Một số chồng chéo là không thể tránh khỏi.
Seth

Ccct là gì? Tìm kiếm chủ yếu trả lại câu hỏi này rất nhiều.
TRiG

Câu trả lời:


13

Để tạo một lệnh tìm idcửa sổ cuối cùng, được tạo bởi Firefox(và để đóng nó), bạn sẽ cần wmctrlphải được cài đặt:

sudo apt-get install wmctrl

Lệnh

Sau đó sử dụng lệnh:

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


Giải trình:

wmctrl -l

liệt kê tất cả các cửa sổ, nhưng một thuộc tính quan trọng của lệnh là nó liệt kê các cửa sổ theo thứ tự chúng được tạo .

Vì thế:

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

sẽ:

  • liệt kê tất cả các cửa sổ:

    wmctrl -l
    
  • tìm những cái (dòng) với 'Mozilla Firefox' trong tên của chúng:

    grep 'Mozilla Firefox'
    
  • tìm cái cuối cùng (cũng là cái cuối cùng được tạo):

    tail -1
    
  • trích xuất chuỗi đầu tiên trong dòng (đó là window -id):

    awk '{ print $1 }'
    

Lệnh:

wmctrl -ic

sau đó sẽ giết cửa sổ Firefox gần đây nhất bằng id của nó (duyên dáng).

Hoặc thậm chí đáng tin cậy hơn:

Trong khi lệnh trên hoạt động tốt trong hầu hết các trường hợp, có một cơ hội nhỏ của cuộc đụng độ tên, nếu như một cửa sổ khác tồn tại với "Mozilla Firefox" trong tên của nó, nhưng không phải là một cửa sổ từ Firefox(không, nhưng vẫn còn).

Do đó, những gì nên hoạt động "không thấm nước" là xác định các cửa sổ trong danh sách cửa sổ (sử dụng wmctrl -lp) theo pid của firefox, thay vì chuỗi trong tên cửa sổ:

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

Như bạn có thể thấy, trong lệnh này,

wmctrl -l | grep 'Mozilla Firefox'

sản xuất các dòng chứa 'Mozilla Firefox', được thay thế bằng:

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

sản xuất các dòng chứa pid của firefox (là đầu ra của pgrep firefox)


2

Để đóng một cửa sổ (cũng có nhiều tab đã mở), hãy sử dụng lệnh đó:

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

Lưu ý rằng wmctrlxdotoolphải được cài đặt:

$ sudo apt-get install wmctrl xdotool

Xem thêm câu trả lời: Đóng tab firefox hiện tại bằng thiết bị đầu cuối .

Câu trả lời của tôi là một chút sửa đổi, bởi vì Ctrl+ Shift+ wđóng cửa sổ firefox.


Đối với tất cả các phím tắt, xem Phím tắt Firefox .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.