• macOS 26 में upgrade के बाद सबसे असुविधाजनक बात bugs से भी ज़्यादा विंडो कोनों की असंगति है; ज़रूरत से ज़्यादा rounded corners से भी बड़ी समस्या यह है कि अलग-अलग apps में यह अलग तरह से लागू होता है
  • मौजूदा समाधान SIP निष्क्रिय करने की मांग करते हैं, जिससे सुरक्षा कमजोर पड़ सकती है, और Safari जैसी system apps की libraries को सीधे modify करना पड़ता है, इसलिए यह जटिल है
  • SIP निष्क्रिय किए बिना सिर्फ third-party apps पर लागू होने वाले तरीके में NSThemeFrame class के methods को replace (swizzling) करके सभी user apps के corner radius को 23.0 पर एकसमान किया जाता है
  • dylib को compile और sign करने के बाद LaunchAgents plist के जरिए boot पर automatic injection करके इसे स्थायी रूप से लागू किया जा सकता है
  • नतीजतन सभी app windows समान रूप से rounded हो जाती हैं, जिससे “लगातार खराब design” लेकिन एकसमान visual effect मिलता है

समस्या की पृष्ठभूमि

  • macOS 26 में विभिन्न bugs के अलावा विंडो कोनों की असंगति की समस्या खास तौर पर उभरती है
  • कोनों का बहुत ज़्यादा rounded होना जितना परेशान नहीं करता, उससे ज़्यादा अलग-अलग apps में दिखने वाली visual inconsistency खटकती है
  • UI design बहुत संक्रामक होता है; designers अक्सर बड़ी कंपनियों के design को ज्यों का त्यों follow करते हैं, और यह प्रवृत्ति आगे और फैल सकती है
    • उदाहरण: design बहस में उद्योग का यह चलन कि "Apple इस button को कैसे बनाता?" कहकर बात खत्म कर दी जाए

मौजूदा समाधान की समस्याएँ

  • कुछ users ने SIP(System Integrity Protection) निष्क्रिय करके इस समस्या को हल करने की कोशिश की
  • SIP निष्क्रिय करने पर /root directory की सुरक्षा खत्म हो जाती है, और system apps (जैसे Safari) द्वारा इस्तेमाल की जाने वाली system libraries को सीधे modify करना पड़ता है
  • कुछ लोगों का मानना है कि अगर machine पहले से compromise हो चुकी हो तो SIP की वास्तविक सुरक्षा-क्षमता सीमित रहती है, फिर भी सुरक्षा जोखिम की संभावना बनी रहती है

वैकल्पिक तरीका: third-party apps को एकसमान बनाना

  • कोनों को हटाने के बजाय सब कुछ और ज़्यादा rounded करके एकरूप बनाने का रास्ता चुना गया
  • SIP निष्क्रिय किए बिना सिर्फ user apps (third-party) पर लागू होने वाले dylib injection तरीके का उपयोग किया गया
  • मौजूदा corner-removal solution को fork करके संशोधित code लागू किया गया

तकनीकी कार्यान्वयन

  • NSThemeFrame class के नीचे दिए 4 methods को method replacement (swizzling) से बदला गया
    • _cornerRadius23.0 return
    • _getCachedWindowCornerRadius23.0 return
    • _topCornerSizeCGSizeMake(23.0, 23.0) return
    • _bottomCornerSizeCGSizeMake(23.0, 23.0) return
  • com.apple. prefix वाली Apple system apps, CLI tools और daemons को लागू दायरे से बाहर रखा गया
  • arm64e और x86_64 architecture दोनों को support करने वाली universal dylib compile की गई

इंस्टॉल और automatic application

  • clang से SafariCornerTweak.dylib को compile करके /usr/local/lib/ में copy करने के बाद codesign से sign किया जाता है
  • LaunchAgents plist (com.local.dyld-inject.plist) के जरिए DYLD_INSERT_LIBRARIES environment variable सेट किया जाता है
  • launchctl load ~/Library/LaunchAgents/com.local.dyld-inject.plist से register करने पर boot के समय automatic dylib injection लागू हो जाता है
  • अंत में सभी app windows के कोने समान रूप से rounded हो जाते हैं, और “लगातार खराब design” लेकिन visual रूप से एकसमान नतीजा मिलता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.