Ratty: Trình giả lập terminal hỗ trợ đồ họa 3D nội tuyến
(ratty-term.org)- Ratty là trình giả lập terminal kết xuất bằng GPU hỗ trợ đồ họa 3D nội tuyến
- Có con trỏ chuột quay tròn hình chuột
- Có thể đọc bài viết blog trên trang web
- Trên trang web có thể chuyển đến tải xuống Ratty
- Trên trang web có thể chuyển đến xem mã nguồn
2 bình luận
Ý kiến trên Hacker News
Có người ở đây nhắc đến ứng dụng VR, nên tôi nhớ là trước đây mình từng vọc qua một chút UI 3D nông cho phát triển phần mềm
Độ sâu chỉ nông vào vài cm tính từ màn hình laptop để có thể dùng cả ngày mà mắt đỡ mỏi do VAC, và cảm giác giống như vẽ thêm màu sắc cùng lớp layer trong không gian 3D hơn là vung tay trong phòng
Có thể làm 3D bằng parallax 3D, phối cảnh tạo từ webcam theo dõi đầu/mắt, stereo với kính màn trập, XR HMD, v.v. Kiểu parallax là dễ nhất nhưng hơi màu mè và gây xao nhãng, còn phối cảnh thì tinh tế hơn và đỡ phiền hơn
Cặp stereo của ứng dụng có thể theo kiểu “cung cấp hai cửa sổ mắt trái/mắt phải” hoặc “luân phiên hiển thị khung nhìn trái phải rồi gắn nhãn/đồng bộ/polling”, và khá nhiều cách trong số này cần hỗ trợ từ hệ thống cửa sổ/trình quản lý/môi trường desktop. Tôi đã tận dụng được đòn bẩy khá lớn từ cách xếp chồng Electron và X
Đẩy văn bản ra thành 3D thú vị hơn việc tô màu, và nếu chấp nhận vẻ ngoài hơi lộn xộn thì còn có thể thêm các lớp thông tin phụ được tách riêng theo chiều sâu. Nếu Emacs có độ sâu cho từng ký tự thì sẽ thành thứ gì đó mà ngay cả LispM cũng chưa từng có
Tuy vậy, khi khám phá khả năng của những thứ vốn không mang bản chất 3D như văn bản mã nguồn, thì prototype UX bằng màu nền/màu chữ, font, Unicode và animation vẫn dễ hơn nhiều, còn trên trình duyệt thì chỉ cần dùng các
divchồng lớp và canvas 2D/3D trong suốtMọi ký tự đều là một quad đặt trong không gian 3D và được render theo kiểu instancing, nên có thể xử lý hàng chục triệu ký tự trở lên. Mỗi ký tự có thể được địa chỉ hóa và chỉnh sửa riêng như một polygon khác biệt
Tôi đang dùng nó để render toàn bộ một GitHub repository cùng lúc, và có cả bản native cho Apple lẫn bản web. Bản web có các thành phần cơ bản của một cấu hình IDE, nên tôi rất muốn nghe nhận xét hay ý tưởng
https://ivanlugo.dev/ide
UNIX dường như vẫn đang cố bắt kịp máy trạm Xerox hay các Lisp machine nói chung về trải nghiệm REPL
Năm 1981 đã có đồ họa inline rồi
https://youtu.be/o4-YnLpLgtk?t=376
Cho ai chưa xem: https://www.youtube.com/watch?v=yJDv-zdhzMY
Tôi thích cái này. Không có lý do gì terminal chỉ nên hỗ trợ văn bản
Notebook khoa học dữ liệu cho thấy một hướng mà terminal có thể tiến hóa, và đang có rất nhiều điều thú vị diễn ra trong lĩnh vực này. Kitty có lẽ là kẻ đổi mới táo bạo nhất ở đây [1]
Nhưng tôi không chắc là đã có một tầm nhìn tổng thể hay chưa
[1]: https://sw.kovidgoyal.net/kitty/protocol-extensions/
[1] https://github.com/joouha/euporie
pyvistađã thành công trong việc dùng đồ họa Kitty để render trực tiếp các hình 3D tùy ý trong terminalĐó là một cú hack rất lớn, và để đạt hiệu năng thì gần như không có cách nào khác ngoài dùng shm
https://git.theresno.cloud/panki/kglobe
Có khi còn vượt qua cả “sự pha trộn giữa haiku+macOS” vốn là tương lai máy tính lý tưởng trong tưởng tượng của tôi
Tôi thường thích duyệt hệ thống file trong terminal hơn là bấm vào file manager, nên một kiểu
lsdạng lưới có thể hiển thị model 3D trong thư mục (STL/STEP, in 3D) bằng render ngay trong terminal sẽ thực sự rất hữu íchNếu còn có thể xem trước rồi xoay model để kiểm tra thì càng tốt
Tôi không rõ sẽ dùng nó vào việc gì, nhưng hiệu ứng hình ảnh khá vui mắt và tôi cũng thích thiết kế brutalist của trang web. Nó gợi tôi nhớ về những ngày xưa tốt đẹp
Cái này trông khá ổn đấy chứ?
Tôi có một câu hỏi. Về khả năng render thì có vẻ 2D cũng sẽ xử lý tốt, hay là tôi đang hiểu sai? Các giải pháp hiện có để có ảnh 2D chất lượng cao hay rasterization trong terminal nhìn chung đều không mấy ổn. Tôi tò mò không biết cái này có thể tốt hơn các cách khác không, hay rồi sẽ đụng phải một giới hạn nền tảng nào đó
Tôi cũng tò mò nếu là tăng tốc bằng GPU thì khi dùng qua ssh sẽ ra sao
Terminal đang dần dần trở thành trình duyệt web đầy đủ tính năng
Thành thật mà nói thì tôi vẫn chưa biết, nhưng định sớm tự thử xem :D
https://github.com/fathyb/carbonyl
https://hyper.is/
Mong Terry được an nghỉ. Hy vọng anh ấy sẽ không bao giờ bị lãng quên
Nói thêm thì nhìn vào dự án này, có cảm giác tinh thần của anh ấy vẫn đang sống tiếp :D
Nhìn cái này làm tôi nhớ thời compiz mới ra mắt, khi ai cũng kiểu “cửa sổ của tôi đang nằm trên một khối lập phương” hoặc “tôi cần cửa sổ rung lắc”
Thế là đúng kiểu người như vậy, tôi cài nó ngay lập tức
Việc chuyển qua lại giữa Windows và Ubuntu cùng đủ loại hiệu ứng animation của compiz cho cảm giác như ma thuật
Trong bài blog được link, tôi biết đến glyph protocol mới được đề xuất [1] và thấy nó rất thú vị
Khoảng 6 tháng trước tôi cũng từng tiếc là chưa có đúng thứ như thế này [2]
[1] https://rapha.land/introducing-glyph-protocol-for-terminals/
[2] https://news.ycombinator.com/item?id=45805072
https://github.com/tikimcfee/glyph3d-js
Về cơ bản thì với Kitty graphics protocol đã làm được phần nào rồi. Tôi từng làm một demo render đồ họa 3D trong Kitty [1]
Trên thực tế, phần quan trọng còn thiếu là vsync, và có vẻ ratty cũng chưa có
Nếu việc render không được canh đồng bộ, terminal emulator có thể đọc framebuffer đúng lúc ứng dụng đang ghi vào đó, gây ra các artifact hiển thị
[1] https://x.com/zack_overflow/status/2035921425341763756?s=20
Ý kiến trên Lobste.rs
Tôi thấy mùi LLM từ trang landing page nên vào đọc bài blog, và đúng là vậy
Nếu gắn tag chỉ vì có dùng AI thì phải gắn cho 90% dự án mất, và cuộc trò chuyện cũng sẽ lệch khỏi chính sản phẩm. Tôi không muốn một thread về chuyện một người tự hack ra terminal emulator hiển thị chuột 3D lại trôi sang tranh luận đạo đức
Tôi cũng từng thêm một chút 3D để tạo hiệu ứng wow nhanh, nhưng tôi nghĩ mục tiêu nên là cẩn trọng suy nghĩ lại từ nền tảng. Dù thử nghiệm của tôi có thất bại, tôi vẫn tự hào vì đã tạo ra một sản phẩm cho con người, từ góc nhìn mang tính con người
Tất nhiên, nếu họ chỉ làm hoàn toàn vì vui thì bản thân điều đó cũng không có vấn đề gì
Tôi đọc đi đọc lại mấy lần mà vẫn cực kỳ bối rối
Một mặt, cũng giống như khi nhìn sixel hay kitty, tôi cứ nghĩ mãi “tại sao?”. Về bản chất, chồng đồ họa lên một giao diện thiên về văn bản thì trông ngầu đấy nhưng có vẻ không thực tế. Dĩ nhiên, cũng có thể đưa ra cùng một phản biện như vậy với curses hay slang
Mặt khác, tôi lại tự hỏi liệu có cách nào nhét được giao thức/hiển thị render 3D vào trong Emacs hay không. Tôi hoàn toàn không biết sẽ làm gì với nó, nhưng giống như dự án này thì có vẻ sẽ rất ngầu
Hồi xưa người ta viết chương trình chỉ vì thấy vui. Không nhớ à?
Tôi đã dành cả buổi tối để khiến framework CAD viết bằng Haskell của mình xuất đối tượng theo cách mà Ratty có thể đọc được
So với thời gian bỏ ra thì nó có vẻ khá nhiều tiềm năng, nhưng tôi ước lệnh “đặt đối tượng” có thể cấu hình thêm một chút. Tôi muốn nó tự lo luôn việc tạo không gian trong output của REPL và cả việc thay đổi kích thước đối tượng
Ngoài ra, việc Ratty không thể tải tệp nằm ngoài thư mục assets cũng hơi dở. Cuộn trang cũng có vẻ hơi lỗi, vì tôi thường thấy đối tượng biến mất sớm hơn mức lẽ ra nó phải biến mất. Dù vậy cũng có thể là do tôi làm sai gì đó