Command-Line

非活動視窗的螢幕截圖

  • March 25, 2022

如何截取非活動視窗的螢幕截圖?如果我有 2 個視窗,我想擷取在後台執行的視窗的螢幕截圖。

為了詳細說明以前的答案和評論,擷取非活動視窗(如完全或部分隱藏)的螢幕截圖的能力似乎取決於視窗管理器。

使用以下(已經給出的)命令:

import -window <windowid> image.png

或者

xwd -id <windowid> | convert xwd:- image.png

(用於使用來自管道的標準輸入,-告訴輸入的格式)一個似乎能夠在Enlightenment(e17,使用 Fedora 19 測試)下擷取以下螢幕截圖:convert``xwd:

  • 完全或部分隱藏的窗戶;
  • 最小化視窗;
  • 其他工作區上的視窗。

我檢查了Openbox(相同的配置)和KDE(使用舊的 Scientific Linux 4.8 和最新版本ImageMagick(是的,令人難以置信的編譯…)),在這兩種情況下,螢幕截圖都只顯示了顯示層頂部的內容——也就是說,只有螢幕上已經可見的內容。

關鍵是該import命令檢查由tomap_state返回的欄位,如果不是,則返回錯誤。可以檢查例如使用:XGetWindowAttributes``IsViewable``map_state

xwininfo -id <windowid> | grep 'Map State'

它似乎總是IsViewable在 e17 下,而IsUnMapped一旦視窗最小化或其他什麼,它就在 openbox 和 KDE 下。

不確定為什麼當視窗與其他 WM 部分恢復時,螢幕截圖總是與 e17 一起乾淨,而它與其他視窗混合,但顯然它也與 WM 處理顯示的方式有關。

無論如何,顯然這是WM的問題。如果有一個 WM 列表能夠與無法對隱藏視窗進行螢幕截圖,那就太好了——我不這樣做。

“非活動”是什麼意思?“沒有焦點”或“被其他視窗隱藏”?在第一種情況下,gimp 會毫無問題地執行此操作(文件 -> 創建 -> 螢幕截圖)。在第二種情況下,它更困難(如果可能的話)。

引用自:https://unix.stackexchange.com/questions/76599