Автоматически менять фон рабочего стола OS X для всех рабочих столов + мониторов?

8

Резюме . Автоматизация изменяет фон рабочего стола для всех (виртуальных) рабочих столов, но не для всех мониторов. Как это сделать для всех мониторов?

Подробности .

В этой записи блога обсуждается, как автоматически изменить фон для всех рабочих столов (виртуальный / Mission Control / и т. Д.) С помощью следующего скрипта:

#! /bin/bash
#script to change all desktop backgrounds
echo -n “Drag and drop an image file here then press ‘return’ or press ‘control-c’ to cancel…”
read -e WLPR;
function change_wallpaper
{
defaults write com.apple.desktop Background "{default = {ImageFilePath='$WLPR'; };}"; killall Dock
}
change_wallpaper

Однако, это не меняет фон рабочего стола на моем втором мониторе в моей системе на базе Lion для любого из моих настольных компьютеров с управлением миссией. Как применить выше (или аналог) ко всем физическим мониторам? (Хаки такие непривлекательные.)

Джонни Юта
источник

Ответы:

1

У меня работает Mac с двумя мониторами, поэтому я смогу попробовать его завтра (выходной сегодня).

Я думаю, если бы вы сравнили вывод:

$ defaults read com.apple.desktop

До и после ручной смены обоев:

Системные настройки> Рабочий стол и заставка> Рабочий стол

Это должно привести к появлению окна на втором экране, позволяющего выбрать необходимое изображение. После того, как все настроено и работает, сравните вывод исходной команды и посмотрите, дает ли она какие-либо подсказки. Я сделаю то же самое завтра и поиграю с этим. Посмотрим, не смогу ли я дать вам более полный ответ.

Даниэль-Джеймс W
источник
0

Боюсь, что это не полный ответ, так как я еще не нашел способ заставить это работать с несколькими рабочими столами, но он установит рабочий стол всех мониторов в текущем пространстве на любое изображение, которое вы укажете.

on run {input, parameters}
    set theFile to first item of input
    tell application "System Events"
        set theDesktops to a reference to every desktop
        repeat with aDesktop in theDesktops
            set the picture of aDesktop to theFile
        end repeat
    end tell
    return theFile
end run

Добавьте это в действие « Выполнить AppleScript» в рабочем процессе Automator и сохраните как приложение. Затем вы можете перетащить изображение в приложение, и оно будет установлено как изображение на рабочем столе.

Возможно, кто-то может найти способ заставить это работать с несколькими пространствами / рабочими столами.

robmathers
источник
0

На моей системе (10.12) defaults read com.apple.desktopдалиDomain com.apple.desktop does not exist

Следующая ссылка дает мне 2 идеи: https://derflounder.wordpress.com/2013/10/26/mavericks-desktop-background-picture-settings-moved-from-librarypreferencescom-apple-desktop-plist/

Первая идея: изменить ссылку DefaultDesktop: поэтому вам нужно временно отключить System Integrity Protection( https://apple.stackexchange.com/a/214540/156148 ), чтобы изменить символическую ссылку в/System/Library/CoreServices/DefaultDesktop.jpg

#! /bin/bash
if [ -z "$1" ]; then
    echo "Please specify an absolute path to an image as first parameter"
    exit -1
fi
mv /System/Library/CoreServices/DefaultDesktop.jpg /System/Library/CoreServices/DefaultDesktop.jpg.backup
ln -s $1 /System/Library/CoreServices/DefaultDesktop.jpg

2-я идея:

#! /bin/bash
#script to change all desktop backgrounds
if [ -z "$1" ]; then
    echo "Please specify an absolute path to an image as first parameter"
    exit -1
fi

osascript -e "tell application \"System Events\" to set picture of every desktop to \"$1\""
killall Dock
ворачиваются
источник