macos - 以编程方式或通过 Mac 上的命令行发现当前用户的屏幕保护程序超时

标签 macos cocoa command-line screensaver

有谁知道如何发现 Mac 上当前用户的屏幕保护程序的超时时间。如果可能的话,我更喜欢编程方法,但也很乐意解析命令行实用程序的输出。我已经使用 pmset 执行此操作来获取 sleep 时间。

最佳答案

当前用户(至少从 10.6.x 以上)的屏幕保护程序设置值存储在 property list file 中在~/Library/Preferences/com.apple.screensaver.plist中。如果用户决定禁用自动屏幕消隐/保存,则可能没有任何值(value)。

您可以使用名为 defaults(1) 的命令行实用程序读取该值。 :

defaults read com.apple.screensaver idleTime
defaults -currentHost read com.apple.screensaver idleTime

前者提供对当前用户设置的访问,后者提供系统默认设置(如果存在)。

读取默认值(1)的值有些复杂,因为该值可能存在也可能不存在。如果当前用户禁用了屏幕保护程序,那么假设 defaults read com.apple.screensaveridleTime 将返回零是明智的,但事实并非如此。相反,defaults(1) 会在终端上抛出错误消息并返回非零退出代码。您必须首先检查退出代码并仅在其为零的情况下才进行解析,而不是仅仅解析 defaults(1) 的输出。另一方面,在解析外部命令的输出时,无论如何这可能是一个明智的策略。

苹果提供programming interfaces with their Xcode用于读/写property lists以及。

关于macos - 以编程方式或通过 Mac 上的命令行发现当前用户的屏幕保护程序超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897862/

相关文章:

python - 使用 `python -m jsontool` 从命令行验证 JSON 给出 'No JSON object could be decoded'

objective-c - 可变集合有文字语法吗?

objective-c - 第三方代码和 Git

linux - 如何在启动 Linux 的纯命令行界面后打开应用程序?

以 ssh 协议(protocol)为前缀时拒绝 ssh 权限

swift - 使用 Swift 将 Core Image Filter 应用于 OS X 上的视频

swift - XCode - Swift 动态选项区域

c++ - 在 OSX 下安装和查找 GMP

macos - 如何使用 JXA 关闭所有 Finder 窗口

c++ - 如何通过进程名称检查mac进程是否存在