Buka program yang sudah berjalan melalui terminal

10

Bagaimana cara saya beralih ke program yang sudah berjalan menggunakan terminal?

Untuk contoh:

firefox membuka jendela firefox baru.

Apakah ada perintah yang akan memfokuskan jendela firefox yang sudah dibuka?

Kunok
sumber
1
Berdasarkan jawaban yang diterima, saya pikir Anda ingin memfokuskan jendela yang ada, bukan membuka jendela baru. Saya telah mengirimkan hasil edit untuk mengklarifikasi, tetapi sedang menunggu tinjauan.
jpaugh

Jawaban:

14

Sebagai satu-liner

Dengan anggapan Anda telah menginstal wmctrl (jalankan sudo apt-get install wmctrljika tidak):

Perintah:

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

Akan menaikkan jendela yang terakhir dibuka gedit. Ganti dengan aplikasi lain.

Penjelasan

pgrep gedit

mendapat pid dari gedit

wmctrl -lp

daftar semua jendela dan pid milik mereka

awk '{ print $1 }'

memisahkan id jendela- (string pertama di baris)

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

Oleh karena itu menemukan id jendela dari jendela yang terakhir dibuat gedit(output dari wmctrl -lpdaftar windows dalam urutan kronologis penciptaan, jika aplikasi memiliki beberapa jendela, tail -1mengembalikan yang terakhir).

wmctrl -ia

kemudian menaikkan jendela dengan nya window-id

Dalam naskah kecil

... untuk dijalankan dengan aplikasi sebagai argumen:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Simpan ke file kosong sebagai switchto.sh
  • Jadikan itu dapat dieksekusi
  • Jalankan sebagai (mis.)

    /path/to/switchto.sh firefox
    

Alternatif?

Secara teoritis perintah:

xdotool search --class gedit windowactivate

harus melakukan (jenis) yang sama; itu harus memunculkan jendela pertama yang ditemukangedit dalam kasus ini.
Namun sepertinya kurang kuat. Pada sistem saya (Persatuan) itu tidak melakukan apa pun.

Yakub Vlijm
sumber
1

Jika Anda menjalankan firefox menggunakan firefox &Anda dapat menggunakan jobsuntuk melihat nomornya. Untuk membawanya ke depan, tulis %n firefoxyang nmerupakan nomor. Contoh:

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

Anda juga dapat "membunuh" program:

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