首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在用户输入期间运行的计时器

问仅在用户输入期间运行的计时器
EN

Stack Overflow用户
提问于 2012-09-24 08:24:32
回答 1查看 211关注 0票数 3

运行Arch Linux

我有一个正在运行的脚本,它每15分钟截取一次屏幕截图,调整大小,并将其放入我的dropbox文件夹中。这是一种痛苦,当我离开我的电脑一段时间,并结束了同一件事的多个屏幕截图。

我想做的是每15分钟使用一次截图,而不是每15分钟一次。我想把使用定义为在按键后30秒内使用--如果我坐着打字15分钟,那就算数。如果我每天每小时检查一次东西,它只计算我实际打字的时间。

我该怎么做呢?我对任何语言的任何解决方案都持开放态度,使用任何现有的程序,等等,只要它能像上面描述的那样工作(或关闭)。

EN

回答 1

Stack Overflow用户

发布于 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来查看自上一个屏幕截图以来是否发生了状态更改。

下面显示了一种让脚本检查屏幕是否为空白的更简单的方法。

代码语言:javascript
复制
    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。

代码语言:javascript
复制
#!/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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12557436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档