Hacker News 의견들
  • 나는 libghosttyTrolley에 사용하고 있음
    이 프로젝트는 TUI를 데스크톱 앱으로 패키징하는데, 웹앱을 Electron으로 감싸는 방식과 비슷함
    단순히 GUI와 CLI 번들러를 덧붙였을 뿐인데, Windows에서도 완벽히 작동함
    Ghostty 개발자들에게 진심으로 감탄함

    • 네 GitHub README에 스크린샷이 하나쯤 있으면 좋겠음
      앱이 TUI 주변에 어떤 chrome(UI 외곽) 을 추가하는지 바로 이해할 수 있을 것 같음
  • C 파일이 작아서 몇 분이면 다 읽을 수 있었음
    5번째 줄쯤에서 폰트를 자동 생성된 헤더로 임베딩하는 독특한 방식을 보고 놀랐음
    Windows 리소스 방식에 익숙했는데, 이건 CMake 코드로 바이트 배열을 생성하는 구조였음
    약간 충격적이면서도 인상 깊었음 — 드디어 크로스플랫폼 바이너리 리소스 임베딩의 해법을 찾은 느낌임

    • 여기에 사용된 빌드 스크립트를 공유함
      cmake -DINPUT=pixel.gif -DOUTPUT=pixel.h -DARRAY_NAME=pixel_gif -P bin2header.cmake 명령으로
      1x1 픽셀 GIF를 C 배열로 변환할 수 있었음
      자동 생성된 헤더에 이미지가 그대로 바이트 배열로 들어감
    • 재미있는 사실로, XPM 비트맵은 원래 수정 없이 #include할 수 있도록 설계되었음
      X PixMap 위키에 그 구조가 잘 설명되어 있음
    • vim 패키지의 xxd 명령으로도 이런 배열을 만들 수 있음
      하지만 큰 리소스에는 비효율적임 — gcc/clang이 메모리 폭발을 일으킴
      그래서 나는 LIEF 프로젝트를 사용함
      이건 Windows PE, macOS Mach-O, Linux ELF 바이너리에 리소스를 삽입하고 다시 읽을 수 있게 해줌
      덕분에 크기 제한 없는 크로스플랫폼 리소스 번들링 시스템을 구축할 수 있었음
    • Windows 프로그래머로서 DrawTextEx 호출을 본 게 흥미로웠음
      Ghostty 라이브러리의 표현력을 잘 보여주는 샘플이었음
      다른 라이브러리 선택도 훌륭했고, 나도 터미널 앱을 직접 만들어보고 싶다는 영감을 받았음
    • “드디어 발견했다”는 표현에 공감하지는 않음
      소스 코드에 바이너리 포함은 오래된 기법임
      70~80년대 BASIC의 DATA 라인이나 Atari ST, Amiga 게임에서도 이런 방식이 흔했음
      Java에서도 픽셀 단위 폰트를 .java 파일에 직접 넣은 적이 있음
      Linux 커널의 일부 폰트도 이런 식으로 처리된다고 들었음
  • 이 프로젝트가 흥미로움
    나는 터미널 에뮬레이터에 탭이나 세션 관리 기능이 필요하지 않음
    WM이 창과 탭을 관리하고, tmux가 세션·스크롤백·검색 등을 처리함
    그래서 urxvt, st, foot 같은 단순한 터미널로 충분했음
    Ghostty는 내 취향이 아니었지만, 이건 한 번 써볼 만함
    OSC 지원이 예정되어 있고, st보다 덜 번거로운 플러그인 시스템이 추가되면 좋겠음