Jak zprovoznit Night Shift na starším Macu a proč to udělat?
I když je to jen jediné číslo, stále provádíte určitý zásah do systému, takže pokud si nevěříte, do akce se nepouštějte. Ostatně není k tomu ani explicitní důvod, už mnoho let, pokud toužíte po teplejším odstínu displeje, můžete použít populární aplikaci f.lux. Když ale chcete „to pravé systémové“, pak jste tu správně.
Seznam oficiálně podporovaných Maců (potažmo externích displejů) najdete na webu Applu, ze kterého se dá vyčíst, že podporované modely Maců jsou zároveň ty, které podporují nízkoúrovňovou grafickou akceleraci Metal. Nemyslím si ale, že by funkce byla na tomto závislá, protože přepsáním kextu (ovladače systému) funguje bezproblémově i na modelech bez podpory této akcelerace.
Tak jdeme na to! Návod je funkční na macOS 10.12.4, sestavení 16E195. Zároveň pamatujte, že se postupy můžou v příštích aktualizacích měnit, jako i přepisovat ty upravené.
- Nejdříve je třeba vypnout ochranu systémové integrity, aby bylo možné upravit soubor který potřebujeme. To provedeme držením kláves cmd + R při zavádění systému, dokud se neobjeví šedé jablíčko. Po chvíli se ocitnete v zotavovacím módu macOS, odkud z nabídky Nástroje otevřeme Terminál a zadáme příkaz csrutil disable a potvrdíme enterem. Pak Mac restartujeme a necháme naběhnout zpátky do systému.
- Otevřeme složku
/System/Library/PrivateFrameworks/
pomocí nabídky Otevřít - Otevřít složku... a zkopírujeme soubor s názvem CoreBrightness.framework na plochu nebo kamkoli jinam, odkud ho budeme upravovat. Důrazně doporučuji ho zkopírovat dvakrát, druhý poslouží jako záloha. Pokud vás systém vyzve k zadání hesla, zadejte ho. - Nyní zkopírovaný soubor otevřeme, otevře se vám jako další složka. Zajímá nás soubor CoreBrightness. Protože je však napsán v šestnáctkové (hexadecimální) číselné soustavě, potřebujeme editor, který ho dovede upravit. Já doporučuji 0xED.
-
Soubor pomocí editoru otevřete a hledejte offset („řádek“)
000000000001e260
. Vyhledávání vyznačí hodnotu, jež je součástí následujícího řetězce:Čísla označují podporované modely Maců dle následujícího diagramu:
0900 0000 0d00 0000 0600 0000 0500 0000 0600 0000 0800 0000
MacBookPro9,x
iMac13,x
Macmini6,x
MacBookAir5,x
MacPro6,x
MacBook8,x
Od číslice 9 se v šestnáctkové soustavě začínají používat písmena abecedy, 0a odpovídá 10, 0b = 11 atd. Proto je v diagramu hodnota 13 v kextu jako 0d. Buď se můžete řídit touto jednoduchou posloupností, nebo můžete využít na internetu dostupných převodníků.
-
Přepište vybranou hodnotu podle verze modelu vašeho Macu. Tu zjistíte v nabídce - O tomto Macu - Systémový profil... v řádku Identifikátor modelu (například MacBookPro7,1). V tomto případě bude řetězec vypadat takto:
-
Tento soubor uložte a poté celý soubor CoreBrightness.framework zkopírujte zpět do složky PrivateFrameworks. Původní framework přepíšeme a zadáním hesla stvrdíme zkopírování.
-
Upravený ovladač tedy máme, nyní ho potřebujeme podepsat, aby mohl být použit. Otevřeme Terminál, kde zadáme:
sudo codesign -f -s - /S*/L*/PrivateFrameworks/CoreBrightness.framework/Versions/Current/CoreBrightness
Protože jde o příkaz začínající příkazem sudo, vyžadují se administrátorská práva. Potvrzení enterem vás tedy vyzve k zadání hesla, jehož znaky se ale při zadávání nezobrazují, stále uvidíte jen prázdné pole. Potvrďte znovu a v ideálním případě se vše povede. -
Nyní jsme se samotnou úpravou hotovi. Stále však máme vypnutou SIP, tedy ochranu systémové integrity (System Integrity Protection). To provedeme stejně jako při jejím vypnutí, tedy přes obnovovací režim, v Terminálu ale zadáme příkaz
csrutil enable
. -
Nyní se vraťte zpátky do systému a otevřete Předvolby systému - Monitory. Pokud se vše povedlo, uvidíte v oknu novou záložku Night Shift. Teď už stačí jen na ni kliknout, nastavit si ji jak je libo a užívat si jí.
A nyní k tomu, jaký to má smysl. Barevné displeje se skládají z pixelů, které obsahují složku barev, tzv. subpixely. V běžném displeji jsou složky tři - červená, zelená a modrá (RGB). Barvy, které monitor zobrazuje, vznikají jejich vzájemnou kombinací. Problémem je množství modré složky (tzv. modré světlo), která zabraňuje tvorbě melatoninu - hormonu, který řídí cirkadiánní rytmus člověka. Večer se tvorba melatoninu zvyšuje, aby byl člověk připraven jít spát, ráno při rozedníváním naopak snižuje, aby se vzbudil. Filtry modrého světla, jako jsou Night Shift nebo nově Noční osvětlení ve Windows 10, fungují na principu toho, že posunou barvy monitoru do teplejšího spektra částečnou redukcí modré složky. Nejvíce patrné je to u bílé, která se skládá z plně nasvícených subpixelů RGB (proto ji v počítačové grafice značíme RGB kódem 255, 255, 255), a proto také ve tmě nejvíc „drásá“ oči. Se zapnutým takovýmto filtrem je bílá červenější. S tím souvisí teplota barev (či teplota chromatičnosti), která značí, zda bude tedy bílá více do červena - teplejší (nižší hodnoty - do cca 5500 kelvinů) či do modra - studenější (vyšší hodnoty). Určitě jste se s tím setkali u žárovek, obzvlášť v současné době, kdy trh ovládají LED žárovky. V řeči čísel, z měření serveru PhoneArena vyplynulo, že teplota displeje iPhonu 6 Plus s vypnutým Night Shiftem dosahovala 7448 K, zatímco se zapnutým na střední (výchozí) nastavení se teplota snížila na hodnotu 5415 K.
Co říci závěrem? Pár zkušeností z provozu. Teplejší barvy můžou zpočátku působit nepřirozeně (a skutečně, na úpravu fotografií se tento režim opravdu nehodí), ale jakmile si navyknete, nebudete chtít jinak. Schválně si zkuste po deseti minutách večerní práce Night Shift vypnout a uvidíte, jak výrazně obraz zmodrá. Další zkušenost je rázu spíše technického. Protože všechny MacBooky vyrobené před rokem 2012 jsou vybaveny jen TN displejem, který mění z různých pozorovacích úhlů odstíny barev a v tomto případě je pohled zespodu výrazně naoranžovělý, za normálního úhlu otevření budete mít klávesnici a její okolí nasvícené zvláštním oranžovým nádechem odrazem z displeje. Též jsem zkoušel připojit externí monitor a navzdory tomu, že není podporovaný, Night Shift na něm bezproblémově fungoval. Těžko říct, zda se jedná o chybu (leč příjemnou), anebo jen o snahu zviditelnit určité typy podporovaných monitorů.
Zdroj: Pike's Universum, další vyznačeny v textu