
Este é um aplicativo de console simples para o MacOS criar papéis de parede dinâmicos introduzidos no MacOS Mojave. Aqui você pode assistir como os papéis de parede dinâmicos funcionam. Além disso, você pode ler mais sobre papéis de parede dinâmicos nos seguintes artigos:
Abaixo, você pode baixar papéis de parede dinâmicos preparados:
Vista da Terra (download) 
Cyberpunk 2077 (download) 
Você precisa ter o Xcode mais recente (10.2) e o Swift 5 instalado.
Abra seu terminal e execute os seguintes comandos.
brew tap mczachurski/wallpapper
brew install wallpapperAbra seu terminal e execute os seguintes comandos.
$ git clone https://github.com/mczachurski/wallpapper.git
$ cd wallpapper
$ swift build --configuration release
$ sudo cp .build/release/wallpapper /usr/local/bin
$ sudo cp .build/release/wallpapper-exif /usr/local/bin Se você estiver usando o SWIFT na versão 4.1, edite o arquivo Package.swift e coloque sua versão do Swift (na primeira linha).
Além disso, você pode criar o script build.sh (ele usa swiftc em vez de Swift CLI).
$ git clone https://github.com/mczachurski/wallpapper.git
$ cd wallpapper
$ ./build.sh
$ sudo cp .output/wallpapper /usr/local/bin
$ sudo cp .output/wallpapper-exif /usr/local/bin Agora, no console, você pode executar wallpapper -h e você deve obter uma resposta semelhante à seguinte.
wallpapper: [command_option] [-i jsonFile] [-e heicFile]
Command options are:
-h show this message and exit
-v show program version and exit
-o output file name (default is ' output.heic ' )
-i input .json file with wallpaper description
-e input .heic file to extract metadataIsso é tudo. Agora você pode construir seus próprios painéis dinâmicos de parede.
Se você receber um erro durante a parte Swift Build da instalação, tente baixar o Xcode IDE inteiro (não apenas as ferramentas) da App Store. Em seguida, corra
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer e execute o comando de instalação novamente.
Se você já fez os comandos acima, agora pode criar papel de parede dinâmico. É muito fácil. Primeiro, você deve colocar todas as fotos em uma pasta e, na mesma pasta, criar arquivo json com a descrição da imagem. Suporte ao aplicativo três tipos de papéis de parede dinâmicos.
Para o papel de parede, que baseado em coordenadas solares, o arquivo json deve ter uma estrutura como no snippet abaixo.
[
{
"fileName" : " 1.png " ,
"isPrimary" : true ,
"isForLight" : true ,
"altitude" : 27.95 ,
"azimuth" : 279.66
},
{
"fileName" : " 2.png " ,
"altitude" : -31.05 ,
"azimuth" : 4.16
},
...
{
"fileName" : " 16.png " ,
"isForDark" : true ,
"altitude" : -28.63 ,
"azimuth" : 340.41
}
]Propriedades:
fileName - nome do nome do arquivo de imagem (você pode usar o mesmo arquivo para poucos nós).isPrimary - Informações sobre a imagem que é a imagem primária (ela será visível após a criação do arquivo heic ). Apenas um dos arquivos pode ser primário.isForLight - Se a imagem true for exibida quando o usuário escolher o papel de parede "Light (Static)"isForDark - Se a imagem true for exibida quando o usuário escolher "Dark (Static)" Papel de paredealtitude - é o ângulo entre o sol e o horizonte local do observador.azimuth - Esse é o ângulo do sol ao redor do horizonte. Para calcular a altitude e azimute adequados, você pode usar o aplicativo wallpapper-exif ou a página da Web: https://keisan.casio.com/exec/system/1224682277. Na página da web, você deve colocar o lugar onde tira uma foto e a data. Em seguida, o sistema gera para sua altitude e azimute do sol durante o dia inteiro.
Para o papel de parede, que baseado no arquivo json time do sistema operacional precisa ter uma estrutura como abaixo do snippet.
[
{
"fileName" : " 1.png " ,
"isPrimary" : true ,
"isForLight" : true ,
"time" : " 2012-04-23T10:25:43Z "
},
{
"fileName" : " 2.png " ,
"time" : " 2012-04-23T14:32:12Z "
},
{
"fileName" : " 3.png " ,
"time" : " 2012-04-23T18:12:01Z "
},
{
"fileName" : " 4.png " ,
"isForDark" : true ,
"time" : " 2012-04-23T20:10:45Z "
}
]Propriedades:
fileName - nome do nome do arquivo de imagem (você pode usar o mesmo arquivo para poucos nós).isPrimary - Informações sobre a imagem que é a imagem primária (ela será visível após a criação do arquivo heic ). Apenas um dos arquivos pode ser primário.isForLight - Se a imagem true for exibida quando o usuário escolher o papel de parede "Light (Static)"isForDark - Se a imagem true for exibida quando o usuário escolher "Dark (Static)" Papel de paredetime - Tempo em que o papel de parede será alterado (o mais importante é a hora).Para papéis de parede com base nas configurações da APERANÇÃO do sistema operacional (claro/escuro), precisamos preparar o arquivo JSON muito mais simples, e temos que usar apenas duas imagens (uma para luz e outra para o tema escuro).
[
{
"fileName" : " 1.png " ,
"isPrimary" : true ,
"isForLight" : true
},
{
"fileName" : " 2.png " ,
"isForDark" : true
}
]Propriedades:
fileName - nome do nome do arquivo de imagem.isPrimary - Informações sobre a imagem que é a imagem primária (ela será visível após a criação do arquivo heic ). Apenas um dos arquivos pode ser primário.isForLight - Se a imagem true for exibida quando o usuário usar o tema leveisForDark - Se a imagem true for exibida quando o usuário usar o tema escuro Quando você tem arquivo json e todas as fotos, pode gerar arquivo heic . Você tem que executar o seguinte comando:
wallpapper -i wallpapper.json Você deve ter um novo arquivo: output.heic . Defina este arquivo como um novo papel de parede e aproveite seu próprio papel de parede dinâmico!
Você pode extrair metadados do arquivo heic existente. Você tem que executar o seguinte comando:
wallpapper -e Catalina.heicOs metadados devem ser impressos como saída no console.
Além disso, é possível extrair e salvar o arquivo plist inteiro:
wallpapper -e Catalina.heic -o output.plist Se suas fotos contiver metadados GPS EXIF e tempo de criação, você poderá usar o aplicativo wallpapper-exif para gerar arquivo json com altitude de sol e azimuth . Exemplo de uso do aplicativo:
$ wallpapper-exif 1.jpeg 2.jpeg 3.jpeg json deve ser produzido como saída no console.
Os cálculos do SUN foram criados com base na biblioteca JavaScript criada por Vladimir Agafonkin (@Mourner).