macOS cần lấy lại lưới
(blog.hopefullyuseful.com)- Spaces của macOS thời Leopard cho phép dùng lưới 3x3 tùy chỉnh để xử lý desktop ảo như những màn hình thật, giúp chuyển qua lại giữa trình duyệt, trình soạn thảo, Xcode và trình mô phỏng bằng trí nhớ không gian
- Mission Control trên macOS Lion đã giới hạn desktop ảo thành một hàng ngang, buộc người dùng phải trượt bằng bàn phím qua từng màn hình hoặc nhớ số phím tắt của từng desktop, từ đó phá vỡ trí nhớ không gian
- Total Spaces gây chậm máy, về sau còn phụ thuộc vào việc sửa Dock hệ thống và vượt qua SIP, còn các trình quản lý cửa sổ như Yabai/Aerospace thì không phù hợp với ứng dụng toàn màn hình và cách làm việc ưu tiên không gian riêng cho từng tác vụ
- GridLion là lời giải xuất hiện sau khi thấy InstantSpaceSwitcher chuyển space không cần hoạt ảnh; thay vì dùng API Mission Control bị khóa, nó mô hình hóa các space native một hàng thành dạng lưới
- LLM đã giúp tạo ra nguyên mẫu chạy được chỉ trong một ngày, nhưng cảm giác của UI vẫn cần vòng lặp phản hồi từ con người; với các giới hạn API còn lại của GridLion, Spaces dựa trên lưới một lần nữa nên là tính năng của hệ điều hành
Trí nhớ không gian mà Leopard Spaces tạo ra
- Spaces trên macOS 10.5 Leopard đã đưa desktop ảo lên macOS và cho phép người dùng sắp xếp các không gian theo bất kỳ lưới nào họ muốn
- Lưới 3x3 được dùng như 9 màn hình, với trình duyệt web ở giữa, trình biên tập web ở phía trên, Xcode ở góc trên bên trái và trình mô phỏng iOS ở ngay bên dưới
- Cách di chuyển đến một vị trí cụ thể bằng một lần nhấn phím tạo ra trí nhớ cơ bắp và trí nhớ không gian giống như đang nhìn các màn hình vật lý riêng biệt
- Lưới 16 màn hình sequencer của EasyBeats Drum Machine cũng chịu ảnh hưởng trực tiếp từ cách Apple bố trí Spaces
Lưới biến mất từ sau Lion
- macOS Lion giới thiệu Mission Control và giới hạn desktop ảo thành một hàng ngang
- Với một hàng ngang, để đi tới một màn hình cụ thể bằng bàn phím, người dùng phải tiếp tục di chuyển theo chiều ngang; ngay cả khi dùng phím tắt trực tiếp, vẫn phải nhớ trình duyệt nằm ở desktop số 7 hay số 8
- Thay đổi này khiến việc duy trì cách ghi nhớ desktop theo vị trí không gian trở nên khó khăn
- Có các lựa chọn thay thế như Total Spaces, nhưng chúng gây chậm máy, phụ thuộc vào việc sửa Dock hệ thống và về sau còn cần vượt qua SIP
Không gian theo tác vụ hơn là trình quản lý cửa sổ
- Các trình quản lý cửa sổ như Yabai và Aerospace không phải là lời giải phù hợp cho mọi người dùng
- Cách sắp xếp cửa sổ trên desktop giống với việc di chuyển giấy tờ trên mặt bàn hơn, trong khi điều cần thiết lại gần với những bàn làm việc riêng nơi mọi thứ vẫn được giữ nguyên
- Ứng dụng toàn màn hình và chế độ chia đôi của macOS cấp một vùng riêng cho từng tác vụ, nên phù hợp hơn với cách điều hướng space dựa trên lưới
Cách GridLion được triển khai
- InstantSpaceSwitcher loại bỏ hoạt ảnh chuyển space của macOS mà không cần sửa hệ thống, và sau khi thấy việc chuyển đổi không có hoạt ảnh, đã xuất hiện khả năng giải quyết bài toán điều hướng lưới
- macOS khóa phần lớn API của Mission Control, nên không thể thêm hoặc sắp xếp lại desktop bằng API được tài liệu hóa
- GridLion đặt một lớp bao mỏng lên trên space native và chọn cách biểu diễn hàng space đơn của macOS như một lưới trong mô hình nội bộ
- Với sự hỗ trợ của LLM, một nguyên mẫu thô nhưng chạy được đã được tạo ra chỉ trong một ngày, và sau vài ngày sử dụng thì nhu cầu về một công cụ hoàn thiện hơn trở nên rõ ràng
- Khoảng một tháng sau, công cụ đã đạt đến mức độ đủ hài lòng, và tên ứng dụng được ghép từ vấn đề xuất hiện trong macOS Lion với khái niệm lưới: GridLion
Rào cản về quyền và phân phối
- Để bắt phím tắt bàn phím toàn cục và điều hướng giữa các space, ứng dụng cần quyền
Accessibilitytrên macOS - Quy trình cấp quyền trên macOS không kết thúc ngay sau khi chấp thuận như iOS; nó buộc phải mở phần cài đặt, để người dùng tự tìm đúng công tắc và bật nó lên rồi chấp nhận thêm lời nhắc bảo mật
- Để tạo các bản xem trước nhỏ của space, còn cần quyền
Screen and System Audio Recording; do có snapshot xem trước của các cửa sổ không nhìn thấy và của màn hình, hộp thoại cảnh báo cũng nghiêm trọng hơn - GridLion vẫn hoạt động mà không cần các quyền đó, nhưng tính năng xem trước thì cần quyền
- Để tạo lòng tin, ứng dụng phải không đụng đến mạng ngoài việc kiểm tra cập nhật khi người dùng yêu cầu và xác thực khóa giấy phép
- GridLion gọi API riêng tư để lấy thông tin space nên không thể đưa lên App Store
- Để bán ngoài App Store, cần một Merchant of Record xử lý việc mua hàng, thuế và hoàn tiền; các lựa chọn gồm Paddle, GumRoad và Lemon Squeezy
- Lemon Squeezy cung cấp License code API, cho phép cấp khóa giấy phép cho người mua cùng các phương thức kích hoạt, hủy kích hoạt và xác thực
- Để được Lemon Squeezy phê duyệt, cần chứng minh rằng đây là một sản phẩm có giá trị và mục đích sử dụng thực tế; điều đó đòi hỏi screencast và bằng chứng về tài khoản mạng xã hội
- Ngay cả trước khi được phê duyệt, vẫn có thể dùng tài khoản thử nghiệm để dễ dàng thiết lập và kiểm thử tích hợp với ứng dụng
LLM và những giới hạn còn lại
- LLM đặc biệt hữu ích với các công việc có mục tiêu rõ ràng như kết quả API cụ thể hoặc truy vấn trên tập dữ liệu lớn, nơi việc xem kết quả và lặp lại rất dễ thực hiện
- Giao diện người dùng phụ thuộc nhiều vào cảm giác, nên với các tính năng người dùng trực tiếp nhìn thấy, con người phải nằm trong vòng lặp phản hồi
- Trong bối cảnh gần 10 năm không làm việc native trên Mac/iOS, LLM đã rất hữu ích, nhưng vẫn còn câu hỏi liệu nếu làm cùng ứng dụng theo cách cũ thì có mất thời gian tương tự và học được nhiều hơn hay không
- GridLion nhắm đến việc điều hướng và sắp xếp lại lưới space, hoạt động nhanh và ổn định, cùng khả năng đặt kích thước lưới và phím tắt theo từng màn hình
- Không có API đáng tin cậy để chuyển space từ màn hình này sang màn hình khác hoặc chuyển cửa sổ từ space này sang space khác
- GridLion hoạt động cùng Mission Control, nên các tác vụ đó có thể xử lý qua Mission Control
- Tính năng để một ứng dụng cụ thể luôn xuất hiện ở một vị trí lưới nhất định khi chạy vốn từng có trong macOS Spaces gốc, nhưng vẫn là việc còn lại cho GridLion
- Lý tưởng nhất là Spaces dựa trên lưới sẽ quay trở lại như một tính năng native của hệ điều hành trong phiên bản macOS tiếp theo
1 bình luận
Ý kiến trên Hacker News
Cách làm hiện tại của Apple có vẻ như là, để ngăn vấn đề “người mới đằng nào cũng bấm cho phép”, họ lại ném người dùng vào một cuộc phiêu lưu quản trị hệ thống mini 4~5 bước mỗi lần
Bạn phải tìm một công tắc nhỏ trong phần cài đặt để bật lên rồi lại vượt qua lời nhắc bảo mật, mà việc ngay cả người dùng thành thạo cũng không có cách tắt hẳn chuyện này khiến nó giống như sự thiếu tôn trọng với người dùng
Việc bà hay một đứa trẻ 10 tuổi bấm “cho phép truy cập toàn bộ hệ thống tệp và keylogging” cho một tệp thực thi đáng ngờ là bài toán Apple phải giải, nhưng với người dùng không phải kiểu “không biết gì” thì cần có cách để tắt lớp bảo vệ này
Dù không hoàn hảo, cách tiếp cận của Apple khá ổn, và nếu phải đi qua quy trình này thường xuyên thì bản thân điều đó cũng không phải tín hiệu tốt về mặt bảo mật
Ngược lại, các website thường xuyên hỏi cho phép thông báo dù gần như chẳng ai muốn. Gần đây khi xem lại cài đặt tôi khá bất ngờ vì có nhiều trường hợp được cho phép do bấm nhầm hơn tưởng tượng, chắc cỡ khoảng 5% là nhấn nhầm
Quyền này được dùng để tạo keylogger. Chỉ vậy thôi. Đây là quyền cho phép viết keylogger, nên không thể chỉ kết thúc bằng một cú nhấp chuột; nó đủ nguy hiểm để biện minh cho các bước bổ sung
spctl --master-disablemột lần và vào menu cài đặt một lần là xong. Tôi không hiểu vì sao TCC lại không thể hoạt động như vậyVới mục đích xem trước, Apple có thể cung cấp API cho các tác vụ phổ biến. Hệ điều hành có thể cung cấp hình ảnh, rồi lấy mẫu ở tần suất làm mới khiến nó khó bị dùng cho ghi hình tùy ý
Các tổ hợp phím có thể được xử lý bằng cách tái sử dụng phím emoji hiện không thể gán bên ngoài, theo kiểu chỉ cho phép thu sau một “chuỗi ma thuật” nhất định. Hệ điều hành quản lý lệnh tập trung, và chương trình chỉ nhận lệnh thay vì tổ hợp phím cụ thể, nhờ đó việc điều phối xung đột cũng được tập trung hóa. Hiện tại phần này trên macOS khá đau đầu
Dù không giải quyết được mọi thứ, ít nhất nó giải quyết được một phần. Chắc hẳn vẫn còn cách tốt hơn. Apple có thừa lập trình viên giỏi, nên đội ngũ sản phẩm cần để họ giải quyết vấn đề mà rõ ràng người dùng chuyên sâu đang khó chịu
Trước MacOS 10.11, Mission Control rất tốt. Vuốt lên bằng bốn ngón sẽ hiển thị bản xem trước của mọi Spaces, nhưng ở 10.11 thì nó bị làm hỏng vô cớ, thanh trên cùng chỉ hiện các tên như “Desktop 1”, “Desktop 2”, và phải rê chuột lên mới thấy bản xem trước
Hiệu ứng thực tế là việc dùng Spaces trở nên mất phương hướng và đòi hỏi phải ghi nhớ
Một số phần mềm bên thứ ba giả vờ khôi phục lại điều này, nhưng chúng làm bằng cách di chuyển chuột để giả lập hover nên có độ trễ và không tích hợp đúng với hoạt ảnh. Cũng từng có bản vá hoạt động bằng cách tắt SIP và chèn mã (https://github.com/briankendall/forceFullDesktopBar), nhưng cuối cùng cũng ngừng được bảo trì
Mười năm đã trôi qua, giờ tôi còn không chắc trong Apple có ai nhớ rằng giao diện này từng rất tốt hay không
Nhưng tôi hoàn toàn không hiểu vì sao desktop và toàn màn hình lại cần hai kiểu xem trước khác nhau
Phần khó chịu nhất của UX này là Spaces tự sắp xếp lại mà chẳng có lý do rõ ràng. Tôi thường mở vài cửa sổ IDE nên cứ phải kiểm tra xem cửa sổ có bị chuyển chỗ không, rất mệt
Hệ điều hành nói chung cần một khái niệm như project hoặc task. Khái niệm này phải xuyên suốt nhiều ứng dụng và được tích hợp sâu với quản lý cửa sổ cùng Spaces
Đa nhiệm và chuyển ngữ cảnh đã tăng lên trong nhiều năm, tin nhắn tức thời lại kéo nó lên thêm, và quy trình làm việc dựa trên agent sẽ còn đẩy mạnh xu hướng đó. Vì cùng một ứng dụng được dùng cho nhiều công việc khác nhau, đây không phải mối quan tâm ở cấp ứng dụng mà phải là thứ hệ điều hành hỗ trợ
IDE phần nào giúp được vì có các khái niệm nguyên thủy như workspace hoặc project và có thể khôi phục ngữ cảnh mã nguồn lẫn terminal. Nhưng các trang web, agent ngoài IDE, cuộc chat liên quan với đồng nghiệp, ứng dụng quản lý dự án và những thứ được kết nối với nhau vẫn luôn bị tách rời
Đây rõ ràng không phải mối quan tâm ở cấp ứng dụng mà là mối quan tâm ở cấp hệ điều hành. Một số thử nghiệm về cách tổ chức cửa sổ thay thế trên iPad có vẻ có tiềm năng, nhưng cá nhân tôi thấy chúng chưa đủ mạnh hoặc chưa đủ trực quan
Tôi không hiểu vì sao nhiều power user hơn lại không xem cấu hình này là lý tưởng. Hy vọng Zen Browser sẽ trở thành một phương án thay thế vững chắc
¹https://blogs.kde.org/2026/01/17/streamline-plasma-with-acti...
Tôi cũng thích việc workspace có không gian vô hạn, nên không cần nghĩ đến chuyện tạo workspace mới chỉ vì workspace hiện tại trở nên chật chội
Không thể chứng minh được, nhưng tôi nghĩ có lẽ chính mình đã truyền cảm hứng hoặc là nguyên nhân khiến Apple trong Leopard đã “khó hiểu một cách không thể giải thích nổi khi chỉ giới hạn Spaces thành một hàng ngang duy nhất”
Năm 2009 tôi đã làm một video ý tưởng về trình quản lý cửa sổ tuyến tính có tích hợp điều hướng bằng cử chỉ; giờ thì gần như bị lãng quên, nhưng khi đó được truyền thông công nghệ nhắc đến khá nhiều và đã ảnh hưởng tới một vài bản proof-of-concept vào đầu những năm 2010
Quản lý cửa sổ tuyến tính không phải gu của tất cả mọi người, nhưng tôi vẫn thấy đó là một ý tưởng còn giá trị. Nhìn vào lần phát hành này và phản ứng của mọi người, tôi thấy được tiếp thêm động lực, và thực ra hiện đang làm một thứ gì đó trong đúng lĩnh vực này
Hôm nay tôi đã mất một tiếng để cố làm cho nó hoạt động đúng như mong đợi nhưng vẫn còn điểm kỳ lạ. Ngay cả khi tắt tự động sắp xếp lại theo mức sử dụng, thứ tự trong phần xem trước khi vuốt ba ngón vẫn khác với thứ tự cửa sổ thực tế. Thứ tự hiển thị thì đúng như dự đoán nhưng thứ tự vuốt lại không mang tính tuyến tính
https://github.com/mogenson/PaperWM.spoon
Tôi thật sự ghét thiết kế đó và những gì nó đã làm với Gnome. Lưới tốt hơn nhiều
Quản lý cửa sổ của macOS đang ngăn tôi chuyển sang Mac. Tôi cũng đã thử các giải pháp kiểu Aerospace rồi, nhưng vẫn không tái tạo được trải nghiệm nhanh và không bị cản trở như trên i3wm
Đáng tiếc là trình quản lý cửa sổ của macOS giống với thông báo trên iOS. Theo thời gian bạn sẽ quen với một mớ hỗn độn làm giảm năng suất, nhưng lại bỏ lỡ những giải pháp tốt hơn. Và có lẽ vì mọi lập trình viên macOS đều dùng Mac nên họ khó có cơ hội nhìn thấy hoặc hiểu những cách tiếp cận khác tốt hơn
Tôi bị sốc vì mọi thứ quanh tính năng này được làm ra ngu ngốc đến mức nào. Những việc vài năm trước còn làm được giờ lại không thể nữa. Ví dụ như chuyển desktop hay workspace bằng bàn phím, và những thứ như lưới
Với ứng dụng “AltTab” thì ít nhất còn chuyển app được mà không cần chuột, và có thể dùng raycast để bố trí cửa sổ, nhưng việc chuyển đổi và sắp xếp trên macOS chậm hơn nhiều so với trình quản lý cửa sổ lát gạch là một nỗi khổ
Tôi tin rằng mối đe dọa lớn nhất đối với UI tốt là quá nhiều nhà thiết kế UI chuyên nghiệp. Một nửa số nhà thiết kế UI nằm dưới mức trung vị, và những người này đã chọn thiết kế UI làm nghề
Năm nào cũng vậy, chỉ bảo vệ hiện trạng thì không thể phát triển sự nghiệp, nên họ phải thiết kế cái gì đó mới. Dù cái cũ có hoạt động tốt hay không, họ vẫn sẽ làm mới. Nhưng vì một nửa nhà thiết kế UI nằm dưới mức trung vị, nên cũng có 50% khả năng thiết kế UI mới là một bước lùi
Và rồi chúng ta có cảnh họ đứng trên sân khấu sự kiện của Apple mà thao thao bất tuyệt về Liquid Glass. Điều đáng buồn là nhiều nhà thiết kế dường như chỉ tập trung vào thị giác và hầu như không hiểu tính khả dụng. Ví dụ, trong số các nhà thiết kế mới vào nghề, có bao nhiêu người biết đến định luật Fitts? Có bao nhiêu nhà thiết kế đã phản đối những vấn đề khả dụng quá rõ ràng của Liquid Glass? Thành thật mà nói, trừ vài ngoại lệ hiếm hoi, chính các nhà thiết kế là vấn đề
Những thứ như mục đích của sản phẩm, mục đích của mảnh UI này, yếu tố con người, thiết kế tương tác, trải nghiệm người dùng vượt ra ngoài yếu tố thẩm mỹ đều thuộc về đó
Ai cũng nói rất nhiều rằng mình quan tâm đến từng thứ ấy, nhưng trên thực tế thì không cân nhắc bao nhiêu, vì đó không phải các yếu tố giúp thắng trong portfolio đi phỏng vấn hay trong tài liệu báo cáo cho lãnh đạo. Kết quả là hệ thống trở thành một cơ chế lọc bỏ mạnh những yếu tố đó
Hơi lạc đề một chút, nhưng Aqua UI ngày xưa trông đẹp hơn nhiều. Không chỉ dễ phân biệt cái gì là điều khiển và cái gì là văn bản hơn, mà về mặt thị giác cũng đẹp hơn
Có những nút trông đúng là nút cho từng hành động khả dụng, và chỉ cần nhìn thanh công cụ là thường có thể nắm được toàn bộ các hành động có thể làm. Bạn không cần đoán xem một phần nội dung nào đó có bấm được hay chỉnh sửa được hay không
Ngày nay mọi thứ đều bị nhồi quá nhiều khoảng trắng. UI Control Panel hiện đại của Windows thường có cảm giác như một bức tường chữ nhiều cột với rất nhiều khoảng trống và vài cái công tắc rải rác. Để chứa được số lượng tùy chọn tương đương như UI cũ, họ phải giấu bớt vài công tắc vì “giờ chẳng ai cần nữa” hoặc thêm các bước điều hướng trung gian. Kết quả là Control Panel mới có cảm giác phình to và kém hữu dụng hơn
Đây là kiểu bực mình xảy ra hàng chục lần mỗi ngày và thứ này giải quyết được nó
Có lưới thì tốt, nhưng còn tốt hơn nữa là chuyển màn hình ảo tức thì
Trong số vô vàn "sự bất tiện nhỏ giết người" của macOS hiện đại, gần như không có gì tệ bằng việc phải nhấn Ctrl→→→→→→→ và tiếp tục chịu đựng cùng một hoạt ảnh lặp đi lặp lại
Tôi không dám chắc lý do, nhưng có cảm giác như các nhà thiết kế thị giác còn non tay, nghĩ rằng chúng ta muốn xem những hoạt ảnh hào nhoáng đó không chỉ trong buổi demo hay một lần trong hướng dẫn, mà là cả ngày, suốt hàng chục năm
Hoàn toàn không phải vậy. Một lần là quá đủ rồi. Tôi không muốn hoạt ảnh. Và cách triển khai "Giảm chuyển động" thì đúng là mang tính xúc phạm. Độ trễ vẫn y nguyên, chỉ bị đổi thành kiểu crossfade mờ mờ mà thôi
Tôi không hiểu nổi làm sao một công ty có nguồn lực vô hạn và đội ngũ thiết kế tài năng lại có thể làm ra thứ như thế
Tôi dùng Instant Space Switcher như một giải pháp nhắm riêng vào vấn đề này, và nó thay đổi cuộc sống theo đúng nghĩa đen
Ctrl-UpArrowrồi bấm vào Space mình muốn. Không phải tức thì, nhưng nếu có nhiều desktop thì có thể vẫn tốt hơn là lướt từng cái mộtTôi cũng cho rằng việc tắt “Automatically rearrange Spaces based on most recent use” là bắt buộc
Cá nhân tôi chỉ mở một ứng dụng cho mỗi desktop và chỉ dùng Command-Tab. Nếu tiếp tục giữ Command sau khi nhấn Command-Tab, bạn có thể chọn ứng dụng mà không cần phải lướt qua toàn bộ
defaults write com.apple.dock expose-animation-duration -float 0.05; killall DockCâu nói "trải nghiệm desktop Mac của 20 năm trước tốt hơn bây giờ" nghĩa là 20 năm trước là năm 2006. Tôi vẫn đang dùng trải nghiệm desktop y như 20 năm trước
Tôi dùng Fvwm2, và desktop ảo dạng lưới mà tác giả bài viết này nhớ nhung vẫn luôn có trong tính năng desktop ảo của Fvwm2 và cả Fvwm trước đó. Một trong những lý do tôi chuyển sang Fvwm cũng chính là desktop ảo dạng lưới; tôi không nhớ chính xác là khi nào, nhưng chắc vào khoảng giữa đến cuối thập niên 1990
Cấu hình Fvwm2 của tôi đã được tinh chỉnh dần theo năm tháng, nhưng chưa từng có thời điểm nào mà một nhà thiết kế doanh nghiệp quyết định rằng tôi không còn được dùng các tính năng mình vẫn dùng nữa
Phần mềm độc quyền không đặt lợi ích của người dùng lên hàng đầu. Nó chỉ nhìn vào giá cổ phiếu hay doanh thu quý sau mà thôi
Trước khi chuyển sang Plasma và Wayland, tôi đã dùng XFCE gần như 15 năm với cùng một cấu hình và không bị các bản cập nhật làm phiền
Tôi thật sự không thể tin nổi khi Apple bỏ Spaces theo chiều dọc. Vì phải nhảy qua những màn hình không cần thiết, tính năng này trở nên vô dụng với tôi, và cuối cùng tôi ngừng dùng nó. Nó không thực tế