是否有任何自动化脚本可以取消选中 "Require Password" 以从不在睡眠后关闭并在 mac 中关闭睡眠?

Is there any automation script to uncheck "Require Password" to never after sleep and turn off sleep in mac?

System Preference Settings

手动步骤:

  1. 打开系统偏好设置
  2. 点击“安全和隐私”
  3. 单击“常规”选项卡
  4. 取消选中“需要密码”选项
  5. 禁用“屏幕锁定”
  6. 关闭“系统偏好设置”

示例 AppleScript 代码,如下所示,在[=31= macOS CatalinamacOS Big Sur 下的脚本编辑器,具有语言和地区 设置在 系统偏好设置 中设置为 英语(美国)- 主要 并为我工作没有问题 1

  • 1 假定在 系统偏好设置 > 安全和隐私 > 隐私 已根据需要 set/addressed。

示例 AppleScript 代码

--  # Check to see if System Preferences is 
--  # running and if yes, then close it.
--  # 
--  # This is done so the script will not fail 
--  # if it is running and a modal sheet is 
--  # showing, hence the use of 'killall' 
--  # as 'quit' fails when done so, if it is.
--  #
--  # This is also done to allow default behaviors
--  # to be predictable from a clean occurrence.

if running of application "System Preferences" then
    try
        tell application "System Preferences" to quit
    on error
        do shell script "killall 'System Preferences'"
    end try
    delay 0.1
end if

--  # Make sure System Preferences is not running before
--  # opening it again. Otherwise there can be an issue
--  # when trying to reopen it while it's actually closing.

repeat while running of application "System Preferences" is true
    delay 0.1
end repeat

--  # Open System Preferences to the General 
--  # tab of the Security and Privacy pane.

tell application "System Preferences"
    activate
    reveal anchor "General" of ¬
        pane id "com.apple.preference.security"
end tell

tell application "System Events"
    tell application process "System Preferences"
        tell its window 1
            --  # Wait until the 'Require password' check box exists.
            set i to 0
            repeat until exists checkbox 1 of tab group 1
                delay 0.1
                set i to i + 1
                if i ≥ 30 then return
            end repeat
            --  # If the target check box is unchecked then quit.
            if value of checkbox 1 of tab group 1 = 0 then
                tell application "System Preferences" to quit
                return
            end if
            --  # Else click the target check box.
            click checkbox 1 of tab group 1
            --  # Wait until the 'Enter the password' sheet exists.
            set i to 0
            repeat until exists sheet 1
                delay 0.1
                set i to i + 1
                if i ≥ 30 then return
            end repeat
            --  # You can uncomment the 'set value of text field 1' and set the password 
            --  # and uncomment 'click button "OK"' to have the rest fully automated, or
            --  # leave them commented, enter your password, press enter and the rest is
            --  # automated. There is also a way to retrieve your password from your
            --  # Keychain, however, that's for you to research and implement.
            tell sheet 1
                -- set value of text field 1 to "PASSWORD"
                -- click button "OK"
                set i to 0
                repeat until exists button "Turn Off Screen Lock"
                    delay 0.5
                    set i to i + 1
                    if i ≥ 30 then return
                end repeat
                click button "Turn Off Screen Lock"
            end tell
        end tell
    end tell
end tell

tell application "System Preferences" to quit

注意:示例 AppleScript code 就是这样,没有任何包含的 错误处理 不包含任何额外的 错误处理 可能是适当的。用户有责任根据需要或需要添加任何 错误处理 。查看 try statement and error statement in the AppleScript Language Guide. See also, Working with Errors. Additionally, the use of the delay 命令 在适当的事件之间可能是必要的,例如delay 0.5,适当设置延迟