在命令行/shell 脚本中自动配置屏幕保护程序

在命令行/shell 脚本中自动配置屏幕保护程序

因此,我正在配置一些默认用户模板 LaunchAgents,以便为公司最受欢迎的一些粉丝艺术作品配置默认屏幕保护程序。(实际上,该功能已得到团队的一致好评)。它们被设计为登录强制本地 Active Directory 用户时的首次运行图像。

但是,我现在得到的结果非常不一致......也就是说它根本不起作用。

启动.plist位于 /sbin/ 文件夹中的 Shell 脚本。奇怪的是,它主要在现有用户下运行。

屏幕保护程序旨在使用“Flipup”和特定的图像文件夹,随机播放图片并设置 5 分钟的开始时间。

例如,我有意先将“默认配置用户”屏幕保护程序设置为“Holiday Mobile”,将图片选择设置为“Cosmos”(默认设置之一),启动时间为 20 分钟,取消选中“随机播放图像”。然后我将其更改为“Arabesque”。

当我退出并重新登录以启动脚本时,结果我得到的是“Holiday Mobile”。但是,当我转到“桌面和屏幕保护程序设置”时,“Arabesque”实际上是被选中的,尽管“Holiday Mobile”预览显示下方有一个灰色的“屏幕保护程序选项”。(但是,开始时间确实更改为 5 分钟,当我单击“Holiday Mobile”时,“随机播放幻灯片顺序”被正确选中。)

因此在测试用户中,它会转到 Fan Art,激活随机播放并更改时间。

但是,当我将 LaunchAgent 添加.plist到默认用户模板后创建新用户时,我只会在黑色背景上看到标准的“计算机名称”屏幕保护程序。

我完全搞不懂为什么会发生这种情况。有什么建议吗?

以下是 shell 脚本:

    #!/bin/sh
    
    ## Set Screensaver to Photo Slideshow
    /usr/bin/defaults -currentHost write com.apple.screensaver 'CleanExit' -string "YES"
    /usr/bin/defaults -currentHost write com.apple.screensaver 'PrefsVersion' -int "100"
    /usr/bin/defaults -currentHost write com.apple.screensaver 'idleTime' -int "300"
    /usr/bin/defaults -currentHost write com.apple.screensaver "moduleDict" -dict-add "path" -string "/System/Library/Frameworks/ScreenSaver.framework/Resources/iLifeSlideshows.saver"
    /usr/bin/defaults -currentHost write com.apple.screensaver "moduleDict" -dict-add "type" -int "0" 
    /usr/bin/defaults -currentHost write com.apple.screensaver 'ShowClock' -bool "false"
    /usr/bin/defaults -currentHost write com.apple.screensaver 'tokenRemovalAction' -int "0"
    
    ## Set Type of Slideshow to "Flipup" (Results inconsistent)
    /usr/bin/defaults -currentHost write com.apple.ScreenSaver.iLifeSlideshows 'styleKey' -string "Flipup" 
    
    ## Set location of photos to Fan Art 
    /usr/bin/defaults -currentHost write com.apple.ScreenSaverPhotoChooser 'SelectedSource' -int "4"
    /usr/bin/defaults -currentHost write com.apple.ScreenSaverPhotoChooser 'SelectedFolderPath' "/Manehattan Files/Manehattan Backgrounds/Fan Art"
    /usr/bin/defaults -currentHost write com.apple.ScreenSaverPhotoChooser 'ShufflesPhotos' -bool "true"
    
    ## Removes the .plist LaunchAgent from inside the User Launch Agent Folder. 
    rm -f ~/Library/LaunchAgents/set-screensaver.plist
    
    exit

答案1

因此,通过 JAMF,一位非常聪明的人向我展示了我需要添加到脚本末尾的一件非常简单的事情:

killall cfprefsd

问题完全解决了。虽然如果你进入“系统偏好设置”,它仍然显示选择了旧屏幕保护程序,但它可以正常工作。

相关内容