Làm thế nào để chụp ảnh màn hình của cửa sổ không hoạt động? Nếu tôi có 2 cửa sổ, tôi muốn chụp ảnh màn hình của cửa sổ đang chạy ẩn.
Làm thế nào để chụp ảnh màn hình của cửa sổ không hoạt động? Nếu tôi có 2 cửa sổ, tôi muốn chụp ảnh màn hình của cửa sổ đang chạy ẩn.
Câu trả lời:
Để giải thích một chút về các câu trả lời và nhận xét trước đó, khả năng chụp ảnh màn hình của một cửa sổ không hoạt động (như bị ẩn hoàn toàn hoặc một phần) dường như phụ thuộc vào trình quản lý cửa sổ.
Sử dụng lệnh sau (đã cho):
import -window <windowid> image.png
hoặc là
xwd -id <windowid> | convert xwd:- image.png
(các -
số convert
là dành cho sử dụng đầu vào tiêu chuẩn từ đường ống, xwd:
kể định dạng của các đầu vào) ai có vẻ để có thể dưới Giác Ngộ (E17, thử nghiệm với Fedora 19) để chụp một ảnh chụp màn hình của:
Tôi đã kiểm tra với Openbox (cùng cấu hình) và KDE (với phiên bản Khoa học Linux 4.8 cũ và phiên bản mới nhất của ImageMagick
(vâng, thật không thể biên dịch được)) và trong cả hai trường hợp, ảnh chụp màn hình chỉ hiển thị những gì ở trên cùng của các lớp hiển thị - nghĩa là, chỉ những gì đã được hiển thị trên màn hình.
Vấn đề là các import
kiểm tra lệnh cho các map_state
lĩnh vực được trả về bởi XGetWindowAttributes
được IsViewable
, và nếu không nó sẽ trả về một lỗi. Người ta có thể kiểm tra, map_state
ví dụ như sử dụng:
xwininfo -id <windowid> | grep 'Map State'
Nó dường như luôn ở IsViewable
dưới e17, trong khi nó IsUnMapped
nằm dưới openbox và KDE ngay khi cửa sổ được thu nhỏ hoặc bất cứ thứ gì.
Mặc dù không chắc chắn tại sao ảnh chụp màn hình luôn sạch với e17 trong khi nó bị trộn với các cửa sổ khác khi cửa sổ được khôi phục một phần với các WM khác, nhưng rõ ràng nó cũng phải làm theo cách WM xử lý màn hình.
Dù sao, rõ ràng đó là vấn đề của WM. Thật tuyệt khi có một danh sách các WM có thể và không thể chụp ảnh màn hình của các cửa sổ ẩn - Tôi không làm điều đó.
xwininfo | grep -i 'window id'
và nhấp vào cửa sổ được đề cập.
"Không hoạt động" nghĩa là gì? "Không có tiêu điểm" hoặc "bị ẩn bởi một số cửa sổ khác"? Trong trường hợp đầu tiên, gimp sẽ làm điều đó mà không gặp vấn đề gì (Tệp -> Tạo -> Ảnh chụp màn hình). Trong trường hợp thứ hai, nó khó khăn hơn (nếu có thể).
import
(từ bộ ImageMagick) có một -window id
tùy chọn. Nếu bạn biết mã định danh cửa sổ sẽ hoạt động, ngay cả trên dòng lệnh. Bạn có thể lấy mã định danh cửa sổ bằng cách sử dụng xwininfo
, nhưng đối với điều đó bạn sẽ phải sử dụng chuột ít nhất một lần.
cho tôi trong `xprop -root | grep" _NET_CLIENT_LIST_STACKING (WINDOW): id cửa sổ "| tr '#' ',' | tr ',' '\ n' | grep 0x`; do xwininfo -id $ i | grep "Id cửa sổ"; xong
Sử dụng ở trên tôi đã có thể lấy id cửa sổ. và sử dụng
xwininfocó thể tìm thấy nhãn hoặc tên hoặc tiêu đề của cửa sổ.
import -window <window_ID> screenshot.png
Mặc dù câu trả lời này có thể không được mong muốn trong một số trường hợp, tập lệnh này sẽ nâng mọi cửa sổ trên màn hình hiện tại cùng một lúc để chúng có thể được chụp màn hình bằng công cụ chụp màn hình của bạn.
#!/bin/bash
# raiseAll - Mark Belanger - raise all windows
# get the ID of the current desktop
thisDT=`wmctrl -d |grep ' \* ' | awk '{print $1}'`
echo Raising windows for desktop $thisDT
for window in `wmctrl -l |grep " $thisDT " | awk '{print $1}'`
do
echo Raising $window - put your screenshot command here
wmctrl -i -a $window
sleep 1
done