2 điểm bởi GN⁺ 2025-06-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • Chawan là một trình duyệt web TUI mới hoạt động trong môi trường terminal dạng văn bản
  • Phiên bản 0.2.0 lần này bao gồm mọi tính năng thiết yếu của giai đoạn MVP và hiện không có lỗi nghiêm trọng nào
  • Chỉ yêu cầu bắt buộc các thư viện libssh2, libbrotli, OpenSSL/LibreSSL, đồng thời đã loại bỏ nhiều phụ thuộc từng có ở các phiên bản trước
  • Cũng được cung cấp dưới dạng binary tĩnh và gói .deb cho amd64 Linux, giúp việc phát hành và cài đặt trở nên dễ dàng
  • Ở phiên bản tiếp theo, mục tiêu là cải thiện hiệu năng của mô-đun layout và mang lại trải nghiệm UI tốt hơn

Giới thiệu Chawan 0.2.0

Chawan là một trình duyệt web nhẹ dựa trên giao diện người dùng terminal (TUI), là dự án mã nguồn mở được thiết kế để giúp duyệt web thuận tiện trong môi trường văn bản. Phiên bản 0.2.0 lần này là bản phát hành ổn định đầu tiên có đầy đủ các chức năng chính ở giai đoạn sản phẩm khả dụng tối thiểu (MVP), và hiện chưa có báo cáo về lỗi nghiêm trọng nào.

Phân phối và cài đặt

  • Có cung cấp tarball của cây mã nguồn; nếu muốn tự biên dịch, chỉ cần làm theo hướng dẫn trong README
  • Có bản phân phối binary tĩnh cho amd64 Linux, có thể cài đặt dễ dàng bằng lệnh make install sau khi giải nén archive
    • Có thể gỡ bằng make uninstall
  • Cùng bản phân phối đó cũng được cung cấp dưới dạng gói .deb, có thể cài đặt trực tiếp trên các hệ thống dựa trên Debian

Thông tin dành cho trình quản lý gói

  • Các phụ thuộc runtime bắt buộc của Chawan gồm:
    • libssh2
    • libbrotli (bao gồm libbrotlicommon, libbrotlidec)
    • OpenSSL (3.0 trở lên) hoặc LibreSSL (đã kiểm thử trên OpenBSD 7.7)
  • Các thành phần như zlib, libseccomp, termcap/ncurses, libcurl từng được dùng ở các bản phát triển trước nay không còn cần thiết, nên đã được loại khỏi danh sách phụ thuộc
  • Nếu phát sinh vấn đề khi đóng gói, hãy liên hệ với nhà phát triển trước khi vá; khả năng cao vấn đề có thể được xử lý trực tiếp ở upstream

Kế hoạch sắp tới

  • Bản phát hành 0.2.0 lần này mất nhiều thời gian hơn dự kiến, nhưng là phiên bản được quyết định phát hành chính thức sau khi đã có đầy đủ mọi chức năng MVP
  • Nhánh v0.2 từ nay sẽ chỉ nhận các bản sửa lỗi, còn việc bổ sung tính năng mới sẽ tiếp tục trên nhánh master
  • Ở bản phát hành tiếp theo, mục tiêu trọng tâm là cải thiện hiệu năng và độ chính xác của mô-đun layout cùng với nâng cao tính thân thiện với người dùng của UI

Tầm quan trọng và ưu điểm của dự án

  • Chawan là một trình duyệt web tối ưu cho môi trường terminal, cho phép truy cập nội dung web trên các máy chủ và môi trường bị giới hạn tài nguyên
  • Khác với các trình duyệt web dạng văn bản hiện có, dự án này tạo khác biệt nhờ hỗ trợ các giao thức mã hóa và nén hiện đại, đồng thời tối thiểu hóa phụ thuộc
  • Vì là mã nguồn mở nên thuận lợi cho việc mở rộng thêm và tùy biến

1 bình luận

 
GN⁺ 2025-06-17
Ý kiến trên Hacker News
  • Mỗi khi thấy một dự án viết bằng nim là tôi lại cảm thấy vui. Tôi có ấn tượng rằng nim là ngôn ngữ thú vị nhất, nằm đâu đó giữa C/C++ và python. So với quy mô cộng đồng nim, người dùng của nó có năng suất rất cao, nên dù không hiểu quá sâu tôi vẫn có cảm giác những suy nghĩ của mình về nim là đúng. Thật tiếc khi nim vẫn chưa thể phát triển rộng rãi.

  • shiomiru, tôi muốn hỏi đâu là tài liệu tốt nhất để học các khái niệm liên quan đến TTY. Miễn phí hay trả phí đều được, mong được giới thiệu. Về TTY thì tôi biết bài giới thiệu TTY của linusakesson.net, nhưng tôi nhận ra nó có giới hạn là không giải thích đến termcap/terminfo/curses. Ở bình luận khác cũng có nhắc đến cuốn O'Reilly's Termcap & Terminfo (có thể xem trực tuyến tại đây).

    • Do có kinh nghiệm dùng mô-đun terminal tùy biến riêng của chawan, tôi không hiểu chuẩn X/Open curses sâu đến vậy. Với các escape sequence thực tế thì tài liệu ctlseqs.ms của XTerm là nguồn rất hữu ích. Tôi cũng học được rất nhiều ý tưởng từ dự án notcurses của nick black, và đặc biệt khuyên nên đọc ghi chú của anh ấy về "sprixels".
  • Tôi luôn thấy vui khi có thêm một cách tiếp cận mới để nghiên cứu nhanh, thay vì lại phải dùng thêm một engine khác dựa trên Chrome. Những gì được giới thiệu hôm nay khiến tôi rất mong sau khi tan học sẽ tự thử. Với môi trường không có sixel, tôi muốn giới thiệu terminal port của chromium: carbonyl như một lựa chọn thay thế rất hay. Tác giả gốc hiện không còn có thể phát triển tích cực nữa nên tính năng còn khá hạn chế, nhiều thứ như phím tắt, lưu file v.v. vẫn chưa được hỗ trợ. Tuy vậy, độ tương thích Web và sự mới mẻ của nó vẫn cực kỳ ấn tượng. Tôi chỉ mong có ai giỏi rust tiếp tục duy trì dự án; lần gần nhất tôi xem, vài tháng trước, vẫn chưa có fork nào nổi bật.

  • Tôi thật sự thích những dự án như thế này. Tôi ước gì có một danh sách tổng hợp các website dạng văn bản. Cá nhân tôi thích nhất plaintextsports.comlite.cnn.com.

  • Quá tuyệt. Tôi đã tự build từ source bằng termux trên Lenovo M8 thế hệ 4, chỉ cần cài nim là xong. Việc cài đặt gọn gàng mà không cần quyền root thật sự gây ấn tượng.

  • Đây là một triển khai rất đẹp. Tôi rất mong được dùng nó vào công việc thực tế để xem có thể đi xa đến đâu. HN hiển thị cực kỳ dễ đọc.

  • Tôi luôn cố gắng để website của mình trông ổn ngay cả trên Links, và giờ có vẻ đã có thêm một ứng viên mới. Nhờ có hỗ trợ một phần CSS, số thứ cần cân nhắc như giãn cách giữa các phần tử cũng tăng lên. Trên Links thì margin/padding bị bỏ qua hoàn toàn nên tôi có thể xếp menu và các mục khác gọn trên một dòng, nhưng giờ tình hình đã trở nên phức tạp hơn.

    • Mục tiêu cơ bản là "cứ thế mà chạy" mà không cần cấu hình riêng, nhưng thực tế đôi khi không được như vậy. Trong những trường hợp đó, cứ xem như là bug. Nếu thật sự cần CSS tùy biến cho layout grid, thì chawan có hỗ trợ media query grid tiêu chuẩn.
  • Dự án này thật sự rất hay, lại còn được làm bằng nim nữa thì càng đáng khen. Nhưng khi tôi gõ cha example.com thì hoàn toàn không hiểu cách dùng các lệnh mặc định như hjkl. Khi nhấn số thì có hiện ở góc dưới bên trái, còn ngoài ra không có phản hồi gì cả. Tôi đã tự build trên MacOS Sequoia 15.5 Apple Silicon với Nim 2.24. Trang web tải lên bình thường nhưng các lệnh thì không hoạt động. Không rõ tôi đang bỏ sót điều gì, hay đây là bug?

    • Tôi gặp hiện tượng y hệt trên Ghostty, iTerm2 và Terminal.app.
  • Tôi thấy khá ấn tượng khi nó không còn dùng termcap/ncurses nữa. Điều này có nghĩa là nó tự xử lý terminal trực tiếp phải không?

    • Chawan thực ra hầu như không dùng ncurses mà chỉ dùng termcap. Do ncurses có tích hợp termcap như một phần cài đặt bên trong nên có thể gây nhầm lẫn. Ban đầu tôi thử làm theo w3m nên bắt đầu với termcap, nhưng termcap giờ gần như là một giao diện vô dụng, thậm chí còn không biểu diễn được true color cần thiết trên terminal hiện đại. Ưu điểm duy nhất là có thể 'may mắn' chạy được trên những terminal cực kỳ cũ từ thập niên 80, nhưng ngay cả điều đó cũng không có nhiều giá trị. Thay vì chuyển sang terminfo, tôi bỏ hẳn hướng đó và chọn cách query terminal. Cơ sở dữ liệu terminal cũng được nhúng sẵn và chỉ dùng để nhận diện một số giá trị TERM không tương thích với XTerm. Nếu terminal phản hồi đúng với các query thì nó sẽ hoạt động tốt bất kể giá trị TERM là gì.
  • Tôi rất ấn tượng khi trên macOS có thể build dễ dàng chỉ với một lệnh make. Thật vui khi thấy đã có một lựa chọn thay thế hiện đại cho elinks.