Cách lấy id cửa sổ từ xdotool Window Stack


12

Tôi cần id của cửa sổ đang hoạt động hoặc tập trung. Tôi cố gắng sử dụng xdotoollệnh. Có lệnh:

xdotool getactivewindow

kết quả được lưu vào ngăn xếp cửa sổ. Tôi muốn lấy id widnow từ ngăn xếp cửa sổ này. Chỉ huy

xdotool getactivewindow getwindowpid

không làm tôi hài lòng Tôi không muốn nhận id cửa sổ theo quy trình id.

Câu trả lời:


11

Tôi nghĩ xdotool getactivewindowlà 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 getwindowpidví dụ, getactivewindowđặt các id trên cửa sổ stack, và getwindowpidsử 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 getactivewindowvà 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 xdotoolvớ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

Tôi đã thử xdotool getactivewindowlệ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)
Mariusz

Tại sao bạn nghĩ 35651588 không phải là id cửa sổ?
Volker Siegel

Có, tôi nghĩ rằng 35651588 không phải là id cửa sổ. Bạn có thể thấy id cửa sổ bằng lệnh xwininfo, ví dụ: xwininfo -root -treelệnh này in tất cả các cửa sổ và cửa sổ có các kiểu đánh số khác.
Mariusz

1
xwininfohiển thị id cửa sổ dưới dạng số thập lục phân và xdotool hiển thị số thập phân, nhưng nó chỉ giống nhau.
Volker Siegel

bạn đúng rồi. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz

1

Lệnh này hoạt động với tôi

xdotool key --window "$(xdotool getactivewindow)" F5

phiên bản xdotool 3.20160805.1


xdotool getactivewindow key F5sẽ tạo ra kết quả tương tự
3804598
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.