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ở?
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ở?
Câu trả lời:
Giả sử bạn đã cài đặt wmctrl (chạy sudo apt-get install wmctrl
nế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.
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 -lp
danh 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 -1
trả về cửa sổ cuối cùng).
wmctrl -ia
sau đó tăng cửa sổ bằng nó window-id
... đượ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 }')"
switchto.sh
Chạy nó như (ví dụ)
/path/to/switchto.sh firefox
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ả.
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
đó n
là 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