我对Timing如何知道您在特定文件中花费的时间感到好奇。我知道它需要“可访问性”权限,但是在此之后,它如何能够检测屏幕上当前的内容,以及访问给定文件的路径。例如,我发现这很有趣,它知道我在Xcode上,但是如何知道我正在Xcode内处理特定文件呢?
我不在Timing上工作,所以我只能对他们的应用程序的实现方式进行有根据的猜测。
Timing声称可以跟踪三个主要数据点:您使用的应用程序,您访问的网站以及您编辑的文档。
对于应用程序,Timing可能会监听NSWorkspaceDidLaunchApplicationNotification
通知,其中包含有关刚启动的应用程序的信息。要在启动Timing时检查当前打开的应用程序,它可能会从System Events中检查非后台进程,可能是这样的:
osascript -e 'tell application "System Events" to get name of (processes where background only is false)'
(来源获取在Bash中Mac OS X上正在运行的应用程序的列表吗?)
对于历史记录,Timing可能将HTML5 History API与Safari结合使用(我不知道Timing声称支持此功能的浏览器),或采用Charles Proxy之类的方法来监视任何传入和传出的数据包和请求。具体实现方式可能会有所不同,具体取决于计时是否需要管理员权限。
对于文档,Timing可以使用lsof
注释中建议的Droppy命令,也可以使用Apple界面之一。在El El Capitan之前,Apple在path的plist文件中列出了最近的文档~/Library/Preferences/com.apple.recentitems.plist
。在比El Capitan更新的macOS版本中,您可以使用mdfind
命令并指定kMDItemContentModificationDate
值以查找两个日期之间修改的文件:
mdfind -onlyin $HOME '((kMDItemContentModificationDate > $time.now(-60m)) && (kMDItemContentModificationDate < $time.now()))' | grep -v /Library/
(来源阿尔弗雷德·)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句