Abra el programa que ya se está ejecutando a través de la terminal

10

¿Cómo cambio al programa que ya se está ejecutando usando la terminal?

Por ejemplo:

firefox abre una nueva ventana de firefox.

¿Hay un comando que enfocará la ventana de Firefox ya abierta?

Kunok
fuente
1
Según la respuesta aceptada, creo que quería enfocar una ventana existente, no abrir una nueva ventana. He enviado una edición para aclarar, pero está pendiente de revisión.
jpaugh

Respuestas:

14

Como una sola línea

Suponiendo que tiene instalado wmctrl (ejecute sudo apt-get install wmctrlsi no):

El comando:

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

Levantaría la últimagedit ventana abierta . Reemplácelo por cualquier otra aplicación.

Explicación

pgrep gedit

obtiene el pid de gedit

wmctrl -lp

enumera todas las ventanas y el pid al que pertenecen

awk '{ print $1 }'

se separa de la identificación de la ventana (la primera cadena de la línea)

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

por lo tanto, encuentra el id. de ventana de la última ventana creada gedit(la salida de wmctrl -lpenumera las ventanas en un orden cronológico de creación, si la aplicación tiene varias ventanas, tail -1devuelve la última).

wmctrl -ia

posteriormente levanta la ventana por su window-id

En un guion pequeño

... para ejecutarse con la aplicación como argumento:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Guárdelo en un archivo vacío como switchto.sh
  • Hazlo ejecutable
  • Ejecútelo como (p. Ej.)

    /path/to/switchto.sh firefox
    

¿Alternativas?

Teóricamente el comando:

xdotool search --class gedit windowactivate

debería hacer (más o menos) lo mismo; debería abrir la primera ventana encontradagedit en este caso.
Sin embargo, parece menos robusto. En mi sistema (Unidad) no hizo nada en absoluto.

Jacob Vlijm
fuente
1

Si ha ejecutado Firefox usando firefox &, puede usar jobspara ver su número. Para llevarlo a primer plano, escriba %n firefoxcuál nrepresenta su número. Ejemplo:

sabrina@ubuntu:~$ jobs
[1]+ Stopped      firefox
sabrina@ubuntu:~$ fg %1

También puedes "matar" el programa:

sabrina@ubuntu:~$ kill %1
Sabrina Spelman
fuente