2 điểm bởi GN⁺ 2025-10-04 | 2 bình luận | Chia sẻ qua WhatsApp
  • Niri là một compositor Wayland theo kiểu xếp ô có thể cuộn, sắp xếp các cửa sổ theo chiều ngang một cách vô hạn
  • cấu trúc không làm thay đổi kích thước các cửa sổ hiện có khi mở cửa sổ mới, mỗi màn hình có một dải cửa sổ độc lập
  • Cung cấp các tính năng hiện đại như workspace động, nhóm tab, cử chỉ chuột/touchpad
  • Hỗ trợ nhiều môi trường phù hợp cho sử dụng thực tế như đa màn hình, tích hợp Xwayland, fractional scaling
  • Được xây dựng bằng Rust với độ ổn định cao và tối ưu hiệu năng, nên được nhiều người dùng khuyến nghị cho sử dụng hằng ngày

Tổng quan

  • Niri là một compositor Wayland hỗ trợ quản lý cửa sổ xếp ô dựa trên cuộn, là mã nguồn mở và cung cấp giao diện sắp xếp cửa sổ độc đáo đủ ổn định để dùng hằng ngày
  • Khác với các tiling window manager truyền thống, nó đặt các cửa sổ thành các cột kéo dài vô hạn sang bên phải, và không tự động thay đổi kích thước cửa sổ hiện có dù mở thêm bất kỳ cửa sổ nào
  • Mỗi màn hình có một dải cửa sổ độc lập, và cửa sổ không bị tràn sang màn hình bên cạnh

Tính năng chính

  • Workspace động: giống cách của GNOME, các workspace độc lập cho từng màn hình được tạo và quản lý động theo chiều dọc
  • Khi kết nối/ngắt kết nối màn hình, bố cục workspace vẫn được giữ nguyên, và khi kết nối lại thì chúng quay về đúng màn hình ban đầu
  • Tổng quan workspace/cửa sổ: chế độ Overview cho phép xem nhanh cấu hình cửa sổ và workspace
  • Giao diện chụp ảnh màn hình và quay màn hình tích hợp sẵn, hỗ trợ screencasting/streaming thông qua xdg-desktop-portal-gnome
    • Có thể chặn các cửa sổ nhạy cảm khỏi screencast
    • Hỗ trợ thay đổi động cửa sổ mục tiêu
  • Cung cấp cử chỉ touchpad/chuột, khả năng gom cửa sổ thành nhóm tab, và nhiều thiết lập bố cục khác nhau (lề, viền, kích thước cửa sổ, v.v.)
  • Viền chuyển sắc (Oklab, Oklch), hoạt ảnh (dùng shader tùy chỉnh), live reload tệp cấu hình
  • Tăng cường khả năng truy cập với hỗ trợ trình đọc màn hình

Hướng dẫn cài đặt và sử dụng

  • Ổn định để dùng thực tế, và nhiều người dùng đang sử dụng hằng ngày một cách hài lòng
  • Vì không phải là một môi trường desktop hoàn chỉnh, nên khuyến nghị kết hợp với Waybar (panel) và Fuzzel (launcher)
  • Có thể xem các dự án liên quan, addon và tài liệu tại awesome-niri

Môi trường và khả năng tương thích

  • Thiết kế đa màn hình là trọng tâm, hỗ trợ hoàn chỉnh mixed DPI và fractional scaling
  • Có thể chạy ổn định trên GPU NVIDIA
  • Hỗ trợ floating windows (từ phiên bản 25.01)
  • Hỗ trợ nhiều thiết bị nhập liệu như tablet, touchpad, touchscreen (bao gồm cử chỉ touchpad)
  • Tương thích với các giao thức Wayland chính (layer-shell, gamma-control, screencopy, v.v.)
  • Xwayland (tích hợp với xwayland-satellite từ phiên bản 25.08), đồng thời được tối ưu cho hệ thống nhẹ (đã từng chạy trên cả máy cấu hình thấp như Eee PC 900)

Phát triển và cộng đồng

  • Được triển khai bằng Rust, mang lại độ ổn định, khả năng bảo trì và hiệu năng cao
  • Lấy cảm hứng từ PaperWM (tiện ích mở rộng GNOME Shell), tập trung vào tính độc lập của từng màn hình và tối ưu hiệu năng
  • Cộng đồng hỗ trợ và trao đổi rất sôi nổi trên MatrixDiscord
  • Nhiều tài liệu như phỏng vấn nhà phát triển, bài nói chuyện kỹ thuật và bài viết trên LWN đã giới thiệu dự án trên các kênh truyền thông bên ngoài

Dự án tương tự

  • Có thể so sánh với nhiều dự án hiện thực hóa quy trình làm việc xếp ô cuộn như PaperWM cho GNOME Shell, karousel cho KDE, scroll·papersway dựa trên sway/i3, hyprscrolling·hyprslidr cho Hyprland, hay PaperWM.spoon cho macOS

Đóng góp và thông tin mã nguồn mở

  • Cộng đồng có thể đóng góp ở nhiều lĩnh vực lập trình và phi lập trình, chi tiết xem trong CONTRIBUTING.md
  • Giấy phép là GPL-3.0
  • Mã nguồn chủ yếu được viết bằng Rust (98.9%), với sự tham gia của nhiều cộng tác viên bên ngoài

Tóm tắt

Niri là một compositor cho Wayland kết hợp trải nghiệm người dùng độc đáo của quản lý cửa sổ xếp ô có thể cuộn với nhiều tính năng hiện đại, cùng độ tin cậy, hiệu năng và khả năng truy cập cao nhờ nền tảng Rust. Đặc biệt, nó rất mạnh trong hỗ trợ đa màn hình và nhiều môi trường workflow khác nhau, đồng thời hệ sinh thái mã nguồn mở và cộng đồng cũng đang phát triển rất tích cực.

2 bình luận

 
ndrgrd 2025-10-04

Tôi đã từng dùng thử trước đây, không tệ, nhưng khi mở nhiều cửa sổ thì ý nghĩa của việc cuộn gần như không còn nữa.
Ngay từ đầu đã phải di chuyển quá xa, lại còn không nhớ chúng ở đâu, nên rốt cuộc chỉ còn cách tìm cửa sổ bằng tìm kiếm dựa trên văn bản.

Cách dùng "số nhóm" phổ biến lại phù hợp để phân loại theo một tiêu chí nhất định (thứ hay dùng, hoặc theo mục đích), nên rất dễ nhớ.

 
GN⁺ 2025-10-04
Ý kiến trên Hacker News
  • Nhờ Niri mà ngay cả tôi, người đã dùng xmonad suốt 14 năm, cũng chuyển hẳn sang nó. Trong Niri, số lượng cửa sổ trên desktop là không giới hạn và không cần liên tục thay đổi cấu trúc tile, nên những gì trước đây tôi phải tách ra nhiều desktop theo chủ đề thì giờ có thể quản lý dễ dàng trong một desktop duy nhất. Trước kia tôi tách riêng desktop "editor và terminal" với desktop "trình duyệt", còn giờ chỉ cần di chuyển ngang trong cùng một desktop là có thể sang cửa sổ trình duyệt liên quan nên rất tiện. Rào cản làm quen rất thấp và chỉ với cấu hình mặc định cũng chạy tốt. Đã từng có chút vấn đề hỗ trợ Wayland, đặc biệt với một số ứng dụng như Zoom, nhưng theo thời gian đang dần được giải quyết. Phần cứng của tôi là System76 Bonobo WS 2017, 2x GTX 1080, nhiều màn hình (4k scale 2x + 2 màn 1080p), môi trường PopOS. Tôi chưa gặp những thay đổi gây tranh cãi như animation quá cầu kỳ gần đây, và vì tôi thuộc kiểu thấy rào cản thấp miễn là không quá khó để tự build từ source, nên ý kiến của tôi có thể hơi thiên lệch

    • Gần đây Niri đã cải thiện tích hợp xwayland-satellite, giúp chạy dễ dàng cả các chương trình không hỗ trợ Wayland liên kết liên quan

    • Lý do i3/sway tốt là có thể gán desktop theo chủ đề như trình duyệt, code, Slack..., nên chỉ cần bấm một phím tắt là tới ngay desktop cần thiết, và hiệu suất làm việc cao hơn hẳn so với macOS vốn phụ thuộc vào CMD+Tab hay Mission Control. Kiểu cuộn của Niri trái lại khiến tôi có cảm giác như đang đi lạc để tìm cửa sổ, nên thấy hơi khó hiểu

    • Tôi cũng đã dùng i3 hơn 10 năm, nhưng ngay khi dùng Niri thì có khoảnh khắc "à ha!". Các bản build gần đây còn có tính năng zoom out kiểu "minimap", khá hữu ích khi đôi lúc bị lẫn không biết mình đang ở đâu

    • Chỉ có một điều tôi thấy tiếc ở Niri là scratch layer. Có những ứng dụng không nhất thiết phải tile mà nên có thể gọi ra ngay từ bất cứ đâu, ví dụ như messenger kiểu matrix client thì sẽ tốt nếu có thể phản hồi ngay lập tức. Media player cũng vậy. PaperWM của GNOME có tính năng này

    • Tôi đã dùng i3 hơn 7 năm nhưng vẫn chưa hiểu vì sao kiểu cuộn lại hay. Với đặc tính của tiling WM thì có rất nhiều ảnh chụp màn hình đẹp, nhưng tôi tò mò nó thực sự giúp tăng năng suất đến mức nào. Tôi cũng muốn biết khi di chuyển ngang thì nó hoạt động ra sao, ví dụ nếu từ một editor fullscreen chuyển sang một trình duyệt chỉ hiện nửa màn hình thì editor bị cắt hay bị nén lại. Và sẽ tuyệt hơn nếu có một tiling WM kiêm trình duyệt được tích hợp sâu hơn với dmenu

  • Tôi đã dùng Niri trên desktop chính được vài tháng và còn viết lại trải nghiệm trên LWN. Các tiling WM/compositor thông thường không thật sự hợp với tôi, nhưng mô hình tiling của Niri thì rất đúng ý. Trước Niri tôi dùng PaperWM và các extension của GNOME, nhưng nếu COSMIC chỉ cần thêm scroll tiling thì có lẽ tôi vẫn sẽ tiếp tục dùng Niri

    • Có vẻ đội ngũ COSMIC có thể sẽ thêm tính năng này sau bản phát hành 1.0. Trong lúc đó, một nhân viên của System76 đã tạo extension không chính thức để có thể dùng các compositor khác, bao gồm cả Niri

    • Tôi cũng từng do dự khi chuyển từ PaperWM sang Niri. PaperWM rất tiện vì không phải cấu hình riêng từng ứng dụng, nên các tính năng gốc của GNOME như launcher, cài đặt, khóa màn hình, widget âm thanh/mạng... đều rất thoải mái. Nhưng bản thân PaperWM lại thỉnh thoảng có những điểm khá phiền như lỗi resize cửa sổ hay vấn đề sizing theo chiều dọc. Cuối cùng thì Niri rõ ràng và mạch lạc hơn nhiều

    • Nếu COSMIC chỉ cần thêm tiling thôi thì sẽ tuyệt vời. Tôi rất thích COSMIC, chỉ thiếu đúng điều đó

    • Tôi từng tò mò sự khác biệt với COSMIC, nên phần này rất hữu ích

  • Hiện tại Niri đang tăng độ phổ biến rất bùng nổ nên nhà phát triển bị quá tải. Nếu muốn đóng góp thì hãy tài trợ cho Ivan, hoặc trước khi tạo PR thì nên giúp review các PR khác. Cả Niri và Smithay đều có chất lượng rất cao, và theo thời gian không chỉ không có vấn đề nghiêm trọng mà còn ngày càng thêm tính năng

    • Tôi có chút nghi ngờ việc người bình thường review PR trước sẽ giúp được bao nhiêu. Rốt cuộc maintainer trước khi merge vẫn sẽ luôn tự xem lại, và từ góc nhìn contributor thì việc người hiểu chưa sâu bàn ra tán vào đôi khi còn có thể gây khó chịu

    • Nếu bạn là người dùng Niri hằng ngày thì nhất định nên thể hiện sự cảm ơn, tôi đã tài trợ rồi. Tiện đây tôi chia sẻ setup của mình, hy vọng có thể truyền cảm hứng cho ai đó liên kết setup

    • Nếu là người dùng Hyprland thì tôi tò mò vì sao nên chuyển sang Niri, liệu tính năng cửa sổ vô hạn có phải sức hút lớn nhất không

    • Liên kết tài trợ

  • Trên macOS tôi luôn có thói quen mở mọi thứ ở chế độ toàn màn hình rồi chuyển cửa sổ bằng cmd-tab/cmd-backtick, nên thực sự rất ghen tị với workflow tiling trên Linux. Tôi rất bức bối vì không thể tái tạo môi trường như vậy trên macOS, mà cũng không thể chuyển sang Linux do quy định công ty. Có lẽ sẽ có nhiều người đồng cảm với cảm giác biết một workflow tốt hơn mà không thể áp dụng

    • Trong tháng qua tôi đang port komorebi sang macOS, và dù layout cuộn chưa đạt tới mức như Niri nhưng nó hoạt động tốt trên cả hai nền tảng. Video1 Video2

    • Tương tự, vì ở hoàn cảnh chỉ có thể dùng macOS, tôi đã thử chạy Linux trong máy ảo fullscreen. Về mặt kỹ thuật thì vẫn là macOS nên IT không coi đó là vấn đề, và chính sách bảo mật cũng vẫn được đáp ứng. Có công ty còn hỗ trợ cả giấy phép VMware

    • Trong các window manager cho Mac thì Aerospace là tốt nhất

    • Tôi dùng window manager Yabai trên Mac, và với màn hình lớn thì nó rất tốt, nhưng khi chỉ dùng một laptop thì cuối cùng chỉ còn vài space với một hai cửa sổ mỗi cái, nên tôi chưa tìm ra workflow phù hợp

    • Tôi khuyên dùng flashspace. Khi mở ứng dụng ở chế độ fullscreen, nếu gán workspace vào phím thì có thể chuyển ngay lập tức mà không có animation

  • Lý do tôi chưa thử Niri là vì file cấu hình bị giới hạn chỉ còn một file, nên khá bất tiện khi muốn duy trì môi trường hơi khác nhau trên nhiều thiết bị, ví dụ áp dụng từng cấu hình local riêng được gitignore. Nhưng cách đây không lâu, hai PR lớn đã được merge nên giờ đã có thể override/include theo từng cá nhân như PR liên quan. Dù chưa xuất hiện trong bản phát hành, nhưng tôi đang rất mong chờ

    • Để triển khai tính năng này cho đúng thì cần những thay đổi khá phức tạp nên mất nhiều thời gian, nhưng cuối cùng đã được merge nên tôi rất háo hức
  • Tôi tò mò vì sao một tiling WM mới lại hay, khi bản thân đã dùng xmonad hơn 15 năm. Với Wayland compositor thì tôi cũng không thấy lợi ích nào ngoài "tiling + Wayland". Đặc biệt là mỗi lần trước đây tôi thử Wayland đều luôn có lỗi nghiêm trọng so với X11, nhất là trong môi trường Nvidia

    • Tôi đã thử lại Wayland trong khoảng một năm gần đây trên môi trường Nvidia + Arch + Gnome3 + Wayland, và giờ gần như mọi thứ đều hoạt động tốt không vấn đề gì, Firefox đặc biệt mượt và hiệu quả

    • Wayland vẫn còn những vấn đề nếu làm việc gì đặc biệt, ví dụ không thể xoay hướng cho bảng vẽ đồ họa. Dù vậy với Nvidia thì từ driver phiên bản 570 trở đi hoạt động tốt

    • Cũng quan trọng là bạn dùng distro Linux nào. Tôi đã dùng Wayland lâu năm trên Fedora và không gặp vấn đề lớn nào, cả trên thiết bị Intel lẫn Nvidia

    • Tôi cũng có trải nghiệm tương tự, giữa chừng từng phải cấu hình lại sau một tai nạn rm, đã dùng xmonad từ 2009 đến '23 rồi chuyển sang Niri. Lý do chi tiết có ở đây. PopOS, 2x GTX 1080, đa màn hình đều hoạt động ổn. Tôi khuyên dùng vô điều kiện

    • Tôi đã thử Wayland trên Asus Rog G14 + Nvidia 3060, và trái với sự nghi ngại của mình thì chỉ cần cấu hình drm.modeset là chạy tốt ngay. Hai màn hình ngoài, một qua HDMI và một qua DP over USB-C, đều được nhận không vấn đề gì. Trừ kết nối daisy chain ra thì tôi khá hài lòng. Đây là trải nghiệm còn mới nên tôi chưa gặp hết mọi trường hợp, nhưng với tôi nó còn hoạt động tốt hơn cả X

  • Tôi chuyển từ i3 sang Niri vài tuần trước và rất hài lòng. Cách dùng cửa sổ và workspace của nó tự nhiên hợp với thói quen của tôi hơn. Tôi làm việc theo từng dự án trong mỗi workspace, và ngay cả khi chỉ tạm mở thêm một terminal hoặc trình duyệt ở bên phải thì cũng không ảnh hưởng hay làm xáo trộn các cửa sổ khác, nên rất tiện cho việc tham khảo một lần hay chạy lệnh ngắn. Chỉ có một vấn đề là giờ tôi thực sự muốn có một màn hình ultrawide

    • Tôi đã thử dùng Niri trên màn hình 49 inch, nhưng dừng lại vì gặp vấn đề, đặc biệt là với tổ hợp Nvidia + Wayland. Dù chỉ trong thời gian ngắn, tôi thấy Niri nhìn chung rất hợp với màn hình lớn. Tuy nhiên khi chỉ mở một ứng dụng thì cửa sổ luôn bám sát mép trái màn hình nên hơi khó nhìn. Tôi không biết có tính năng nào cho phép mở ứng dụng lệch sang phải hơn hoặc dùng toàn bộ không gian linh hoạt hơn không. Sau này tôi định dựng một máy AMD rồi thử lại, và Niri là ứng viên số một
  • Ví dụ áp dụng concept của Niri lên Sway: scroll link

  • Hôm qua tôi cài lại PopOS rồi chuyển sang Niri, và thích nghi ngay lập tức vì rất trực quan. Không còn phải bận tâm resize cửa sổ như hồi dùng i3wm nữa, và trong Niri thì ngay cả khi cửa sổ tăng dần trong workspace cũng hầu như không cần sắp xếp lại, nên khả năng tập trung tốt hơn hẳn. Cấu hình của tôi là RTX 3090, Pop OS 24.04 beta, màn hình 4K 43 inch; cài Niri bằng cargo build cũng dễ, và để chạy các ứng dụng X11 như VS Code, Obsidian, Zoom, Blender thì nhất định phải cài xwayland-satellite

  • Sau khi tùy biến Hyprland rồi thấy nhiều điều không vừa ý, tôi quay lại GNOME vì cần những thứ như hàng chục đến hàng trăm cửa sổ trình duyệt, extension cho tray... Nhưng vì mỗi lần GNOME lên phiên bản là tương thích extension lại hỏng, giờ tôi tuyên bố rời GNOME hoàn toàn. Lần này tôi đã thử cả River, QTile và Niri, rồi ổn định ở Niri và đang tự bổ sung dần những tính năng mình cần. Dynamic workspace grouping trực quan và tiện, còn phím tắt bàn phím cũng có thể chỉnh đúng gu của tôi. Về DE thì tôi bù bằng waybar và swaync. Tôi cũng đang vui vẻ viết script bằng các công cụ tự động hóa như Claude Code/Codex. Ví dụ như tôi đang thử nhiều thứ như niri-workspaces để hiện hoạt động cửa sổ hiện tại trên waybar, niri-workspace-names để đổi tên workspace qua tích hợp fuzzel, hay AltTab tùy chỉnh. Những tính năng như thumbnail live có lẽ sẽ là một dự án lớn. Nhờ các coding agent mới mà giờ có thể thay đổi môi trường thiết lập khá sát ý mình ngay cả khi không có tài liệu chi tiết

    • Về chuyển ứng dụng, có lẽ cũng nên tham khảo niriswitcher