Configuração automatizada do protetor de tela na linha de comando / shell script

2

Portanto, estou configurando alguns LaunchAgents de modelo de usuário padrão para configurar um protetor de tela padrão para algumas das artes de fãs mais populares da minha empresa. (Na verdade, ele foi muito bem recebido pela equipe). Eles são projetados como imagens de primeira execução quando fazem login em usuários forçados do Active Directory local.

No entanto, estou obtendo resultados muito inconsistentes agora ... ou seja, não está funcionando.

O .plist inicia um Script da Shell localizado na pasta / sbin /. O mais estranho é que funciona principalmente em um usuário existente.

O protetor de tela serve para usar o "Flipup" com uma pasta específica de imagens, embaralhe as imagens e defina uma hora de início de 5 minutos.

Por exemplo, eu intencionalmente defino meu protetor de tela "usuário de configuração padrão" primeiro para "Celular de feriado", defino a seleção de imagem para "Cosmos" (um dos padrões) com um tempo de início de 20 minutos e imagens "shuffle" desmarcadas " Então mudei para "Arabesque".

Quando fiz o logout e iniciei o login para entrar no script, o resultado foi que eu recebi o "Holiday Mobile". No entanto, quando eu fui para "Configurações do Desktop e Screensaver", "Arabesque" foi realmente selecionado embora a pré-visualização "Mobile Holiday" estava mostrando com um cinza "Opções de proteção de tela" abaixo. (No entanto, a hora de início mudou para 5 minutos e, quando eu cliquei em "Holiday Mobile", a opção "Ordem aleatória de slides" foi verificada corretamente.)

Então, no usuário de teste, ele vai para a Fan Art, ativando o Shuffle e mudando a hora.

Mas quando eu crio um novo usuário depois de adicionar o LaunchAgent .plist ao Modelo de Usuário Padrão, não ganho nada além do protetor de tela padrão "Nome do Computador" em um fundo preto.

Estou totalmente confuso sobre por que isso está ocorrendo. Alguma sugestão?

Aqui está o script de 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
    
por ghostof101 13.05.2015 / 20:45

1 resposta

3

Então, através do JAMF, um homem muito sábio me mostrou uma coisa muito simples que eu precisava adicionar ao final do meu script:

killall cfprefsd

Resolveu o problema completamente. Enquanto você vai para as Preferências do Sistema, ele ainda mostra que o protetor de tela antigo está selecionado, funciona.

    
por 14.05.2015 / 19:42