- Điểm khó chịu nhất khi nâng cấp lên macOS 26 không phải là lỗi, mà là vấn đề các góc cửa sổ không đồng nhất; cốt lõi không nằm ở việc bo tròn quá mức mà là sự thiếu nhất quán khi mỗi ứng dụng lại được áp dụng khác nhau
- Giải pháp trước đây yêu cầu vô hiệu hóa SIP, có thể tạo ra nguy cơ bảo mật và còn phức tạp vì phải sửa trực tiếp thư viện của các ứng dụng hệ thống như Safari
- Theo cách tiếp cận chỉ áp dụng cho ứng dụng bên thứ ba mà không cần tắt SIP, có thể thống nhất bán kính góc của mọi ứng dụng người dùng thành
23.0 bằng cách thay thế (swizzling) các phương thức của lớp NSThemeFrame
- Sau khi biên dịch và ký dylib, có thể áp dụng vĩnh viễn bằng cách tự động inject khi khởi động thông qua LaunchAgents plist
- Kết quả là cửa sổ của mọi ứng dụng đều được bo tròn giống nhau, mang lại “một thiết kế tệ một cách nhất quán” nhưng hiệu ứng thị giác đồng bộ
Bối cảnh vấn đề
- Ngoài nhiều lỗi khác, macOS 26 còn nổi bật với vấn đề các góc cửa sổ không nhất quán
- Điều gây khó chịu hơn bản thân việc bo góc quá mức là sự thiếu nhất quán về mặt thị giác khi mỗi ứng dụng được xử lý khác nhau
- Thiết kế UI có tính lây lan rất mạnh; các nhà thiết kế thường có xu hướng sao chép nguyên xi thiết kế của các công ty lớn, và hiện tượng này có thể còn lan rộng hơn
- Ví dụ: trong các cuộc tranh luận về thiết kế, ngành này thường giải quyết theo kiểu “Apple vẽ nút này như thế nào?”
Vấn đề của các cách giải quyết trước đây
- Một số người dùng đã thử giải quyết vấn đề này bằng cách vô hiệu hóa SIP (System Integrity Protection)
- Khi tắt SIP, thư mục
/root mất đi lớp bảo vệ, đồng thời cần chỉnh sửa trực tiếp thư viện hệ thống mà các ứng dụng hệ thống như Safari sử dụng
- Cũng có quan điểm cho rằng nếu máy đã bị xâm phạm thì hiệu quả bảo vệ thực tế của SIP là hạn chế, nhưng bản thân nguy cơ bảo mật vẫn tồn tại
Cách tiếp cận thay thế: thống nhất ứng dụng bên thứ ba
- Thay vì loại bỏ các góc, hướng đi được chọn là làm cho mọi thứ tròn hơn để đồng nhất
- Sử dụng phương thức inject dylib có thể áp dụng chỉ cho các ứng dụng người dùng (bên thứ ba) mà không cần vô hiệu hóa SIP
- Áp dụng mã đã được fork và chỉnh sửa từ giải pháp xóa góc hiện có
Triển khai kỹ thuật
- Thay thế phương thức (swizzling) 4 phương thức dưới đây của lớp
NSThemeFrame
_cornerRadius → trả về 23.0
_getCachedWindowCornerRadius → trả về 23.0
_topCornerSize → trả về CGSizeMake(23.0, 23.0)
_bottomCornerSize → trả về CGSizeMake(23.0, 23.0)
- Các ứng dụng hệ thống Apple, công cụ CLI và daemon có tiền tố com.apple. được loại khỏi phạm vi áp dụng
- Biên dịch universal dylib hỗ trợ cả hai kiến trúc
arm64e và x86_64
Cài đặt và tự động áp dụng
- Biên dịch SafariCornerTweak.dylib bằng clang, sao chép vào
/usr/local/lib/ rồi ký bằng codesign
- Thiết lập biến môi trường
DYLD_INSERT_LIBRARIES thông qua LaunchAgents plist (com.local.dyld-inject.plist)
- Đăng ký bằng
launchctl load ~/Library/LaunchAgents/com.local.dyld-inject.plist để tự động inject dylib khi khởi động
- Cuối cùng, các góc của cửa sổ trong mọi ứng dụng đều được bo tròn giống nhau, tạo ra “một thiết kế tệ một cách nhất quán” nhưng kết quả thị giác đồng bộ
2 bình luận
Vẫn chưa cập nhật..
Ý kiến trên Hacker News
Sau khi nâng cấp macOS, đã xuất hiện vấn đề WindowServer chiếm hơn 100% CPU
Thậm chí không thể dán tên tệp trong hộp thoại lưu tệp, và trường URL của Safari cũng hoạt động kỳ lạ
Đã cải thiện tốc độ đôi chút bằng cách bật Giảm độ trong suốt trong Cài đặt hệ thống, tắt Spaces riêng cho từng ứng dụng, ẩn biểu tượng màn hình nền trong Finder, v.v.
Khuyến nghị App Tamer để giới hạn mức sử dụng CPU của các ứng dụng chạy nền (không có tác dụng với WindowServer hay kernel_task)
Dạo này Apple tạo cảm giác như không có người cầm lái. Việc phải chờ vài giây khi mở cửa sổ hay chuyển ứng dụng là một vấn đề nghiêm trọng
Hy vọng một ngày nào đó AI sẽ thiết kế một hệ điều hành mới để Apple·Microsoft·Google lại cạnh tranh với nhau
Với M2 Air, mở cùng lúc hàng chục tab và ứng dụng vẫn không có vấn đề gì. Ngày xưa khởi động mất 3 phút, cài game mất 30 phút, còn giờ thì gần như tức thì
Tôi không thích thiết kế của macOS Tahoe. Đặc biệt là Apple Music đã trở nên kỳ quặc đến mức khó hiểu
Nhưng đa phần vẫn có thể bỏ qua, riêng thiết kế tab thì xấu quá mức chấp nhận. Cảm giác như thụt lùi về mọi mặt so với trước
Việc tranh cãi về góc cửa sổ lại lớn đến vậy có lẽ cũng có nghĩa macOS là một hệ điều hành rất hoàn thiện
Tôi yêu Linux, nhưng kiểu tranh luận này rốt cuộc cũng có thể xem là một lời khen
Việc xóa thông báo trong macOS Tahoe quá phiền phức
Nút “Liquid Glass” phản hồi chậm, và có độ trễ trước khi thông báo biến mất. Bản cập nhật ứng dụng nhạc cũng là tệ nhất
Mọi người ám ảnh với SIP (System Integrity Protection), nhưng trên thực tế nó không có tác dụng gì trong việc chống ransomware
Nếu dùng các package manager như npm, pip ở ngoài VM thì còn nguy hiểm hơn cả việc bật SIP
rmthì dữ liệu vẫn bay mấtNhưng nhờ SIP mà vẫn có thể khởi động vào safe mode để khôi phục
Tôi dùng Linux và Windows chia đôi, và vì những lý do như thế này nên không thể dùng Mac làm máy chính
Dock và cách hoạt động của chế độ toàn màn hình quá kỳ lạ. Việc đóng cửa sổ mà ứng dụng vẫn tiếp tục chạy cũng gây khó hiểu
Tôi thích việc có những người nhận ra các chi tiết nhỏ như thế này. Nhờ khả năng quan sát của họ mà chúng ta cũng có cảm giác được bảo vệ
macOS hiện tại giống như thể Harley Davidson và Volvo Truck sáp nhập rồi hợp nhất thiết kế với nhau
Nó trở thành kết quả của những sự thỏa hiệp để đồng bộ thương hiệu
UI của macOS có vẻ được thiết kế dựa trên một kiểu sử dụng trong đó cửa sổ không chạy toàn màn hình mà được mở ở kích thước trung bình
Nhưng với những ứng dụng dùng màn hình lớn như trình duyệt hay IDE thì đây là một giả định kỳ quặc
Bây giờ cách để các cửa sổ chồng lên nhau rồi chuyển bằng một cú nhấp còn hiệu quả hơn
Nhưng UI mới lãng phí không gian nghiêm trọng, và việc kéo góc để đổi kích thước rất khó chịu
Các tab dạng viên thuốc (pill tabs) là thứ gây khó chịu nhất
Đó là một thiết kế kỳ quặc, vừa gây rối mắt vừa truyền tải thông tin kém