Tương lai là Niri
(ersei.net)- Một người dùng lâu năm của Sway và i3 đã chuyển từ trình quản lý cửa sổ tiling truyền thống sang Niri sau khi gặp lỗi click-kéo của Sway
- Niri xử lý workspace như một dải vô hạn có thể cuộn ngang, nên ngay cả khi mở cửa sổ mới, bố cục các cửa sổ hiện có cũng không bị xáo trộn nhiều
- Chỉ sau vài giờ chuyển đổi, tác giả đã tạo được cấu hình đủ dùng, và trong vòng một tuần đã thấy phù hợp hơn Sway; các ưu điểm được nêu gồm chia sẻ màn hình theo từng cửa sổ, loại trừ khỏi chia sẻ màn hình, công cụ chụp màn hình tích hợp, và thời lượng pin tăng khoảng 2 giờ
- Trình quản lý cửa sổ tiling truyền thống tạo ra gánh nặng nhận thức trong việc sắp xếp lại cửa sổ và quản lý workspace; số workspace từng dùng từ 11 trở lên trên Sway đã giảm xuống còn 5 hoặc ít hơn trên Niri
- Xét đến nhiều kích thước màn hình và năng lực xử lý khác nhau, tiling truyền thống không nhất thiết phải là workflow mặc định của power user; người dùng Sway hoặc trình tiling dựa trên Wayland đáng thử Niri
Lý do chuyển từ Sway sang Niri
- Tác giả đã dùng trình quản lý cửa sổ tiling trong khoảng thời gian tương đương 35% cuộc đời mình, gồm 5 năm dùng Sway và 2 năm dùng i3
- Vì dùng Wayland từ khá sớm, tác giả đã quen với tình trạng nhiều thứ bị hỏng, và cũng đã thích nghi lâu dài với workflow của Sway
- Nguyên nhân trực tiếp là vấn đề click-kéo trên Sway: sau khi chọn văn bản rồi kéo, thao tác chọn vẫn tiếp tục ngay cả sau khi thả chuột
- Khi vài ngày kéo dài thành vài tuần mà vấn đề vẫn chưa được giải quyết, ngay cả thao tác click để chọn văn bản cũng trở nên không đáng tin cậy
- Thay vì tìm thư viện gây lỗi hoặc chạy
git bisect, tác giả bỏ lại trí nhớ cơ bắp và workflow lâu năm để thử Niri
Cách Niri hoạt động và ấn tượng ban đầu
- Niri là trình quản lý cửa sổ tiling dạng cuộn, trong đó mỗi workspace hoạt động như một dải rộng vô hạn có thể cuộn sang trái và phải
- Khi mở cửa sổ mới, Niri không thay đổi bố cục của các cửa sổ khác, nên giảm tình trạng Firefox bị đẩy sang vị trí không mong muốn khi mở terminal
- Trong vài giờ, tác giả đã tạo được một cấu hình đủ dùng, và trong vòng một tuần thì thấy nó phù hợp hơn Sway
- Tác giả nói mình đã cảm nhận lại cảm giác của thời thường xuyên đổi distro và trình quản lý cửa sổ, khi liều lĩnh thử các công cụ mới mẻ và có vẻ rủi ro
Những cải thiện cảm nhận được so với Sway
- Niri hỗ trợ chia sẻ màn hình theo từng cửa sổ, đồng thời cung cấp tính năng không cho một cửa sổ cụ thể xuất hiện trong phần chia sẻ màn hình
- Khi stream bài tập, tác giả bớt phải lo các thông báo nhạy cảm như email ngân hàng hiện ở góc màn hình
- Công cụ chụp màn hình tích hợp được đánh giá là hài lòng và tốt hơn tổ hợp grim+slurp được khuyến nghị trên Sway
- So với Sway, thời lượng pin tăng khoảng 2 giờ
- Trải nghiệm phát triển cũng tốt trong quá trình thử thêm chức năng IPC cho Niri
Bất mãn với trình quản lý cửa sổ tiling truyền thống
- Trình quản lý cửa sổ tiling truyền thống thúc ép người dùng tối ưu hóa bố cục cửa sổ tối đa, và trong quá trình đó khiến họ tiêu tốn gánh nặng nhận thức vào mục tiêu sai lầm là giảm thiểu việc sắp xếp lại cửa sổ
- Nếu không phải liên tục chuyển qua lại giữa toàn màn hình và không toàn màn hình, hoặc không rơi vào tình trạng thiếu workspace, thì có thể xem là chưa mở nhiều cửa sổ
- Bố cục dạng tab, dạng stack và các container lồng nhau được đánh giá là giải pháp tạm kém ergonomic hơn để che giấu việc thiếu không gian
- Trên Sway, tác giả thường mở tới 11 workspace, và vì vẫn thiếu nên đã thêm phím tắt cho các workspace từ 11 đến 20
- Có lúc tác giả đóng cửa sổ để tiết kiệm workspace rồi đánh mất mạch làm việc của dự án
- Trên Niri, ngay cả khi mở công việc của 3 dự án lớn, nhiều ứng dụng chat, video YouTube và lượng bài vở của 3 lớp học, số workspace vẫn không vượt quá 5
- Cùng một cấu hình như vậy trên Sway bị đẩy tới workspace số 15, và để tìm tài liệu mong muốn phải qua lại giữa nhiều workspace
Bối cảnh về kích thước màn hình, DPI và ultrawide
- Xét đến nhiều kích thước màn hình khác nhau và năng lực xử lý đã được cải thiện, tác giả cho rằng trình quản lý cửa sổ tiling truyền thống không nhất thiết phải là lựa chọn mặc định cho workflow của power user
- Tiling truyền thống bị đánh giá là giới hạn không gian một cách nhân tạo, buộc nội dung phải được sắp xếp lại, và cũng không phù hợp với các bố cục màn hình không tiêu chuẩn
- Lý do chính chuyển sang Wayland là DPI hỗn hợp
- Khi dùng chung một màn hình 4K và một màn hình FHD có cùng kích thước vật lý, mật độ điểm ảnh của màn hình 4K cao hơn khoảng 4 lần
- Một cửa sổ có chiều rộng pixel cố định có thể trông nhỏ trên 4K và lớn trên FHD
- Để cửa sổ trông có kích thước vật lý tương tự nhau, cần scaling
- Cách triển khai của X11 khi đó không phù hợp, còn Wayland hỗ trợ việc này như một tính năng cốt lõi
- Tác giả nói X11 cũng gặp khó với fractional scaling ở các hệ số không nguyên như 1.6, và Wayland tốt hơn ở điểm này
- Trình quản lý cửa sổ tiling dạng cuộn được cho là rất hợp với màn hình ultrawide
- Sway khiến cửa sổ mới lấp đầy toàn bộ màn hình ultrawide, còn mô hình của Niri tiling tự nhiên hơn và tận dụng không gian tốt hơn
- Tác giả khuyên người dùng trình quản lý cửa sổ tiling truyền thống dựa trên Wayland như Sway nên thử Niri ngay
- Nếu muốn trải nghiệm key binding tương tự Sway, có thể tham khảo cấu hình Niri được công khai
1 bình luận
Các ý kiến trên Hacker News
Dùng Gnome và hầu như mọi cửa sổ đều mở toàn màn hình. Thỉnh thoảng cũng dùng win+left/right để tạo cửa sổ nửa màn hình; như vậy có bị coi là người nguyên thủy không?
Trong 20 năm qua, tôi đã thấy cả chục trình quản lý cửa sổ dạng tiling từng được gọi là “tương lai” xuất hiện rồi biến mất. Thực tế là những tính năng giúp tăng năng suất đáng kể đã được đưa vào các trình quản lý cửa sổ chính từ lâu, và các trình quản lý cửa sổ thuần tiling nhiều khả năng vẫn sẽ là sản phẩm ngách trong tương lai
Rốt cuộc, để dùng cho ra trò thì phải bỏ khá nhiều thời gian và công sức, trong khi mức tăng năng suất nhận được trên thực tế chỉ mang tính tiệm tiến, đổi lại còn phải chấp nhận cả những góc cạnh thô ráp đặc trưng của loại sản phẩm ngách này
Chỉ nhỉnh hơn Gnome một chút, nhưng ngay từ đầu khả năng cửa sổ nằm đúng chỗ cao hơn, và nói thật là có mấy khi cần xếp chồng cửa sổ lên nhau theo trục z đâu
Ban đầu tôi nghĩ một canvas 2D vô hạn, nơi có thể gán phím cho vị trí và mức zoom như camera trong game chiến thuật thời gian thực, sẽ là trình quản lý cửa sổ tốt hơn. Nhưng sau khi dùng thử Niri, tôi tin rằng ý tưởng của mình quá phức tạp, còn Niri thì chạm đúng điểm cân bằng giữa chức năng và khả năng sử dụng
Cảm giác như công nghệ do người ngoài hành tinh tương lai tặng vậy
Tôi dùng laptop, một màn hình 24 inch ngang ở giữa và một màn hình 24 inch dọc; Spotify/Teams/shell/Outlook thì chia nửa theo chiều dọc, tài liệu ở màn hình laptop, IDE toàn màn hình trên màn hình chính. Tôi cũng chia desktop ảo cho thiết kế/nghiên cứu, phát triển và việc cá nhân
Giữ kích thước màn hình tiêu chuẩn thay vì 4K hay ultrawide cũng khiến việc chia sẻ màn hình đơn giản hơn nhiều
Một phàn nàn nhỏ là thiết kế UI ngày nay nhét padding 10px khắp nơi, nên hầu hết ứng dụng và trang web gần như phải toàn màn hình mới làm được việc gì đó
Nhưng phần lớn nhu cầu tiling của tôi nằm trong terminal, và tmux làm vai anh hùng ở đó
https://extensions.gnome.org/extension/4548/tactile/
Tôi là người chuyển từ i3 sang, nhưng nếu không muốn một extension tiling hoàn chỉnh mà chỉ muốn chút tiện lợi của tiling, thì Tactile là một giải pháp rất đơn giản và tôi thấy hữu ích
Nếu chuyển từ một trình quản lý cửa sổ tiling truyền thống sang, tôi muốn biết quy trình dùng phím tắt sẽ như thế nào
Điều quan trọng nhất với tôi là phím tắt cố định để nhảy tới một cửa sổ, workspace, thực chất là một chương trình cụ thể, kiểu Super+[0-9]. Nếu làm được như vậy và còn giải quyết được vấn đề “quản lý workspace” mà bài viết nói tới, có lẽ tôi sẽ chuyển ngay
Trong Niri, dùng “workspace” theo kiểu này có hợp lý không? Ví dụ có một workspace cho trình duyệt, một cho editor, một cho nhiều cửa sổ terminal, rồi muốn chuyển tức thì từ “trình duyệt” sang “các terminal”. Tôi không muốn có hiệu ứng animation
Ví dụ trình quản lý mật khẩu có thể nằm cùng workspace với trình duyệt, thường thì ở ngoài màn hình. Khi cần tạo mật khẩu, nó ở ngay bên cạnh. Các terminal phụ cần cạnh trình soạn thảo văn bản cũng để theo cách đó
Tuy vậy, tôi cảm thấy trí nhớ cơ bắp khi làm việc trong các ràng buộc của tiling truyền thống vẫn còn khá nhiều. Ví dụ trên màn hình của tôi, nếu mở quá 3 terminal thì phải sang workspace mới
Vì thế dù thực ra không cần, tôi vẫn hay chuyển sang workspace mới và hơi lẫn lộn không biết cái gì ở đâu. Đôi khi tôi nghĩ có lẽ cắt đứt rõ ràng hơn với cách làm việc cũ lại dễ hơn
Dù vậy, tôi rất thích kiểu tiling giống Niri. Theo tôi, nó gần như loại bỏ hầu hết nhược điểm của trình quản lý cửa sổ tiling
Nhìn chung tôi thích i3 hơn Gnome rất nhiều, nhưng nỗi đau “mọi thứ đều bị resize” là rất thật. Đặc biệt tệ hơn khi có nhiều cuộc gọi Zoom, vì “thông báo” của Zoom dường như đi vòng qua thông báo tích hợp của hệ thống và xử lý từng cái như một cửa sổ riêng, khiến vấn đề bị khuếch đại
Tôi sẽ phải thử Niri xem sao
Với tôi thì nó không hợp. Có một dải các cửa sổ kéo dài qua ranh giới màn hình, và thỉnh thoảng chỉ thấy một nửa cửa sổ; cảnh đó gây một cảm giác bất an kỳ lạ nên cứ hút mắt tôi mãi
Sau khoảng hai tháng dùng, tôi quay lại Hyprland, một compositor tiling truyền thống hơn, nơi cửa sổ không chồng lên ranh giới màn hình
Tuy nhiên về mặt kỹ thuật thì Niri rất đẹp. Codebase Rust hiện đại, cấu trúc mã tốt, cũng dễ hiểu và bắt đầu chỉnh sửa
Trên laptop, tùy tác vụ tôi dùng toàn chiều rộng hoặc 1/2 chiều rộng; trên ultrawide thì dùng 1/3 chiều rộng, hoặc toàn chiều rộng cho editor có chia cột bên trong
Tôi thích ý tưởng về trình quản lý cửa sổ dạng tiling nên đã dùng i3 và Hyprland khá lâu, nhưng lạ là không bao giờ thật sự gắn bó hẳn được và cuối cùng lại quay về Xfce. Thói quen cũ khó bỏ
Thời điểm thử nghiệm kết thúc thường là khi số lượng cửa sổ vượt quá một mức nào đó. Nếu chưa cấu hình đủ sâu workspace, layout, v.v. thì từ lúc đó việc quản lý trở nên khó hơn
Tôi vừa bật Niri lên thử, và chỉ sau 10 phút đã thấy thoải mái hơn hẳn so với các trình quản lý cửa sổ tiling khác. Nó trực quan ngay lập tức, và tích hợp chuột cũng rất tốt
Còn quá sớm để tuyên bố chiến thắng, nhưng trông nó đúng là thứ tôi đã muốn và cần suốt nhiều năm. Tôi sẽ đánh giá nó tốt đến đâu bằng khoảng thời gian cho tới khi tôi bắt đầu muốn quay lại Xfce
Với tôi, cấu hình tối ưu nhất là một trình quản lý cửa sổ nổi/môi trường desktop bình thường, nhàm chán, không chạy theo mốt, kèm tiling nhẹ mang tính tùy chọn
Đọc thấy thú vị. Ai cũng có một điểm giới hạn
Tôi thích đoạn “tất nhiên là thay vì tìm xem thư viện nào đã tạo thay đổi phá vỡ và chạy git bisect suốt 4 tiếng, tôi quyết định ném gần 10 năm muscle memory và các cải tiến quy trình làm việc ra ngoài cửa sổ”
Tôi cũng là người dùng i3/Sway lâu năm, và Niri khá dễ chịu. Tôi có thể mang theo phần lớn muscle memory từ Sway như chuyển focus hay di chuyển cửa sổ. Độ ổn định cũng rất tốt và hoạt động ngay với xwayland-satellite
Vấn đề lớn nhất là tôi cứ liên tục “làm mất” cửa sổ. Tôi mở một cửa sổ trong một stack lồng sâu, rồi đi làm việc khác và quên mất rằng mình đã mở cửa sổ đó
Trong Sway chuyện này cũng xảy ra ở mức nào đó, nhưng việc quét qua tất cả workspace dễ hơn nhiều
Ước gì có thứ gì đó như “bản đồ cửa sổ” gắn với Alt-Tab
Nhân tiện, tôi đang mô phỏng tính năng run-or-raise bằng một tổ hợp quái dị tự chế từ niri IPC / bash / jq, và có lẽ nó hoạt động còn tốt hơn RoR gốc. Nó xoay vòng qua các cửa sổ khớp với một appId cụ thể, và nếu không có thì khởi chạy mới
Gắn thêm rofi (wayland) để fuzzy search và chuyển tới mọi cửa sổ đang mở thì cảm giác dùng cải thiện rõ rệt
Tôi thuộc nhóm trẻ dùng Hyprland, nhưng cũng đã thử Niri một chút và nó hoạt động khá tốt. Với người chuyển từ workflow Windows một màn hình điển hình sang, đặc biệt là cho phần lớn công việc văn phòng, nó rất hợp
Dù vậy tôi vẫn nghĩ cấu hình tiling phức tạp hơn có trần năng suất cao hơn. Nếu là người mở hơn 10 workspace như tác giả bài viết này thì có lẽ nên chọn Niri
Tôi tò mò liệu thời lượng pin tăng có còn giữ được với người chỉ mở vài cửa sổ hay không. Chỉ đổi trình quản lý cửa sổ mà thêm được 2 giờ là khác biệt rất lớn
Đây là một trong những lý do chính khiến tôi khó chuyển hẳn. Tôi cũng không dùng môi trường desktop, và không dùng tính năng nào khiến compositor thật sự hữu ích, nên từ góc nhìn của tôi gần như chẳng thấy lợi ích gì
Thỉnh thoảng thứ đáng chú ý là viền đen xuất hiện do bóng đổ của dropdown trong các chương trình gtk4 không tuân theo theme hệ thống tôi đã đặt
Tôi chưa dùng Niri nhưng có quan tâm
Gần đây tôi đã nếm trải khá tốt trải nghiệm trình quản lý cửa sổ có thể cuộn trên GNOME với extension PaperWM: https://github.com/paperwm/PaperWM
Tuy nhiên vì nó không được xây dựng bên trong môi trường Gnome nên hơi thiệt. Một số thứ Gnome cung cấp “miễn phí” thì Niri thiếu, và ngay cả vài chức năng khá cơ bản bạn cũng phải tự tìm công cụ thay thế
Những thứ có vẻ bị thiếu gồm thông báo desktop, trình khởi chạy ứng dụng, dock hoặc danh sách ứng dụng đang chạy, và Xwayland để chạy mượt các ứng dụng X11. Tất cả các chức năng này phải do công cụ riêng, không nằm trong Niri, cung cấp
Phàn nàn lớn nhất là không có đồng bộ clipboard giữa X11 và Wayland. Gnome có vẻ tự xử lý việc này, nhưng trên Niri thì không, nên việc không thể copy/paste giữa app Wayland và app X11 rất khó chịu
Có các cách обход, nhưng trong những thứ tôi đã thử đến giờ, chưa có cách nào đủ tiện và ổn định
Trình quản lý cửa sổ có thể cuộn thật sự rất tuyệt. Bạn có thể đạt khoảng 80% năng suất của trình quản lý cửa sổ tiling với 20% công sức
Thật thú vị là phải mất tới 30–40 năm mới nghĩ ra được điều này
Tôi cũng là kiểu người để số tab trình duyệt mở tăng vô hạn rồi cuối cùng phải bookmark hàng trăm tab và đóng tất cả, nên toàn bộ paradigm này thật sự có vẻ không hợp với tôi
Đó là một đoạn Python viết qua loa cho phép yank cửa sổ vào/ra khỏi stack theo tên, và dọn cửa sổ cũ nhất khỏi stack. Về thực chất là một LRU cache cho cửa sổ
Nó “chạy được”, nhưng nếu hồi còn sinh viên có PaperWM thì chắc tôi đã rất thích
Cũng có những việc chỉ trình quản lý cửa sổ nổi mới làm tốt. Tôi thích thói quen xấu là ghim vài tài liệu ở dạng floating, đặt chúng ở nhiều chỗ trên màn hình và tham chiếu chéo mà không phải di chuyển nhiều
Nếu muốn tìm hiểu thêm về những gì đang diễn ra trên desktop Linux, tôi có thể khuyên bất kỳ ai cũng nên thử dùng ít nhất một trình quản lý cửa sổ phi tiêu chuẩn
Tôi đã học được về Linux từ việc mày mò với các trình quản lý cửa sổ dạng tiling nhiều hơn bất kỳ loại phần mềm nào khác
Không biết năng suất của tôi có thực sự tăng lên hay không, nhưng đó là một trải nghiệm học tập tuyệt vời, tính công thái học cũng tốt, và cảm giác thỏa mãn khi tự xây dựng môi trường desktop của mình từ đầu là rất lớn