Automatisierte Bildschirmschonerkonfiguration im Befehlszeilen- / Shell-Skript

3875
ghostof101

Daher konfiguriere ich einige LaunchAgents für Standardbenutzervorlagen, um einen Standard-Bildschirmschoner für einige der beliebtesten Fan-Art meines Unternehmens zu konfigurieren. (Es ist wirklich sehr gut vom Team aufgenommen worden). Sie werden als First-Run-Images entwickelt, wenn sie sich bei ihren erzwungenen lokalen Active Directory-Benutzern anmelden.

Allerdings bekomme ich jetzt sehr inkonsistente Ergebnisse ... es funktioniert überhaupt nicht.

Die .plist startet ein Shell-Skript, das sich im Ordner / sbin / befindet. Das Seltsame ist, dass es meistens bei einem vorhandenen Benutzer funktioniert.

Der Bildschirmschoner soll "Flipup" mit einem bestimmten Ordner von Bildern verwenden, die Bilder mischen und eine Startzeit von 5 Minuten einstellen.

Zum Beispiel habe ich meinen Bildschirmschoner "Standardkonfigurationsbenutzer" zunächst auf "Holiday Mobile" gesetzt, die Bildauswahl auf "Cosmos" (eine der Standardeinstellungen) mit einer Startzeit von 20 Minuten und ungeprüftem "Shuffle-Images" gesetzt. Dann habe ich es in "Arabesque" geändert.

Als ich mich abgemeldet und wieder angemeldet habe, um das Skript zu treten, erhielt ich das Ergebnis "Holiday Mobile". Als ich jedoch zu "Desktop- und Bildschirmschoner-Einstellungen" ging, wurde "Arabesque" tatsächlich ausgewählt, obwohl die Vorschau "Holiday Mobile" mit abgeblendeten "Bildschirmschoner-Optionen" angezeigt wurde. (Die Startzeit hat sich jedoch auf 5 Minuten geändert und als ich auf "Holiday Mobile" geklickt habe, wurde "Shuffle Slide Order" richtig geprüft.)

Im Testbenutzer geht es also um Fan Art, um Shuffle zu aktivieren und die Zeit zu ändern.

Wenn ich nach dem Hinzufügen der LaunchAgent-.plist zur Standardbenutzervorlage einen neuen Benutzer erstelle, erhalte ich nur den Standard-Bildschirmschoner "Computername" auf schwarzem Hintergrund.

Ich bin total verwirrt, warum dies geschieht. Irgendwelche Vorschläge?

Hier ist das Shell-Skript:

`` `

#!/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
Ärgerlich ist, dass OS X, wenn ein Bildschirmschoner auf eine Dateifreigabe verweist und der Bildschirmschoner bei fehlender Dateifreigabe aktiviert ist, auf den Standard zurückgesetzt wird (versucht nie, die Freigabe erneut auszuführen). Auch wenn dies nicht Ihr ursprünglicher Anwendungsfall ist, sollte dieses Skript eine Möglichkeit sein, dieses Problem zu umgehen, da das Skript den Ort der Fotos festlegt. Es ist also allgemeiner nützlich als Sie denken. John Faughnan vor 9 Jahren 0

1 Antwort auf die Frage

3
ghostof101

Durch JAMF zeigte mir ein sehr weiser Mann eine sehr einfache Sache, die ich am Ende meines Skripts hinzufügen musste:

killall cfprefsd 

Das Problem wurde vollständig gelöst. Wenn Sie in die Systemeinstellungen gehen, wird immer noch der alte ausgewählte Bildschirmschoner angezeigt, aber es funktioniert.