kitty 0.50, 타일 밖에 붙는 도크 창과 로그아웃 후 복원
버전 0.50
요약
kitty 0.50 은 도크 창을 타일 계산 밖으로 빼고, 로그아웃 뒤에도 스크롤백까지 복원하며, Wayland 터치 입력도 받아들인다.
추천- 이름
- kitty
- 버전
- 0.50
- 요금
- 무료
- 오픈소스
- 오픈소스
- 운영체제
- LinuxmacOS
- 업데이트
- 2026-11-10 23:00
kitty 는 Kovid Goyal 이 관리하는 터미널 에뮬레이터로, 글자를 OpenGL 로 그리며 Linux 와 macOS, 일부 BSD 계열에서 돌아간다. 라이선스는 GPL-3.0 이다. 분할, 탭, 세션 파일, 자체 이미지 규약, 스크립트가 부를 수 있는 원격 제어까지 모두 터미널 안에서 해결하는 것이 이 프로그램의 방식이고, 바깥에 창 관리자를 얹는 전제가 없다. 2026 년 11 월 3 일에 판이 0.50 이 되었다.
격자 밖으로 꺼낸 사이드바
터미널 안에서 쓸 만한 개발 화면을 만들려면 옆 목록과 상태 줄이 필요하다. 예전 해법은 분할이었다. 디렉터리 트리와 로그, 테스트 창을 같은 격자에 밀어 넣는다. 문제는 이 격자가 통째로 다시 계산된다는 점이다. 본 영역이 넓어지면 가장자리 칸은 몇 글자 폭으로 눌린다.
0.50 의 도크 창은 다른 길을 택한다. 도크 창은 타일 영역 밖에 놓이고, 호스트 창이나 탭 전체의 한쪽 변에만 붙어 타일 계산에 들어가지 않는다. 창 단위는 launch --type=window-dock, 탭 단위는 launch --type=tab-dock 으로 만들고, --dock-edge 가 변을, --dock-size 가 폭을 정한다.
수명은 둘이 다르다. 창 단위 도크는 호스트를 따라 탭을 옮겨 다니고 호스트가 닫히면 함께 끝난다. 탭 단위 도크는 그 탭의 마지막 일반 창이 닫힐 때까지 남는다. 도크 관계는 세션 파일에도 기록되므로 다음에 세션을 열면 사이드바이 원래 변으로 돌아온다.
이 변경이 실제로 바꾸는 것은 옆 목록이 더 이상 한 칸이 아니라는 사실이다. 칸은 읽고 있는 것의 자리를 빼앗지만, 도크는 작업 영역이 늘고 줄어도 폭을 지키는 붙박이 가구다. 창이 많은 터미널과 배치가 있는 터미널의 차이가 여기에 있다.

로그아웃을 넘어 이어지는 세션
새 스위치 restore_session_after_logout 이 이 일을 맡는다. 켜 두면 로그아웃, 재부팅, 종료 시점에 각 인스턴스의 OS 창과 탭, 창, 되감기 내용까지 저장하고 다음 시작에서 그대로 펼친다. macOS 에서는 저장한 상태를 키체인의 열쇠로 암호화한다. Linux 에서는 데스크톱 포털의 Inhibit 인터페이스가 있어야 세션이 접히기 전에 기록을 마칠 시간을 얻는다.
세션 파일의 항목도 늘었다. os_window_position 은 운영체제 창의 위치를 기록하고, save_as_session --os-window-geometry 는 크기와 위치, 상태를 함께 저장한다. 예전에는 창 안쪽 배치까지만 되살릴 수 있었는데, 이제는 창이 어느 화면에 있었는지도 되돌린다.
탭이 작업 공간에 한 걸음
작은 구멍이 세 개 열렸다. launch --focus-existing 은 사본을 열지 않고 이미 있는 창이나 탭으로 옮겨 간다. launch --location by-title 은 탭을 제목의 알파벳 순으로 정렬한다. detach-window 명령과 detach_window 동작은 창을 이름 붙은 탭으로 보내고, 그 탭이 없으면 그 자리에서 만든다. 셋을 합치면 탭은 셸을 더 여는 자리에서, 일마다 이름을 붙여 창을 주고받는 칸이 된다.
그렇다고 문서 작업 공간이 된 것은 아니고, kitty 도 그런 척하지 않는다. 부품의 목적은 배치를 스크립트에 맡기는 것이다. 일 탭을 열고, 로그 창을 그리로 보내고, 이미 돌고 있는 것에 초점을 준다. 원격 제어는 원래 자동화를 위한 장치였고, 이 세 가지 플래그는 변명의 여지를 조금 줄인다.

탭 줄에서 보이는 작업 상태
Program Status Protocol 은 이스케이프 시퀀스 OSC 7501 로 온다. 프로그램이 working, finished, failed, blocked 중 무엇인지 알리면, tab_title_template 에서 tab.program_status 를 읽는 순간 상태가 탭 줄에 나온다. 긴 빌드 중에 창을 하나씩 열어 볼 필요가 없고, 줄을 한 번 보면 입력을 기다리며 멈춘 탭이 보인다.
커서 뒤로 끌리는 입자
사용자 셰이더는 0.49 가 깔아 둔 길이고, 0.50 은 그 위에 궤적 세 개를 얹었다. cursor-trail-railgun, cursor-trail-torpedo, cursor-trail-pixiedust 이다. 궤적을 켜면 커서가 움직일 때마다 뒤로 입자가 흩어진다. 셰이더는 키 조합으로도 깨울 수 있게 되었고, 그 일을 새 shader_event 동작이 맡는다. 셰이더 안에서 pointer_map() 을 정의하면 클릭과 선택이 밀린 좌표가 아니라 실제로 그려진 글자에 떨어진다.
색 배치를 따라가는 그림
그래픽 규약에 인덱스 색 형식이 두 가지 늘었다. 픽셀 값이 고정된 색이 아니라 터미널 색판의 번호가 된다. 색 배치를 바꾸면 그림도 함께 바뀌고, 이미지를 다시 만들 필요가 없다.

Wayland 에서 손가락으로
Wayland 쪽은 더 촘촘해졌다. 0.50 은 터치스크린을 받아들인다. 가볍게 대면 클릭, 손가락을 움직이면 관성으로 스크롤, 누른 채 끌면 글자를 고른다. GNOME 같은 컴포지터에서 클라이언트 측 창 장식은 원래 양식을 흉내 내어 제목 줄 글꼴, 글자 확대율, 단추 위치와 누름 동작까지 데스크톱을 따른다. 입력기 후보 창은 변환 전 글자의 시작에 고정되어 타자를 칠 때 더 이상 뛰지 않는다.
작지만 매일 닿는 곳
새 항목 collapse_window_margins 는 이웃한 창의 바깥 여백을 더하지 않고 합친다. 테두리가 맞고 간격이 마침내 고르게 보인다. mouse_map 은 이제 휠도 연결한다. 위아래좌우 네 방향이 각각 하나의 단추로 세어지므로, Ctrl 을 누른 채 휠로 글자 크기를 바꾸는 배정이 설정 한 줄로 끝난다. 상자 그리기 문자와 커서, 제목 줄 테두리의 굵기는 글자 크기에 맞춰 조절되므로, 글자를 키워도 선이 머리카락처럼 얇아지지 않는다.
고친 곳
0.50 은 빠져나갈 구멍 하나를 막았다. 조작한 요청이 비동기 요청의 취소인 척하여 원격 제어의 암호를 통과할 수 있었다. 그 명령 묶음의 해석기도 다시 썼다. action, send-key, set-colors, ls, run 은 그동안 항목을 무시하고, 일어나지 않은 성공을 알리고, 잘못된 입력을 조용히 삼켰다. 이제는 규칙대로 오류를 돌려주고, 응답하지 않는 상대 하나가 통로 전체를 막지도 않는다. 메모리 안전에서는 설정을 다시 읽을 때의 힙 버퍼 넘침과 경계 밖 쓰기, 해제 후 사용을 고쳤다.
속도도 움직였다. GPU 스프라이트 캐시가 느리게 불어나고, input_delay 가 영이 아닐 때 CPU 사용도 낮아진다. 함께 고친 것으로는 굵은 기울임 기호가 무관한 글꼴로 그려지던 것, ssh kitten 이 디렉터리를 복사할 때 권한을 잃던 것, 끌어 놓기가 디렉터리를 자기 하위로 옮기던 것이 있다. 모두 데이터를 실제로 잃을 수 있는 부류다.
어디서 돌아가나
kitty 는 Linux 와 macOS, BSD 일부를 덮는다. Windows 는 원래 지원 대상이 아니고, WSL2 안에서 Linux 판을 돌리는 형태가 된다. 개발은 Kovid Goyal 이 혼자 이끌며 주기가 짧다. 0.49 가 9 월 21 일, 0.50 은 그로부터 한 달 남짓 뒤에 왔다.
0.50 의 의미는 셰이더 몇 개가 아니다. 도크 창이 '배치'와 '붙박이 사이드바'을 다른 것으로 나눈 데 있다. 터미널을 진짜 작업 공간으로 만들려면 다시 정렬되지 않는 창을 허용해야 한다. 로그아웃 뒤 복원은 그 생각을 한 세션에서 전원을 끄고 다시 켜는 사이로 늘린다.