¿Cómo cierro una nueva ventana de Firefox desde la Terminal?

10

Tengo varias instancias de Firefox ejecutándose en Ubuntu 14.04. ¿Cómo puedo cerrar la ventana / instancia abierta más recientemente desde la Terminal?

Intenté usar el alias cfct definido en una respuesta a una pregunta relacionada , pero no funcionó.

sgu
fuente
@chaos supongo que OP significa ventanas, no pestañas
Jacob Vlijm
@JacobVlijm esa respuesta también cierra ventanas y me parece la única solución. Dado que Firefox ejecuta solo un proceso, independientemente de cuántas ventanas estén abiertas, necesita esa solución en el duplicado. killall firefoxsería SIGTERMtodo el proceso, no solo una ventana.
caos
@chaos No estoy de acuerdo, muy bien posible, no estoy en casa, mira si soy lo suficientemente rápido como para producir una respuesta en mi descanso :)
Jacob Vlijm
1
@chaos Los duplicados son para cuando las preguntas son las mismas, no las respuestas. Alguna superposición es inevitable.
Septiembre
¿Qué es el cfct? Las búsquedas devuelven principalmente esta misma pregunta.
TRiG

Respuestas:

13

Para hacer un comando que encuentre el idde la última ventana, creado por Firefox(y para cerrarlo), deberá wmctrlestar instalado:

sudo apt-get install wmctrl

El comando

Luego usa el comando:

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


Explicación:

wmctrl -l

enumera todas las ventanas, pero una propiedad importante del comando es que enumera las ventanas en el orden en que fueron creadas .

Por lo tanto:

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

será:

  • enumerar todas las ventanas:

    wmctrl -l
    
  • encuentre las (las líneas) con 'Mozilla Firefox' en su nombre:

    grep 'Mozilla Firefox'
    
  • encuentra el último (que también es el último creado):

    tail -1
    
  • extraer la primera cadena en la línea (que es la ventana -id):

    awk '{ print $1 }'
    

El comando:

wmctrl -ic

luego matará la ventana más reciente de Firefox por su id (gracefuly).

O incluso más confiable:

Mientras que el comando anterior funciona bien en la práctica totalidad de los casos, no es una pequeña posibilidad de conflictos de nombres, por ejemplo, si existe otra ventana con "Mozilla Firefox" en su nombre, pero no una ventana de Firefox(poco probable, pero aún así).

Por lo tanto, lo que debería funcionar "a prueba de agua" es identificar las ventanas en la lista de ventanas (usando wmctrl -lp) mediante el pid de firefox, en lugar de la cadena en el nombre de la ventana:

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

Como puede ver, en este comando,

wmctrl -l | grep 'Mozilla Firefox'

la producción de las líneas que contienen 'Mozilla Firefox' se reemplaza por:

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

produciendo las líneas que contienen el pid de firefox (como la salida de pgrep firefox)

Jacob Vlijm
fuente
2

Para cerrar una ventana (también con muchas pestañas abiertas) use ese comando:

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

Tenga en cuenta que wmctrly xdotooldebe instalarse:

$ sudo apt-get install wmctrl xdotool

Vea también esa respuesta: cierre la pestaña actual firefox usando la terminal .

Mi respuesta está un poco modificada, porque Ctrl+ Shift+ wcierra una ventana de Firefox.


Para todos los atajos, vea Atajos de teclado de Firefox .

caos
fuente