1P by GN⁺ 3시간전 | ★ favorite | 댓글 2개
  • Ratty는 인라인 3D 그래픽을 지원하는 GPU 렌더링 터미널 에뮬레이터임
  • 회전하는 쥐 커서를 포함함
  • 사이트에서 블로그 글을 읽을 수 있음
  • 사이트에서 Ratty 다운로드로 이동할 수 있음
  • 사이트에서 소스 확인으로 이동할 수 있음
Hacker News 의견들
  • 여기서 몇몇이 VR 활용을 말하던데, 예전에 소프트웨어 개발용 얕은 3D UI를 조금 만져본 적이 있음
    하루 종일 써도 VAC 눈 피로가 적도록 노트북 화면에서 몇 cm 안쪽 정도의 얕은 깊이였고, 방 안에서 팔을 휘두르는 것보다는 3D에서 색과 레이어를 더해 그리는 느낌에 가까웠음
    3D는 흔들림 3D, 웹캠 머리/눈 추적으로 만든 원근, 셔터 안경 스테레오, XR HMD 등으로 가능함. 흔들림 방식은 가장 쉽지만 귀엽고 산만하며, 원근은 더 미묘하고 덜 거슬림
    앱의 스테레오 쌍은 “왼쪽/오른쪽 눈 창 두 개를 제공”하거나 “좌우 뷰를 번갈아 표시하고 라벨링/동기화/폴링”하는 식이 될 수 있고, 이 중 상당수는 창 시스템/관리자/데스크톱 지원이 필요함. Electron과 X를 쌓아 쓰는 방식에서 꽤 큰 지렛대를 얻었음
    텍스트를 3D로 밀어내는 건 색상화보다 더 재미있고, 어수선한 외형을 감수하면 깊이로 분리된 보조 정보 레이어도 넣을 수 있음. Emacs에 문자별 깊이가 생기면 LispM에도 없던 무언가가 생기는 셈임
    다만 코드 텍스트처럼 본질적으로 3D가 아닌 것의 가능성을 탐색할 때는 전경/배경색, 글꼴, 유니코드, 애니메이션으로 UX를 프로토타이핑하는 편이 훨씬 쉽고, 브라우저라면 겹친 div와 투명 2D/3D 캔버스를 쓰면 됨

    • 완전히 동작하는 3D 글리프 기반 텍스트 렌더링 시스템이 있는데, 사람들이 좀 봐주게 만들기가 어렵더라
      모든 문자가 3D에 배치된 quad이고 인스턴스 렌더링되므로 수천만 개 이상을 다룰 수 있음. 각 문자는 다른 폴리곤처럼 개별 주소 지정과 변경이 가능함
      GitHub 저장소 전체를 한 번에 렌더링하는 데 쓰고 있고, 네이티브 Apple 버전과 웹 버전 두 가지가 있음. 웹 버전에는 IDE 구성의 기본 요소가 들어가 있으며, 통찰이나 생각을 듣고 싶음
      https://ivanlugo.dev/ide
  • UNIX는 REPL 경험에서 아직도 Xerox 워크스테이션이나 일반적인 Lisp 머신을 따라잡으려는 중으로 보임
    1981년에 이미 인라인 그래픽이 있었음
    https://youtu.be/o4-YnLpLgtk?t=376

    • 가끔은 우리가 1968년 Mother of all Demos에서 이미 풀린 UX를 계속 쫓고 있다는 느낌이 듦
      아직 안 본 사람들을 위해: https://www.youtube.com/watch?v=yJDv-zdhzMY
    • 저건 3D가 아님
    • 아니면 TempleOS도 있음
  • 이거 마음에 듦. 터미널이 텍스트만 지원해야 할 이유는 없음
    데이터 과학 노트북은 터미널이 진화할 수 있는 한 방향을 보여주고, 이 분야에서 재미있는 일이 많이 일어나고 있음. Kitty가 아마 여기서 가장 공격적인 혁신자일 듯함 [1]
    다만 전체적인 비전이 있는지는 잘 모르겠음
    [1]: https://sw.kovidgoyal.net/kitty/protocol-extensions/

    • 굳이 진화가 필요하지 않음. 내 프로젝트 euporie [1]를 쓰면 데이터 과학 노트북을 그래픽 이미지 출력, HTML, LaTeX 등과 함께 전부 터미널 안에서 사용할 수 있음
      [1] https://github.com/joouha/euporie
    • pyvista가 Kitty 그래픽을 이용해 임의의 3D 도형을 터미널에 직접 렌더링하게 만드는 데 성공했음
      거대한 해킹이고, 성능을 내려면 shm을 쓰는 것 말고는 방법이 없었음
      https://git.theresno.cloud/panki/kglobe
    • Terry A Davis가 이미 이걸 했음. 그때도 지금만큼이나 미친 일이었음
    • 이 3D 그래픽을 데이터 과학 노트북, 로컬 LLM, 통합 코딩 하네스, 개인 데이터에 대한 가시성과 섞으면 터무니없이 훌륭한 무언가가 나올 수 있음
      내가 이상적으로 상상하는 컴퓨팅 미래였던 “haiku+macOS 매시업”을 넘어설지도 모르겠음
    • 이런 게 터미널의 썸네일에도 동작할 수 있을지 궁금함
      보통 파일 관리자를 클릭해서 쓰기보다 터미널에서 파일 시스템을 둘러보는 걸 선호하는데, 디렉터리 안의 3D 모델(STL/STEP, 3D 프린팅)을 터미널 기반 렌더링으로 보여주는 격자형 ls가 있으면 정말 유용할 것 같음
      모델을 미리 보고 회전해서 살펴볼 수 있으면 가산점임
  • 어디에 쓸지는 잘 모르겠지만, 시각 효과가 즐거웠고 웹사이트의 브루털리즘 디자인도 마음에 들었음. 좋았던 옛날 기억을 떠올리게 해줌

  • 이거 꽤 좋아 보이는데?
    질문이 있음. 렌더링 능력상 2D도 잘 처리할 수 있을 것 같은데, 내가 잘못 본 걸까? 터미널에서 고품질 2D 이미지나 래스터화를 얻는 기존 해법은 대체로 별로였음. 이게 다른 해법보다 나을 수 있는지, 아니면 어딘가에서 근본적인 한계에 부딪히는지 궁금함
    또 GPU 가속이라면 ssh에서는 어떻게 되는지도 궁금함

    • Kitty 그래픽 프로토콜은 꽤 좋고, Ghostty가 이를 완전히 구현함
    • 이미 GPU 기반 터미널 에뮬레이터가 꽤 많음. 찾는 게 그런 건가?
  • 터미널이 서서히 풀기능 웹 브라우저가 되어가고 있음

    • “항상 그랬다” 밈이 곧 나올 듯함. 좀 더 진지하게 말하면 도구의 목적은 일을 해내는 것이고, 결국 이 도구를 유용하게 만들 수 있느냐가 질문이 됨
      솔직히 아직은 모르겠지만 곧 직접 알아볼 생각임 :D
    • 원하던 게 이거였잖아…
      https://github.com/fathyb/carbonyl
    • 아니면 터미널은 이미 풀기능 웹 브라우저일 수도 있음
      https://hyper.is/
    • 실제로 그렇게 보임
  • Terry의 명복을 빎. 결코 잊히지 않기를
    덧붙이면, 이 프로젝트를 보면 그의 정신은 계속 살아 있는 듯함 :D

  • 이걸 보니 compiz가 나왔을 때 모두가 “내 창이 큐브 위에 있어”라거나 “흔들리는 창이 필요해”라고 하던 시절이 떠오름
    그래서 어쨌든 그런 사람답게 바로 설치했음

    • KDE Plasma에서는 지금도 그걸 쓸 수 있음. 멋져서 흔들리는 창을 켜두고 있음
    • 그 좋던 시절이 기억남. compiz 큐브의 한 면에는 VirtualBox로 돌리는 Windows XP를 전용으로 띄워뒀음
      온갖 compiz 애니메이션 효과와 함께 Windows와 Ubuntu 사이를 전환하는 게 마법처럼 느껴졌음
  • 링크된 블로그 글에서 새로 제안된 글리프 프로토콜 [1]을 알게 되어 매우 흥미로웠음
    약 6개월 전에도 바로 이런 게 없다고 아쉬워했었음 [2]
    [1] https://rapha.land/introducing-glyph-protocol-for-terminals/
    [2] https://news.ycombinator.com/item?id=45805072

    • 동의함. 글리프가 핵심임
      https://github.com/tikimcfee/glyph3d-js
    • 좋은 아이디어임. 최근 본 몇몇 터미널 프로젝트와 달리, 터미널이 할 수 있는 일의 개념을 완전히 재발명하지 않고도 문제를 다룸
  • Kitty 그래픽 프로토콜로 이미 어느 정도 가능함. Kitty에서 3D 그래픽 렌더링을 하는 데모를 만들어봤음 [1]
    실제로 빠져 있는 중요한 부분은 vsync이고, ratty에도 없는 것 같음
    렌더링이 정렬되지 않으면 애플리케이션이 프레임버퍼에 쓰는 동안 터미널 에뮬레이터가 이를 읽어 시각적 아티팩트가 생길 수 있음
    [1] https://x.com/zack_overflow/status/2035921425341763756?s=20

Lobste.rs 의견들
  • 랜딩 페이지에서 LLM 냄새가 나서 블로그 글을 확인했더니 역시나였음

    🐁: "이 작업에 AI가 얼마나 관여했나요?"

    AI 보조 프로그래밍에 대한 제 입장은 이 블로그 글을 참고하세요
    짧게 말하면 관여는 했지만, 제가 "대충 만든" 것으로 볼 정도는 전혀 아니었습니다
    좋긴 한데, 이 답변은 생성형 AI가 기존 작업을 출처 표시 없이 표절하는 경향이나 다른 윤리적 문제들을 해결하지는 못함

    • 이 태그는 AI 사용 여부가 아니라 바이브 코딩 논의에 붙이는 쪽이 낫다고 봄
      사용 자체에 태그를 붙이려면 프로젝트의 90%에 붙여야 할 것이고, 대화도 결과물 자체에서 벗어나게 됨. 3D 쥐를 표시하는 터미널 에뮬레이터를 한 사람이 해킹해 만든 것에 대해 윤리 논쟁으로 스레드가 흘러가는 건 원치 않음
    • 아이디어 출처로 Terry Davis(Temple OS)와 Jeff Reeder, Jim Bergman, Mark Hayton(RIPscript)을 크레딧에 넣어야 한다고 보는 건가?
    • 처음엔 “멋지네, 우호적인 경쟁이 생기나 보다”라고 생각했는데, 파고들수록 미소가 실망으로 바뀌었음
      빠른 와우 효과를 위해 약간의 3D를 넣긴 했지만, 목표는 신중하게 기초를 다시 생각하는 것이어야 한다고 봄. 내 실험이 실패하더라도, 인간을 위한 인간적인 관점의 제품을 만들었다는 점은 자랑스럽다
      물론 이들이 순수하게 재미로 하는 것이라면 그 자체로 문제는 없음
    • 랜딩 페이지의 어떤 부분에서 LLM 느낌을 받았는지 궁금함. 내 눈에는 검은 배경만 빼면 지난 5~10년 동안 봐온 랜딩 페이지들과 거의 비슷해 보임
  • 몇 번을 읽어도 여전히 엄청 혼란스러움
    한쪽에서는 sixel이나 kitty를 볼 때처럼 계속 “왜?”라는 생각이 듦. 근본적으로 텍스트 지향인 인터페이스에 그래픽을 얹는 건 멋지지만 실용적이진 않아 보임. 물론 curses나 slang에도 같은 반론을 할 수는 있음
    다른 한편으로는 3D 렌더링 프로토콜/디스플레이를 어떻게든 Emacs 안에 넣을 수 있을지 궁금해짐. 뭘 할지는 전혀 모르겠지만, 이 프로젝트처럼 정말 멋질 것 같음

  • 저녁 한나절을 써서 내 Haskell CAD 프레임워크가 Ratty에서 읽을 수 있는 방식으로 객체를 출력하게 만들었음
    들인 시간에 비해 꽤 가능성 있어 보였지만, “객체 배치” 명령이 조금 더 설정 가능했으면 싶었음. REPL 출력 안에 공간을 만드는 일과 객체 크기 조정까지 자체적으로 처리해 주길 바랐음
    또 Ratty가 assets 폴더 밖의 파일을 불러오지 못하는 건 좀 별로임. 스크롤도 약간 망가진 것 같았는데, 객체가 사라지기엔 이른 시점에 사라지는 걸 자주 봤음. 다만 내가 뭔가 잘못해서 그랬을 수도 있음