运行Arch Linux
我有一个正在运行的脚本,它每15分钟截取一次屏幕截图,调整大小,并将其放入我的dropbox文件夹中。这是一种痛苦,当我离开我的电脑一段时间,并结束了同一件事的多个屏幕截图。
我想做的是每15分钟使用一次截图,而不是每15分钟一次。我想把使用定义为在按键后30秒内使用--如果我坐着打字15分钟,那就算数。如果我每天每小时检查一次东西,它只计算我实际打字的时间。
我该怎么做呢?我对任何语言的任何解决方案都持开放态度,使用任何现有的程序,等等,只要它能像上面描述的那样工作(或关闭)。
发布于 2012-09-24 09:21:02
David Z提出的问题值得回答;我们只能推测您的最终目标,或截图的原因。但抛开这一点,以下是一种可能有助于实现既定目标的方法。(这种方法很粗糙;我想如果我对xscreensaver有更多的了解,可能会有更好的解决方案。)
首先,安装并设置xscreensaver (如果使用屏幕保护程序符合您的习惯;如果不符合,请参阅下一个答案)。
如xscreensaver man page中所述,将read循环中的xscreensaver-command -watch添加到屏幕截图脚本中。每当发生LOCK或BLANK时,保存自上一屏幕截图以来经过的时间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,并将您的屏幕截图过程替换为函数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
donehttps://stackoverflow.com/questions/12557436
复制相似问题