David Z問的問題值得回答;我們只能推測你的最終目標,或者拍攝截圖的理由。但是,除此之外,以下是可能有助於實現既定目標的一種方法。 (這種方法很粗糙,我想如果我對xscreensaver有更多的瞭解,可以建議更好的解決方案。)
要開始,安裝和設置xscreensaver(如果使用屏幕保護程序與您的習慣兼容;如果不是,請參閱下一頁回答)。
如xscreensaver man page中所述,將xscreensaver-command -watch
添加到您的屏幕截圖腳本的read
循環中。每當出現LOCK
或BLANK
時,保存自上一屏幕截圖起經過的時間量T並停止定時器。當發生UNBLANK
時,將定時器重置爲15-T,或者截取屏幕截圖並將定時器設置爲15.
如果屏幕空白,您可能會放棄當前屏幕截圖,並保留15分鐘定時器定期運行。您可以使用xscreensaver-command -time
來查明自上次截圖以來是否發生了狀態更改。
腳本查找屏幕是否空白的一種更簡單的方法如下所示。如果屏幕變爲空白,否則Monitor is On
xset -q | grep Monitor
會產生Monitor is Off
。假設屏幕保護程序監視器關閉延遲爲K分鐘,腳本喚醒間隔爲L分鐘。讓W1,W2表示兩個連續的腳本喚醒。假設在W1 x設置所述監視器開啓,並且W2表示關閉。然後在W2,你知道在最近的K分鐘內沒有鍵盤活動。但是,空閒間隔可能長達K + L分鐘。如果你想收緊邊界,減少K和L,或使用計數器。這裏是一個說明使用計數器的腳本。要看到腳本正在運行,請將3m替換爲1並運行它。然後將1更改回3m,並將函數ss中的屏幕截圖過程替換爲echo
。
#!/bin/bash
ss() {
echo Taking snapshot at $(date)
}
busy=0
while true; do
xset -q | grep -q "Monitor is On" && ((++busy > 4)) && busy=0 && ss
sleep 3m
done
什麼是更大的背景 - 即爲什麼你這樣做?我只是有一種感覺,認爲這是通過查看更大的圖片可能會得到更好的解決方案的東西之一,也許甚至不涉及檢測按鍵。 –
你可以把每個屏幕截圖,然後與前一個比較,如果它匹配放下它? – Kevin