Mở chương trình đã chạy qua thiết bị đầu cuối


10

Làm cách nào để chuyển sang chương trình đã chạy bằng thiết bị đầu cuối?

Đối với đề thi:

firefox mở cửa sổ firefox mới.

Có một lệnh sẽ tập trung vào cửa sổ firefox đã mở?


1
Dựa trên câu trả lời được chấp nhận, tôi nghĩ bạn muốn tập trung một cửa sổ hiện có, không mở một cửa sổ mới. Tôi đã gửi một bản chỉnh sửa để làm rõ, nhưng nó đang chờ xem xét.
jpaugh

Câu trả lời:


14

Như một lớp lót

Giả sử bạn đã cài đặt wmctrl (chạy sudo apt-get install wmctrlnếu không):

Lệnh:

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

Sẽ nâng cửa sổ mở cuối cùnggedit . Thay thế nó bằng bất kỳ ứng dụng khác.

Giải trình

pgrep gedit

được pid của gedit

wmctrl -lp

liệt kê tất cả các cửa sổ và pid chúng thuộc về

awk '{ print $1 }'

tách ra khỏi id cửa sổ (chuỗi đầu tiên trong dòng)

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

do đó tìm id cửa sổ của cửa sổ được tạo cuối cùng của gedit(đầu ra của wmctrl -lpdanh sách các cửa sổ theo thứ tự thời gian tạo, nếu ứng dụng có nhiều cửa sổ, tail -1trả về cửa sổ cuối cùng).

wmctrl -ia

sau đó tăng cửa sổ bằng nó window-id

Trong một kịch bản nhỏ

... được chạy với ứng dụng làm đối số:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Lưu nó vào một tập tin trống như switchto.sh
  • Làm cho nó thực thi
  • Chạy nó như (ví dụ)

    /path/to/switchto.sh firefox
    

Lựa chọn thay thế?

Về mặt lý thuyết lệnh:

xdotool search --class gedit windowactivate

nên làm (loại) giống nhau; nó sẽ nâng cửa sổ tìm thấy đầu tiêngedit trong trường hợp này.
Có vẻ như ít mạnh mẽ hơn. Trên hệ thống của tôi (Unity) nó không làm gì cả.


1

Nếu bạn đã chạy firefox bằng cách sử dụng, firefox &bạn có thể sử dụng jobsđể xem số của nó. Để đưa nó vào foreground ghi %n firefoxđó nlà viết tắt của số của nó. Thí dụ:

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

Ngoài ra, bạn có thể "giết" chương trình:

sabrina@ubuntu:~$ kill %1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.