2012-09-24 60 views
3

運行Arch Linux的定時器,只有用戶輸入

我有一個腳本運行,需要一個屏幕截圖每15分鐘,調整其大小,並把它放在我的Dropbox文件夾中運行。當我離開我的電腦一段時間並最終獲得同一事物的多個屏幕截圖時,這是一種痛苦。

我想要做的是每15分鐘使用一次屏幕截圖,而不是每十五分鐘一次。我想在按鍵的30秒內定義USE - 如果我坐下並打字十五分鐘,那就很重要。如果我每天一小時檢查一次,它只會計算我實際打字的時間。

我怎樣才能做到這一點?只要它按照上述(或關閉)的方式工作,我就可以使用任何語言的任何解決方案,使用任何現有的程序等。

+1

什麼是更大的背景 - 即爲什麼你這樣做?我只是有一種感覺,認爲這是通過查看更大的圖片可能會得到更好的解決方案的東西之一,也許甚至不涉及檢測按鍵。 –

+0

你可以把每個屏幕截圖,然後與前一個比較,如果它匹配放下它? – Kevin

回答

1

David Z問的問題值得回答;我們只能推測你的最終目標,或者拍攝截圖的理由。但是,除此之外,以下是可能有助於實現既定目標的一種方法。 (這種方法很粗糙,我想如果我對xscreensaver有更多的瞭解,可以建議更好的解決方案。)

要開始,安裝和設置xscreensaver(如果使用屏幕保護程序與您的習慣兼容;如果不是,請參閱下一頁回答)。

如xscreensaver man page中所述,將xscreensaver-command -watch添加到您的屏幕截圖腳本的read循環中。每當出現LOCKBLANK時,保存自上一屏幕截圖起經過的時間量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 
+0

更大的畫面是我將截圖上傳到Dropbox,然後IFTTT將它們放在Facebook上(稍後我可以將它切換到tumblr)。這是我正在開發的一項自願監控事項,旨在幫助我限制在計算機上花費的時間,並鼓勵在使用計算機時提高工作效率。另外,就定時器而言,我目前覺得有一個「sleep 15m」作爲while while循環的一部分,所以我不知道如何去重置。顯然我需要一個更好的計時器設置。 –

+0

@NikolardoFlamingo,我已經添加了一個應該工作的腳本 –