3

运行 Arch Linux

我有一个脚本正在运行,它每十五分钟截取一次屏幕截图,调整它的大小,然后将它放在我的 Dropbox 文件夹中。当我将计算机单独放置一段时间并最终获得同一事物的多个屏幕截图时,这有点痛苦。

我想做的是每十五分钟使用一次屏幕截图,而不是每十五分钟一次。我想将 USE 定义为按键后 30 秒内 - 如果我坐下来输入 15 分钟,这很重要。如果我每天每小时检查一次,它只会计算我实际打字的时间。

我怎样才能做到这一点?我愿意接受任何语言的任何解决方案,使用任何现有的程序等,只要它按上述方式工作(或关闭)。

4

1 回答 1

1

David Z 提出的问题值得回答;我们只能推测您的最终目标,或截屏的原因。但除此之外,以下是一种可能有助于实现既定目标的方法。(这种方法很粗糙;我想如果我对 xscreensaver 有更多的了解,可以提出更好的解决方案。)

首先,安装并设置xscreensaver(如果使用屏幕保护程序符合您的习惯;如果不是,请参阅下一个答案)。

如 xscreensaver手册页xscreensaver-command -watch中所述,将read循环添加到您的屏幕截图脚本中。每当 aLOCKBLANK发生时,保存自上一个屏幕截图以来经过的时间 T 并停止计时器。发生时UNBLANK,将计时器重置为 15-T,或者截屏并将计时器设置为 15。

如果屏幕空白,您可能会放弃当前的屏幕截图,并让您的 15 分钟计时器定期运行。您可以使用xscreensaver-command -time来了解自上一个屏幕截图以来是否发生了状态更改。

下面显示了一种让您的脚本找出屏幕是否空白的更简单方法。

    xset -q | grep Monitor

Monitor is Off如果屏幕空白,将产生,否则Monitor is On。假设您的屏幕保护程序关闭延迟为 K 分钟,而您的脚本唤醒间隔为 L 分钟。令 W1、W2 表示两个连续的脚本唤醒。假设在 W1 xset 表示监视器打开,而在 W2 表示它关闭。然后在 W2 中,您知道在最后 K 分钟内没有任何键盘活动。但是,空闲时间间隔可能长达 K+L 分钟。如果您想收紧界限,请减小 K 和 L,或使用计数器。这是一个说明使用计数器的脚本。要查看运行中的脚本,请将 3m 替换为 1 并运行它。然后将 1 改回 3m 并将您的屏幕截图程序代替echoin 函数 ss。

#!/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
于 2012-09-24T01:21:02.177 回答