Bagaimana cara menutup jendela Firefox baru dari Terminal?

10

Saya memiliki beberapa contoh Firefox yang berjalan di Ubuntu 14.04. Bagaimana saya bisa menutup jendela / instance yang paling baru dibuka dari Terminal?

Saya mencoba menggunakan alias cfct yang didefinisikan dalam jawaban untuk pertanyaan terkait , tetapi tidak berhasil.

sgu
sumber
@chaos Saya menganggap OP berarti windows, bukan tab
Jacob Vlijm
@ JacobVlijm jawaban itu juga menutup windows dan bagi saya satu-satunya solusi. Karena firefox hanya menjalankan satu proses, tanpa mengetahui berapa banyak jendela yang terbuka, Anda memerlukan solusi itu di dublicate. killall firefoxakan SIGTERMseluruh proses, bukan hanya jendela.
kekacauan
@chaos Saya tidak setuju, sangat mungkin, saya tidak di rumah, lihat apakah saya cukup cepat untuk menghasilkan jawaban di waktu istirahat saya :)
Jacob Vlijm
1
@chaos Duplikat adalah ketika pertanyaannya sama, bukan jawabannya. Beberapa tumpang tindih tidak dapat dihindari.
Seth
Apa itu cfct? Pencarian terutama mengembalikan pertanyaan ini.
TRiG

Jawaban:

13

Untuk membuat perintah yang menemukan idjendela terakhir, dibuat oleh Firefox(dan untuk menutupnya), Anda harus wmctrldiinstal:

sudo apt-get install wmctrl

Perintah

Kemudian gunakan perintah:

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


Penjelasan:

wmctrl -l

daftar semua jendela, tetapi properti penting dari perintah ini adalah bahwa daftar jendela-jendela dalam urutan mereka dibuat .

Karena itu:

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

akan:

  • daftar semua jendela:

    wmctrl -l
    
  • temukan yang (baris) dengan 'Mozilla Firefox' di namanya:

    grep 'Mozilla Firefox'
    
  • temukan yang terakhir (yang juga merupakan yang terakhir dibuat):

    tail -1
    
  • ekstrak string pertama di baris (yang merupakan jendela -id):

    awk '{ print $1 }'
    

Perintah:

wmctrl -ic

kemudian akan mematikan jendela Firefox terbaru dengan id (anggun).

Atau bahkan lebih dapat diandalkan:

Sementara perintah di atas bekerja dengan baik di hampir semua kasus, ada adalah kemungkinan kecil bentrokan nama, jika misalnya jendela lain ada dengan "Mozilla Firefox" dalam namanya, tetapi tidak jendela dari Firefox(mungkin, tapi masih).

Apa yang harus bekerja "tahan air" karena itu untuk mengidentifikasi jendela dalam daftar window (menggunakan wmctrl -lp) oleh pid dari firefox, bukannya string dalam nama jendela:

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

Seperti yang Anda lihat, dalam perintah ini,

wmctrl -l | grep 'Mozilla Firefox'

memproduksi baris yang berisi 'Mozilla Firefox', digantikan oleh:

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

menghasilkan garis-garis yang berisi pid dari firefox (sebagai output dari pgrep firefox)

Yakub Vlijm
sumber
2

Untuk menutup jendela (juga dengan banyak tab terbuka) gunakan perintah itu:

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

Perhatikan , itu wmctrldan xdotoolharus dipasang:

$ sudo apt-get install wmctrl xdotool

Lihat juga jawaban itu: Tutup tab firefox saat ini menggunakan terminal .

Jawaban saya sedikit dimodifikasi, karena Ctrl+ Shift+ wmenutup jendela firefox.


Untuk semua pintasan, lihat Pintasan Keyboard Firefox .

kekacauan
sumber