การตั้งค่าหน้าจออัตโนมัติใน command line / shell script


1

ดังนั้นฉันจึงกำหนดค่าแม่แบบผู้ใช้เริ่มต้น LaunchAgents เพื่อกำหนดค่าสกรีนเซฟเวอร์เริ่มต้นสำหรับแฟนอาร์ตยอดนิยมของ บริษัท ของฉัน (มันได้รับการตอบรับอย่างดีจากทีมจริงๆ) พวกเขาได้รับการออกแบบเป็นรูปภาพที่รันครั้งแรกเมื่อพวกเขาลงชื่อเข้าใช้ผู้ใช้ Active-Local Active Directory

อย่างไรก็ตามตอนนี้ฉันได้รับผลลัพธ์ที่ไม่สอดคล้องกันมากนั่นคือมันไม่ทำงาน

.plist เรียกใช้ Shell Script ที่อยู่ในโฟลเดอร์ / sbin / สิ่งที่แปลกคือมันใช้งานได้ในผู้ใช้ที่มีอยู่เป็นส่วนใหญ่

โปรแกรมรักษาหน้าจอมีไว้เพื่อใช้ "Flipup" กับโฟลเดอร์เฉพาะของรูปภาพ, สุ่มรูปภาพและตั้งเวลาเริ่ม 5 นาที

ตัวอย่างเช่นฉันตั้งใจตั้งค่าหน้าจอ "ผู้ใช้การกำหนดค่าเริ่มต้น" เป็น "Holiday Mobile" เป็นครั้งแรกให้ตั้งค่าการเลือกรูปภาพเป็น "Cosmos" (ค่าเริ่มต้นหนึ่ง) ด้วยเวลาเริ่มต้น 20 นาทีและยกเลิกการเลือก จากนั้นฉันเปลี่ยนเป็น "Arabesque"

เมื่อฉันออกจากระบบและกลับเข้าสู่ระบบเพื่อเตะในสคริปต์ผลลัพธ์คือฉันได้รับ "Holiday Mobile" อย่างไรก็ตามเมื่อฉันไปที่ "การตั้งค่าเดสก์ท็อปและสกรีนเซฟเวอร์" "Arabesque" ถูกเลือกจริง ๆ แม้ว่าตัวอย่าง "Holiday Mobile" จะแสดงด้วย "ตัวเลือกโปรแกรมรักษาหน้าจอ" เป็นสีเทา (อย่างไรก็ตามเวลาเริ่มเปลี่ยนเป็น 5 นาทีและเมื่อฉันคลิกที่ "Holiday Mobile" "ตรวจสอบคำสั่งซื้อแบบสุ่ม" ได้รับการตรวจสอบอย่างถูกต้อง)

ดังนั้นในผู้ใช้ทดสอบจะไปที่ Fan Art เปิดใช้งาน Shuffle และเปลี่ยนเวลา

แต่เมื่อฉันสร้างผู้ใช้ใหม่หลังจากเพิ่ม 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

แก้ไขปัญหาทั้งหมด แม้ว่าคุณจะเข้าสู่การตั้งค่าระบบ แต่ยังคงแสดงภาพพักหน้าจอเก่าที่เลือกอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.