Обновите фоновый рисунок рабочего стола Mac OS X из сценария

У меня есть сценарий оболочки, который запускается заданием cron, которое обновляет jpeg. Фон рабочего стола на моем внешнем мониторе установлен в этот же файл. Однако Mac OS X автоматически не обновляет фон рабочего стола при обновлении файла.

Как заставить фон рабочего стола обновляться из сценария?

Правильный способ (без использования чего-то другого для вызова вашего скрипта) заключается в том, чтобы добавить следующую строку в ваш сценарий оболочки:

osascript -e 'tell Application "Finder"' -e 'set the desktop picture to {"NAME OF STARTUP DRIVE:PATH:TO:PICTURE.jpg"} as alias' -e 'end tell' 

Примечание. Путь использует двоеточия вместо /, и вы должны назвать жесткий диск.

По-настоящему странная альтернатива для хихиканья – это массовый клоун обходного пути, заключающийся в том, чтобы добавить следующую строку в ваш сценарий оболочки, выполняемый cron:

 killall Dock 

Это убьет док, который при перезапуске (автоматически) обновит фон рабочего стола. Недостатки? Ваши открытые иконки док-станции приложений будут переупорядочены (если значки приложений еще не сохранены в док-станции), и любые свернутые окна будут отменены. Поэтому, если вы не используете эти функции, все в порядке.

Мой предыдущий ответ на это втянулся, так что вот лучший.

Для этого я использую сценарий оболочки и рабочий процесс Automator. Сценарий оболочки загружает изображение, которое я хочу, где-то его сохраняет, а также выводит полный путь к изображению (это важная часть). Рабочий процесс Automator выглядит примерно так:

 [run shell script ~/bin/getAPOD.sh] -> [Set the Desktop Picture] 

Это действие «Установить картинку для рабочего стола», насколько я могу судить, появилось с помощью Automator.

Затем у меня есть запись crontab, которая выглядит так:

 * 4 * * * /usr/bin/open /Users/myuser/bin/APODset.app 

Если вы хотите, я могу опубликовать сценарий, рабочий процесс Automator, что угодно.

Вот последний аппликатор, который я использую:

 tell application "System Events" set myfolder to folder "foo" of the pictures folder tell desktop 2 to set picture to file "empty.jpeg" of myfolder as alias tell desktop 2 to set picture to file "bar.jpeg" of myfolder as alias end tell 

Это передается в osascript из osascript оболочки (фактически ruby), который обновляет jpeg.

Ранее обсуждавшаяся проблема фона, не обновляющаяся, если новый путь совпадает с текущим путем (который все еще был проблемой с ответом Chealion), взломан, временно переключившись на «empty.jpeg». Это раздражает, так как переход вяло, но ему нужно перезапустить Finder / Dock.

Я использую приложение System Events, потому что примеры Apple тоже .

Я знаю, что он не полностью отвечает на ваш вопрос, но это может быть интересно прочитать. То, как кто-то это сделал, это использовать AppleScript, который перезапустил Finder; При повторном запуске Finder он автоматически обновляет фоновое изображение; Похоже, нет другого пути.

Это просто сделать это без использования внешнего скрипта ….

Во-первых, держите свою работу cron ….

Во-вторых, создайте папку, в которой ваше задание cron поместит одну фотографию / jpg. Эта папка должна содержать только одну фотографию / jpg .. (Несколько файлов дают вам случайный эффект, см. Ниже).

В-третьих, «Открыть настройки системы» -> «Рабочий стол» и «Заставка» -> вкладка «Рабочий стол»

В-четвертых, перетащите или используйте +, чтобы добавить новую папку в свой список.

В-пятых, выделите папку в списке папок

В-шестых, включите «Изменить изображение» и выберите временной интервал.

Вы также можете запустить Applescript для сброса изображения, но это самый очевидный и простой способ, который я могу сделать для этого …

  • Mac OS X для VirtualBox
  • Отключить звуковые эффекты в OSX Lion
  • Установите две разные версии одного и того же приложения на OSX?
  • Как избавиться от ошибок com.apple.launchd.peruser в моем журнале?
  • Есть ли способ использовать клавиатуру для перемещения приложения в другое пространство на OS X?
  • Подключение mysql через 127.0.0.1 вместо localhost
  • Пакет документов OSX для Windows? Или сокрытие содержимого каталога как одного файла?
  • Как синхронизировать пользовательские ярлыки между двумя маками
  • Установите файл IMG в качестве компакт-диска на Mac?
  • Как узнать IP-адрес Mac, когда он находится в сети
  • Как устранить внезапный отказ ввода текста?
  • Давайте будем гением компьютера.