Lệnh Bash để tập trung một cửa sổ cụ thể


50

Có cách nào, trong dòng lệnh bash, để tập trung vào một cửa sổ cụ thể của một quy trình đang chạy. Giả sử tôi biết tên, số, và bất cứ thứ gì tôi cần.

Chẳng hạn, nếu tôi có một phiên bản Firefox duy nhất đang chạy, nhưng nó đã được thu nhỏ (hoặc có một số cửa sổ khác ở trên nó). Tôi cần một lệnh bash đưa lên và tập trung vào cửa sổ Firefox, bằng cách biến nó thành cửa sổ hoạt động.

Câu trả lời:


78

Lệnh wmctrl dường như thực hiện công việc. Nó đã được cài đặt cho tôi, nhưng nó có sẵn trong kho trong trường hợp bất cứ ai cần nó.

wmctrl -l 

Danh sách các cửa sổ hiện đang mở (bao gồm các bảng gnome).

wmctrl -a STRING

Tập trung vào một cửa sổ có chứa CHUINGI trong tiêu đề của nó. Tôi không chắc điều gì sẽ xảy ra nếu có nhiều hơn một cửa sổ đáp ứng điều kiện đó.
Trong trường hợp của tôi, lệnh là:

wmctrl -a Firefox

6
Rất vui khi thấy ai đó đang đọc và tôi không chỉ lan man với chính mình. =)
Malabarba

1
Cũng thử xdotool .
Andres Riofrio

Điều này thật tuyệt vời khi đặt tiêu điểm trở lại gdb (trình gỡ lỗi) khi nó khởi chạy mục tiêu trình gỡ lỗi với một cửa sổ đánh cắp tiêu điểm, như kvm. Sử dụng lệnh gdb shell wmctrl -a something, trong đó một cái gì đó là một cái gì đó trong tiêu đề thiết bị đầu cuối trình gỡ lỗi của bạn.
doug65536

Cảm ơn rất nhiều, đây là vàng nguyên chất, tôi sợ rằng tôi đã mất tất cả các công việc đang chờ xử lý của mình trong một số cửa sổ Chrome đã biến mất trong nền bằng cách nào đó, nó đã hoạt động!
Osmar

9

Sử dụng wmctrlkết hợp với xdotoolbạn có thể chuyển trọng tâm sang Firefox và sau đó thực hiện các thao tác bàn phím hoặc chuột.

Trong ví dụ này:

wmctrl -R firefox && \
  xdotool key --clearmodifiers ctrl+t ctrl+l && \
  xdotool type --delay=250 google && \
  xdotool key --clearmodifiers Tab Return

Các bước sau đây được thực hiện:

  1. Tập trung vào cửa sổ Firefox phù hợp đầu tiên
  2. Mở tab trình duyệt mới
  3. Đặt tiêu điểm trong thanh địa chỉ
  4. Nhập "google"
  5. Tab để kết quả tự động hoàn thành trình duyệt đầu tiên
  6. Bấm phím Quay lại (hoặc Enter)

4

Làm thế nào là đoạn script dưới đây mà tôi sử dụng trong máy tính ub Ubuntu của tôi? trường hợp sử dụng là như thế này.

   $ ./focus_win.sh 1            # focus on a application window that executed at first
   $ ./focus_win.sh 2            # second executed application window

Tôi đang sử dụng nó sau khi gán nó trong phím tắt tùy chỉnh bàn phím. ctrl + 1, ctrl + 2, ...

mèo tập trung_win.sh

#! /bin/sh

if [ "" = "$1" ] ; then
    echo "usage $0 <win index>"
    exit 1;
fi

WIN_ID=`wmctrl -l | cut -d ' ' -f1 | head -n $1 | tail -n 1`

if [ "" = "$WIN_ID" ] ; then
    echo "fail to get win id of index $1"
    exit 1;
fi
wmctrl -i -a $WIN_ID
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.