Chawan TUI 웹 브라우저 0.2.0
(chawan.net)- 터미널 기반 웹 브라우저 Chawan 0.2.0이 공개되어 소스 tarball, amd64 Linux용 정적 바이너리,
.deb패키지로 설치할 수 있음 - 2025년 6월 25일에는 이 버전의 주요 플랫폼별 문제 일부를 고친 0.2.1 패치 릴리스가 추가로 제공됨
- 패키지 유지관리자는 필수 런타임 의존성을 libssh2, libbrotli, OpenSSL 또는 LibreSSL 중심으로 정리하면 됨
- zlib, libseccomp, termcap/ncurses, libcurl은 더 이상 필요하지 않으며, 패키징 문제가 있으면 임시 패치보다 업스트림 문의가 권장됨
- v0.2 브랜치는 버그 수정만 받고, 새 기능은 master에서 이어지며 다음 릴리스는 레이아웃 성능·정확성과 UI 사용성 개선을 목표로 함
Chawan 0.2.0 배포 파일
- Chawan 0.2.0이 릴리스됨
- 소스 트리 tarball은 v0.2.0.tar.gz로 제공됨
- 컴파일 방법은 README 파일을 참조해야 함
- amd64 Linux용 정적 바이너리 배포판도 제공됨
- 정적 바이너리 배포판
- 설치하려면 아카이브를 원하는 위치에 추출한 뒤 root 권한으로
make install을 실행함 - 제거는
make uninstall로 수행함
- 같은 배포판은 .deb 패키지로도 받을 수 있음
0.2.1 패치 릴리스
- 2025년 6월 25일 추가 공지에서, 0.2.0의 일부 주요 플랫폼별 문제를 수정한 패치 릴리스가 제공됨
- 패치 릴리스는 chawan-0-2-1.html에서 확인 가능함
패키지 유지관리자용 의존성
- 현재 필수 런타임 의존성은 다음과 같음
- libssh2
- libbrotli
- 더 정확히는 libbrotlicommon과 libbrotlidec
- OpenSSL 또는 LibreSSL
- OpenSSL은 3.0 이상이 권장됨
- LibreSSL은 OpenBSD 7.7에 포함된 버전이 테스트됨
- 이전 개발 버전에 있던 의존성은 더 이상 적용되지 않으며 제거할 수 있음
- zlib
- libseccomp
- termcap/ncurses
- libcurl
- Chawan 패키징 중 문제가 생기면 임시 패치를 적용하기 전에 먼저 연락하는 것이 권장됨
- 문제를 업스트림에서 해결할 수 있을 가능성이 있음
브랜치 운영과 다음 작업
- 0.2.0은 MVP에 원했던 기능을 모두 포함하며, 알려진 치명적 버그가 없는 상태로 버전이 붙음
- git의 v0.2 브랜치는 버그 수정만 받음
- 새 기능 작업은 master 브랜치에서 계속됨
- 다음 릴리스는 레이아웃 모듈의 성능과 정확성을 개선하고, UI를 조금 더 사용자 친화적으로 만드는 것을 목표로 함
댓글과 토론
Hacker News 의견들
-
짧은 조사용 사이드 퀘스트에 또 다른 Blink 엔진을 쓰지 않아도 되는 방법은 언제나 반가움. 방과 후에 테스트해볼 예정임 ;)
아직 안 나온 얘기라면, sixel이 없는 환경에 특히 좋은 해킹으로 Chromium의 터미널 포트인 carbonyl이 있음: https://github.com/fathyb/carbonyl
다만 원 제작자가 다시 손볼 시간이 없어서 아주 기본적인 상태이고, 키보드 단축키나 파일 저장 같은 기능이 많이 빠져 있음. 그래도 완전한 웹 호환성을 가져오는 점은 정말 멋지고, Rust를 할 줄 아는 누군가가 다시 이어받아 줬으면 함. 몇 달 전 봤을 때는 포크 중에 추진력이 있는 곳이 없었음- carbonyl GitHub 글에서 원 저자가 팔레스타인인이라 그런지, 사람들이 계속 건강과 안전을 묻고 있음
저자가 무사하길 바람. 작업물은 정말 좋았다고 말하고 싶음. 전쟁은 전반적으로 정말 싫음
- carbonyl GitHub 글에서 원 저자가 팔레스타인인이라 그런지, 사람들이 계속 건강과 안전을 묻고 있음
-
@shiomiru
이런 TTY 관련 개념을 배우기에 가장 좋은 자료가 뭐라고 생각하는지 궁금함. 유료든 무료든 상관없음
예를 들어 https://www.linusakesson.net/programming/tty/index.php는 알고 있지만, termcap/terminfo/curses까지는 다루지 않음
댓글 중 하나에서 http://www.amazon.com/termcap-terminfo-OReilly-Nutshell-Lind...를 언급했고, 온라인판으로는 https://www.scribd.com/document/831486848/Termcap-and-Termin...도 보임- chawan은 자체 터미널 모듈을 갖고 있어서, 표준 X/Open curses에 대한 지식은 그리 깊지 않음
실제 이스케이프 시퀀스에는 XTerm의 ctlseqs.ms[1]가 매우 귀중한 자료임. nick black의 notcurses[2]에서도 많은 아이디어를 얻었고, 특히 “sprixels”에 관한 노트[3]를 추천함
[1]: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
[2]: https://nick-black.com/dankwiki/index.php/Notcurses
[3]: https://nick-black.com/dankwiki/index.php/Theory_and_Practic...
- chawan은 자체 터미널 모듈을 갖고 있어서, 표준 X/Open curses에 대한 지식은 그리 깊지 않음
-
정말 잘 만들었음. 일상 업무 일부에 써보면서 어디까지 가능한지 보려 함. HN 표시가 특히 좋아 보임
- 잘됐음. 발견한 버그 보고는 잊지 말아줘야 함
-
엄청 멋짐! Nim으로 작성된 것도 보기 좋음
cha example.com을 실행하면 hjkl 같은 명령을 어떻게 쓰는지 모르겠음. 효과가 있는 키는 숫자뿐이었고, 숫자는 왼쪽 아래에 표시됨. 그걸로 뭘 하는지도 아직 모르겠음. 사용법에서 명백한 걸 놓친 건지, 아니면 버그일 수 있는지 궁금함
MacOS Sequoia 15.5 Apple Silicon에서 Nim 2.24로 소스 빌드했음. 페이지는 제대로 로드되지만 명령 키가 동작하지 않음- Ghostty, iTerm2, Terminal.app에서 모두 시도했는데 동일하게 동작했음
-
Termux가 돌아가는 Lenovo M8 4세대에서 소스로 컴파일해봤고, Nim만 설치하면 됐음.
root사용자가 없는데도 설치가 깔끔하게 잘 됐음 -
조금 파고들어 보니 Chrome과 Safari도 이제는 Acid2와 Acid3를 완전히 통과하지 못하는 듯함
- 관련 논의가 여기 있음: https://news.ycombinator.com/item?id=15256890
-
항상 내 웹사이트가 Links에서도 보기 좋게 나오도록 신경 써왔는데, 이제 새 후보가 생긴 것 같음
일부 CSS를 지원하면 오히려 조금 더 어려워짐. 예전에는 links가 여백과 패딩을 통째로 무시해서 메뉴 같은 인라인 목록 요소를 더 깔끔하게 표시하는 데 쓸 수 있었는데, 이제는 요소 간 간격이 문제가 됨- 의도는 그냥 “작동해야 한다”는 쪽임. 가끔 그렇지 않다는 건 알고 있고, 그건 버그로 봐도 됨 :)
그래도 격자 표시용 사용자 지정 CSS가 정말 필요하다면, chawan은 표준grid미디어 기능을 지원함: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/grid
- 의도는 그냥 “작동해야 한다”는 쪽임. 가끔 그렇지 않다는 건 알고 있고, 그건 버그로 봐도 됨 :)
-
오랜 w3m 사용자임. 써보니 좋아할 수 있을 것 같음. 아주 괜찮음
“URL 열기”, 즉 주소 표시줄 기능이 없는 건 의도한 설계 선택인지 궁금함- 주소 표시줄은 C-l, 즉 control + L을 누르면 열려야 함
-
훌륭함
이제 termcap/ncurses를 쓰지 않는 것으로 보이는데, 터미널 처리를 직접 하고 있는지 궁금함- Chawan은 사실 ncurses를 쓴 적이 없고 termcap만 썼음. ncurses가 termcap도 구현하고 있을 뿐임
처음에는 w3m을 통해 이미 익숙했기 때문에 termcap으로 시작했음. 하지만 termcap은 오래된 인터페이스이고, 현대 터미널에서 유일하게 유용한 속성인 트루컬러를 설명할 수 없음. 장점이라고는 “80년대 하드웨어 터미널에서 우연히 동작할지도 모른다” 정도였는데, 멋지긴 해도 추가 실패 모드를 감수할 정도는 아니었음
그래서 terminfo로 옮기는 대신, 이미 다른 이유로도 필요했던 터미널 질의 기반으로 완전히 바꿨음. XTerm과 호환되지 않는 것으로 알려진 TERM 값을 감지하기 위해 내장 터미널 데이터베이스는 아직 있음. 하지만 질의에 올바르게 응답하는 터미널이라면 TERM 값이 알려져 있지 않아도 바로 동작함
- Chawan은 사실 ncurses를 쓴 적이 없고 termcap만 썼음. ncurses가 termcap도 구현하고 있을 뿐임
-
Termux에서 HN이 첫 시도에 로드되는 걸 보고 입이 벌어졌음. 멋진 작업임
- 관심 있다면 HN용 사용자 스타일을 여기에 올려뒀음:
https://lists.sr.ht/~bptato/chawan-devel/%3CD9S40OS2QWHL.PXQ...
주로 투표 화살표를 고치기 위한 것임. 지금은 background-image가 자리표시자만 렌더링하기 때문임
- 관심 있다면 HN용 사용자 스타일을 여기에 올려뒀음: