コマンドライン/シェルスクリプトでのスクリーンセーバーの自動設定

コマンドライン/シェルスクリプトでのスクリーンセーバーの自動設定

そこで、私はいくつかのデフォルト ユーザー テンプレート LaunchAgents を構成して、会社で最も人気のあるファン アートのデフォルトのスクリーン セーバーを構成しています (実際に、チームから非常に好評を得ています)。これらは、強制ローカル Active Directory ユーザーにログインしたときの初回実行イメージとして設計されています。

しかし、今は非常に一貫性のない結果が得られています...つまり、まったく機能していません。

.plist/sbin/ フォルダにあるシェル スクリプトを起動します。奇妙なことに、これは既存のユーザーでほとんど機能します。

スクリーンセーバーは、特定の画像フォルダで「Flipup」を使用し、画像をシャッフルして、開始時間を 5 分に設定することを目的としています。

たとえば、私は意図的に「デフォルト構成ユーザー」のスクリーンセーバーを最初に「Holiday Mobile」に設定し、画像の選択を「Cosmos」(デフォルトの 1 つ) に設定し、開始時間を 20 分に設定し、「画像のシャッフル」のチェックを外しました。その後、「Arabesque」に変更しました。

ログアウトして再度ログインし、スクリプトを実行すると、「Holiday Mobile」が表示されました。しかし、「デスクトップとスクリーンセーバーの設定」に移動すると、「Holiday Mobile」のプレビューが表示され、「スクリーンセーバー オプション」がグレー表示されていましたが、実際には「アラベスク」が選択されていました。(ただし、開始時間は 5 分に変更され、「Holiday Mobile」をクリックすると、「スライドの順序をシャッフル」が適切にチェックされました。)

したがって、テスト ユーザーでは、ファン アートに移動し、シャッフルを有効にして時間を変更します。

しかし、LaunchAgent を.plist既定のユーザー テンプレートに追加した後に新しいユーザーを作成すると、黒い背景に標準の「コンピューター名」スクリーンセーバーしか表示されません。

なぜこのようなことが起こるのか全くわかりません。何かアドバイスはありますか?

シェル スクリプトは次のとおりです。

    #!/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

問題は完全に解決しました。システム環境設定を開くと、まだ古いスクリーンセーバーが選択されているように表示されますが、正常に動作します。

関連情報