Aprire il programma già in esecuzione tramite terminale


10

Come posso passare al programma già in esecuzione usando il terminale?

Per esempio:

firefox apre una nuova finestra di Firefox.

Esiste un comando che focalizzerà la finestra di Firefox già aperta?


1
Sulla base della risposta accettata, penso che tu abbia voluto focalizzare una finestra esistente, non aprire una nuova finestra. Ho inviato una modifica per chiarire, ma è in attesa di revisione.
jpaugh

Risposte:


14

Come one-liner

Supponendo che tu abbia installato wmctrl (esegui in sudo apt-get install wmctrlcaso contrario):

Il comando:

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

Solleva l' ultimagedit finestra aperta . Sostituiscilo con qualsiasi altra applicazione.

Spiegazione

pgrep gedit

ottiene il pid di gedit

wmctrl -lp

elenca tutte le finestre e il pid a cui appartengono

awk '{ print $1 }'

divide il window-id (la prima stringa nella riga)

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

trova quindi l'ID finestra dell'ultima finestra creata di gedit(l'output di wmctrl -lpelenca le finestre in un ordine cronologico di creazione, se l'applicazione ha più finestre, tail -1restituisce l'ultima).

wmctrl -ia

successivamente alza la finestra dal suo window-id

In una piccola sceneggiatura

... da eseguire con l'applicazione come argomento:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Salvalo in un file vuoto come switchto.sh
  • Renderlo eseguibile
  • Eseguilo come (ad es.)

    /path/to/switchto.sh firefox
    

Alternative?

Teoricamente il comando:

xdotool search --class gedit windowactivate

dovrebbe fare (tipo di) lo stesso; in questo caso dovrebbe alzare la prima finestra trovatagedit .
Sembra tuttavia meno robusto. Sul mio sistema (Unity) non ha fatto nulla.


1

Se hai eseguito Firefox utilizzando firefox &, puoi usarlo jobsper vedere il suo numero. Per portarlo in primo piano scrivere %n firefoxche nsta per il suo numero. Esempio:

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

Inoltre puoi "uccidere" il programma:

sabrina@ubuntu:~$ kill %1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.