Я знайшов спосіб зробити цю роботу запуск. Для цього потрібно два кроки: Перший створення сценарію, який завантажує зображення веб-камери, а другий створення файлу плістів LaunchAgent, який буде викликати сценарій так часто.
Цей метод оновить фонове зображення конкретного простору, але лише тоді, коли ви знаходитесь в цьому просторі (також під час входу в систему і, можливо, під час пробудження зі сну).
Перший крок: Створення сценарію, який завантажує зображення та змінює фон робочого столу
- Створіть папку, наприклад
~/Library/Desktop Pictures/Webcam
.
- Виберіть цю папку, щоб вона була папкою фонів робочого столу в системних налаштуваннях → Destkop і заставка.
Напишіть текстовий файл із таким вмістом:
#!/bin/bash
shopt -s extglob # required for fancy rm
# This script updates the desktop background of a specific Space to a webcam picture
# while you are currently on that space.
#
# Choose a webcam:
remotepic=http://www.foto-webcam.org/webcam/wallberg/current/full.jpg
# Choose a desktop backgrounds pictures folder of the Space where you want to see the webcam
# (you have to set this manually in System Preferences → Destkop & Screen Saver):
webcampicturefolder=~/Library/Desktop\ Pictures/Webcam
# check the desktop background pictures folder of the current Space
currentpicturefolder=`osascript -e "tell application \"System Events\" to get pictures folder of current desktop"`
# only proceed if you are currently on the space where you want to see the webcam
if [ "$currentpicturefolder" == "$webcampicturefolder" ] ; then
localpic="$webcampicturefolder"/$(date +%Y%m%dT%H%M%S).jpg
backup="$webcampicturefolder"/backup.jpg
#remove all but the previous backup file and txt files:
rm "$webcampicturefolder"/!(*txt|`basename "$backup"`) 2>>/dev/null
# get the new picture unless there is a connection failure (-f flag):
curl -fs -o "$localpic" "$remotepic"
# make a backup of the new picture:
cp "$localpic" "$backup" 2>>/dev/null
# if no new picture has been downloaded, copy from backup:
cp "$backup" "$localpic"
# see http://www.macosxautomation.com/applescript/features/system-prefs.html
osascript -e "
tell application \"System Events\"
tell current desktop
set picture rotation to 0
set picture to POSIX file \"$localpic\"
end tell
end tell
"
fi
Збережіть файл, наприклад, як ~/Library/Desktop Pictures/Webcam/getwebcam.sh
Зробіть його виконаним, видавши в Терміналі таку команду:
chmod u+x ~/Library/Desktop Pictures/Webcam/getwebcam.sh
Другий крок: Створення списку LaunchAgent, який викликає сценарій
Напишіть текстовий файл із наступним змістом. Вам потрібно адаптувати рядок, /Users/myusername/Library/Desktop Pictures/Webcam/getwebcam.sh
щоб він вказував на сценарій, створений на першому кроці. Ви не можете використовувати відносний шлях за допомогою ~
. Змініть елементи dict клавішею «Хвилинка», як вважаєте за потрібне - ви можете додати їх більше. Ціле число визначає, в яку хвилину кожної години буде викликаний скрипт (див. Також man launchd.plist
на своєму Терміналі).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>me.myname.update-desktop-from-webcam</string>
<key>ProgramArguments</key>
<array>
<string>/Users/myusername/Library/Desktop Pictures/Webcam/getwebcam.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Minute</key>
<integer>01</integer>
</dict>
<dict>
<key>Minute</key>
<integer>16</integer>
</dict>
<dict>
<key>Minute</key>
<integer>31</integer>
</dict>
<dict>
<key>Minute</key>
<integer>46</integer>
</dict>
</array>
</dict>
</plist>
Збережіть текстовий файл у ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist
- ім'я має відповідати клавіші "Мітка" у файлі.
Завантажте його, видавши таку команду:
launchctl load ~/Library/LaunchAgents/me.myname.update-desktop-from-webcam.plist