Alterar automaticamente o plano de fundo da área de trabalho do OS X para todos os desktops + monitores?


8

Resumo . A automação altera o plano de fundo da área de trabalho para todas as áreas de trabalho (virtuais), mas nem todos os monitores. Como fazer isso para todos os monitores?

Detalhes .

Esta entrada do blog discute como alterar automaticamente o plano de fundo de todas as áreas de trabalho (virtuais / de controle de missão / etc) com o seguinte script:

#! /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

No entanto, ele não altera o plano de fundo da área de trabalho no meu segundo monitor no meu sistema baseado em Lion para nenhum dos meus desktops controlados por missões. Como se aplica acima (ou similar) a todos os monitores físicos? (Hacks como este pouco atraentes.)

Respostas:


1

Eu tenho um Mac com dois monitores no trabalho, então poderei experimentá-lo amanhã (dia de folga hoje).

Eu acho que se você comparar a saída de:

$ defaults read com.apple.desktop

Antes e depois de alterar manualmente o papel de parede via:

Preferências do sistema> Desktop e proteção de tela> Desktop

Isso deve abrir uma janela no segundo visor, permitindo que você selecione a imagem necessária. Uma vez configurado e funcionando, compare a saída do comando original e veja se ele fornece alguma pista. Vou fazer o mesmo amanhã e brincar com ele. Veja se eu não posso lhe dar uma resposta mais completa.


0

Receio que esta não seja uma resposta completa, pois ainda não encontrei uma maneira de fazer isso funcionar com várias áreas de trabalho, mas definirá a área de trabalho de todos os monitores no espaço atual para a imagem que você especificar.

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

Adicione isso a um ação Executar AppleScript em um fluxo de trabalho do Automator e salve-o como um aplicativo. Você pode arrastar e soltar uma imagem no aplicativo e ela será definida como a imagem da área de trabalho.

Talvez alguém possa encontrar uma maneira de fazer isso funcionar com vários espaços / áreas de trabalho.


0

No meu sistema (10.12) defaults read com.apple.desktop deuDomain com.apple.desktop does not exist

O link a seguir fornece duas idéias: https://derflounder.wordpress.com/2013/10/26/mavericks-desktop-background-picture-settings-moved-from-librarypreferencescom-apple-desktop-plist/

A primeira ideia: alterar o link do DefaultDesktop: portanto, é necessário desativar temporariamente System Integrity Protection( https://apple.stackexchange.com/a/214540/156148 ), para alterar o link simbólico em/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

A segunda ideia:

#! /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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.