Workaround pro lag Cursoru na MacBooku Neo
Gist Unlag Neo popisuje zvláštní workaround: lehké nahrávání obrazovky může omezit lag Cursoru na MacBooku Neo.
Autor gistu Unlag Neo popisuje zvláštní problém na MacBooku Neo: Cursor se může začít zadrhávat u okrajů obrazovky nebo při vstupu do okna Terminálu. Nejde tedy o obecný tip na "opravu kurzoru", ale o workaround pro konkrétní lag v prostředí Cursoru na macOS.
Autor si všímá souvislosti s tím, jak macOS vykresluje ukazatel myši. Přes CGCursorIsDrawnInFramebuffer() sleduje, že se při lagu mění režim z hardwarového vykreslování na softwarové. Sám ale upozorňuje, že nejde o potvrzenou příčinu. Může jít jen o korelaci.
Jako nejméně otravný workaround autor zvolil nahrávání obrazovky. Ne proto, že by chtěl reálně ukládat video, ale proto, že screen recording zřejmě donutí macOS používat režim, ve kterém se lag v Cursoru neprojevuje.
Zajímavé je, že podle gistu stačí nahrávat jeden pixel jednou za 10 sekund a výstup v podstatě zahodit. Cílem tedy není videozáznam, ale udržení konkrétního chování systému s minimální zátěží na CPU, GPU i disk.
Gist obsahuje skript create_unlag_neo_app.sh, který vytvoří jednoduchou macOS aplikaci Unlag Neo.app. Není potřeba vývojářský účet ani Xcode. Aplikaci je pak možné přesunout například do /Applications, spustit a udělit jí oprávnění k nahrávání obrazovky.
Autor zmiňuje i další možnosti. Pomoci může například zapnutí barevného filtru v macOS nebo výrazná změna velikosti ukazatele myši, ale obě varianty mění běžné používání systému. Teoreticky by šlo zkusit vynutit odpovídající režim vykreslování přímo, jenže to by mohlo znamenat reverzní inženýrství WindowServeru a možná i zásah do SIP.
To je zároveň důležitý caveat. Nejde o oficiální opravu od Applu, ale o hack kolem chování systému. Navíc se při nahrávání obrazovky zobrazuje systémový indikátor. Autor proto přidal i možnost pozastavit workaround při přehrávání videa ve fullscreenu, kde by indikátor vadil nejvíc.
Zajímavé na tom není jen samotné řešení. Je to malá ukázka toho, jak hluboko někdy musí vývojář jít, aby obešel problém v grafické vrstvě systému. Ne přes veřejné nastavení, ale přes vedlejší efekt jiné systémové funkce.