web-dev-qa-db-ja.com

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

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

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

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

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

たとえば、意図的に「デフォルト設定ユーザー」スクリーンセーバーを最初に「ホリデーモバイル」に設定し、画像選択を「コスモス」(デフォルトの1つ)に設定し、開始時間は20分、「画像のシャッフル」をオフにしました。それから「アラベスク」に変更しました。

ログアウトしてから再度ログインしてスクリプトを開始すると、「HolidayMobile」が表示されました。しかし、「デスクトップとスクリーンセーバーの設定」に移動すると、「ホリデーモバイル」プレビューがグレー表示された「スクリーンセーバーオプション」の下に表示されていたにもかかわらず、実際には「アラベスク」が選択されました。 (ただし、開始時間が5分に変更され、「Holiday Mobile」をクリックすると、「Shuffle SlideOrder」が正しくチェックされました。)

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

しかし、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
2
ghostof101

そのため、JAMFを通じて、非常に賢い人が、スクリプトの最後に追加する必要のある非常に単純なことを教えてくれました。

killall cfprefsd

問題を完全に解決しました。システム環境設定に移動すると、選択されている古いスクリーンセーバーが表示されますが、機能します。

3
ghostof101