Na tegorocznym WWDC Apple pokazało ciemny wygląd systemu (dark mode), który zostanie wprowadzony w nowym macOS Mojave (10.14). Tryb ten zmienia nie tylko górną belkę na ciemną (jak to jest obecnie), lecz wygląd wszystkich elementów systemu. Wraz z nim został wprowadzony bardzo ciekawy mechanizm: dynamiczne tapety.
Wpis gościnny Marcina Czachurskiego.
Polega on na tym, że wraz ze zmianą pory dnia zmienia się tapeta. Inna jest o wschodzie słońca, inna w południe a inna wieczorem i w nocy. Efekt jest bardzo ciekawy.
W systemie mamy niestety tylko jedną taką tapetę przygotowaną przez Apple (zdjęcia pustyni Mojave). Pojawia się tutaj pytanie czy istnieje możliwość przygotowania takiej tapety samemu?
Niestety Apple nie dostarczyło programistom żadnych informacji jak takie tapety tworzyć. Postanowiłem jednak sprawdzić jak zostały one zbudowane i czy na podstawie tych informacji uda się utworzyć taką tapetę samemu.
Wszystkie wbudowane tapety w macOS możemy znaleźć w folderze: /Library/Desktop Pictures. Również tutaj znajduje się nowa dynamiczna tapeta: Mojave (Dynamic).heic.
Aby sprawdzić zawartość systemowej tapety możemy skorzystać z narzędzia dostępnego w sieci: https://strukturag.github.io/libheif/. Po przesłaniu tam pliku HEIC widzimy, że zawiera on 16 różnych zdjęć pustyni, zrobionych o różnych porach dnia.
Aby sprawdzić, czy oprócz zdjęć w tapecie dostarczanej przez Apple znajdują się jakieś dodatkowe informacje skorzystałem z biblioteki libheif. Wykorzystałem w tym celu (zmodyfikowaną przeze mnie) aplikację heif-info. Poniżej zamieszczam wynik jej działania.
Number of top level images: 16 image #0 id: 61 width: 5120 height: 2880 is primary: yes number of metadata: 1 metadata type: mime content type: application/rdf+xml metadata size: 3302 metadata content: image #1 id: 123 width: 5120 height: 2880 image #2 id: 184 width: 5120 height: 2880 image #3 id: 245 width: 5120 height: 2880 image #4 id: 306 width: 5120 height: 2880 image #5 id: 367 width: 5120 height: 2880 image #6 id: 428 width: 5120 height: 2880 image #7 id: 489 width: 5120 height: 2880 image #8 id: 550 width: 5120 height: 2880 image #9 id: 611 width: 5120 height: 2880 image #10 id: 672 width: 5120 height: 2880 image #11 id: 733 width: 5120 height: 2880 image #12 id: 794 width: 5120 height: 2880 image #13 id: 855 width: 5120 height: 2880 image #14 id: 916 width: 5120 height: 2880 image #15 id: 977 width: 5120 height: 2880
Widać więc, że pierwsze zdjęcie zamieszczone w pliku dołączone ma dodatkowe informacje zapisane jako XML. Szczególnie intrygujące jest to, co Apple zapisało w znaczniku apple_desktop:solar. Po chwili zabawy okazało się, że jest to zawartość binarnego pliku plist zakodowanego w standardzie base64. Pliki te są bardzo często używane przez Apple oraz programistów do przechowywania informacji w formacie: klucz – wartość.
Aby zamienić zawartość znacznika na coś zrozumiałego przez ludzi można wykonać poniższe dwa polecenia (najpierw utworzyć musimy plik text.base64, do którego zapisać musimy zawartość znacznika).
base64 -D text.base64 -o decoded.txt plutil -convert son decoded.txt
Dzięki temu widzimy, że Apple w pliku plist przechowuje listę dodatkowych informacji. Dla domyślnej tapety jest to tablica 16 dodatkowych elementów (poniżej znajdują się dwa z nich).
{ "si": [ { "i": 0, "z": 270.9334057827345, "a": -0.3427528387535028, "o": 1 }, (...) { "i": 15, "z": 53.50908581251309, "a": -38.04743388682423, "o": 0 } ] }
Widzimy, że każdy element zawiera cztery dodatkowe właściwości:
• i – indeks zdjęcie, którego dotyczy dana grupa
• a – altitude
• z – azimuth
• o – informacja o tym w jakim trybie dane zdjęcie ma być widoczne (1 – tylko w trybie jasnym, 0 – w obu trybach)
Dzięki informacji o azymucie astronomicznym (azimuth) oraz o wysokości astronomicznej (altitude) wiemy dokładnie gdzie było słońce w momencie robienia zdjęcia.
To rozwiązanie jest genialne, zdjęcia będą zmieniać się o innych porach zimą oraz o innych latem. System operacyjny wie gdzie jesteśmy, a dzięki temu, gdzie znajduje się nad nami słońce. Może pokazać nam zdjęcie, które było zrobione w najbardziej zbliżonych warunkach. Są to szczegóły, za które tak lubimy Apple.
Znając wszystkie powyższe informacje przygotowałem bardzo naiwną aplikację konsolową w Swift (której kod źródłowy można podejrzeć tutaj). Tworzy ona z 16 zdjęć oraz dodatkowych metadanych plik HEIC. Możemy następnie plik taki ustawić jako tło pulpitu i cieszyć się swoją własną tapetą dynamiczną.
Poniżej zamieszczam video ukazujące tapetę, którą zrobiłem (użyłem zdjęć w wysokiej rozdzielczości dostępnych na tej stronie, są to zdjęcia wykonane przez satelitę pogodowego Himawari-8).
Widać, że tworzenie własnych tapet dynamicznych będzie możliwe. Zapewne większa ich ilość będzie pojawiać się po oficjalnej premierze macOS Mojave.
Oficjalna witryna systemu macOS Mojave – www.apple.pl
Markę Synology kojarzycie zapewne z urządzeniami NAS. Te świetne dyski sieciowe dają możliwość przechowywania bezpiecznie…
Na rynek wchodzą dwa nowe głośniki marki Sonos: Era 100 i Era 300. Model Era…
Akcesoriów, które możemy dodać do naszego inteligentnego domu jest coraz więcej. Do tego zacnego grona…
Wiecie, że jedna z najlepszych baz danych - FileMaker (obecnie zmieniana jest nazwa na Claris),…
Elon Musk wszedł na Twittera i zrobił rewolucje. Ostateczną ocenę jego poczynań w tym serwisie…
Ten produkt miał już nie istnieć. Kiedy pojawiły się informację, że Apple nie przedłuży życia „dużego”…
Serwis wykorzystuje pliki cookies. Korzystając ze strony wyrażasz zgodę na wykorzystywanie plików cookies.