Tôi nghĩ xdotool getactivewindow
là những gì bạn muốn - bạn đã thử nó?
Nó in id cửa sổ (từ ngăn xếp cửa sổ) nếu không có thêm các lệnh con xdotool trên dòng lệnh.
Trong xdotool getactivewindow getwindowpid
ví dụ, getactivewindow
đặt các id trên cửa sổ stack, và getwindowpid
sử dụng id này để truy vấn PID. Lưu ý rằng việc chạy lệnh đó trong thiết bị đầu cuối sẽ luôn trả về ID của cửa sổ thiết bị đầu cuối, bởi vì nó đang hoạt động. Để lấy ID từ một cửa sổ khác, hãy thử sleep 2s && xdotool getactivewindow
và chọn cửa sổ quan tâm trong khoảng thời gian hai giây.
Có một sự phức tạp khi sử dụng xdotool
với các công cụ khác để xử lý cửa sổ:
Mặc dù xdotool
đầu ra sử dụng số thập phân cho id gió, nhưng hầu hết các công cụ khác sử dụng số thập lục phân cho đầu ra (chúng thường hỗ trợ cả cho đầu vào).
Ví dụ: nếu bạn tìm thấy một cửa sổ với xdotool getactivewindow
, bạn sẽ không tìm thấy kết quả trong đầu ra của xwininfo -root -tree
, liệt kê tất cả các cửa sổ. Trước tiên, nó cần được chuyển đổi thành số thập lục phân:
$ xdotool getactivewindow
69206716
$ printf 0x%x 69206716
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
0x42002bc (has no name): ("konsole" "Konsole") 1154x781+0+0 +1289+498
Chuyển đổi thập phân thành thập lục phân:
printf 0x%x 69206716
Chuyển đổi thập lục phân thành thập phân:
printf %i 0x42002bc
xdotool getactivewindow
lệnh và vấn đề là nó không in kết quả trong thiết bị đầu cuối. Nó lưu kết quả vào ngăn xếp cửa sổ. Lệnh này in một số số nhưng nó không phải là id cửa sổ (ví dụ 35651588)