Trawling

kitty 0.50, 로그아웃·재시작 뒤 터미널 세션 복원

kitty 0.50.0은 로그아웃·재시작·컴퓨터 종료 때 창과 탭, 스크롤백을 저장해 다음 실행 때 복원하는 설정을 추가했습니다. 셸 외 프로그램은 다시 실행하지 않으며, Linux에서는 Inhibit 데스크톱 포털 버전 3이 필요합니다.

본문

터미널 앱 kitty 프로젝트는 11월 3일 공개한 0.50.0에서 restore_session_after_logout 설정을 추가했습니다. 이 설정을 켜면 로그아웃·재시작·컴퓨터 종료 때 실행 중인 kitty 인스턴스의 상태를 저장하고, 다음 실행 때 복원합니다. macOS와 Linux에서 사용할 수 있으며, Linux에서는 세션 상태 감시를 지원하는 Inhibit 데스크톱 포털 버전 3이 필요합니다.

kitty는 기존에도 세션 파일에 창과 탭, 각 창에서 실행할 프로그램, 배치를 지정하는 기능을 제공했습니다. 새 설정은 세션 파일을 미리 작성하지 않아도 각 인스턴스의 상태를 파일로 저장합니다. 여기에는 운영체제 창의 크기·위치·상태와 모든 터미널 창의 스크롤백이 포함됩니다.

다음에 kitty를 실행하면 같은 명령줄 인수로 실행했던 인스턴스의 상태를 복원합니다. 다른 인스턴스는 각각 별도로 다시 실행하며, 원래의 명령줄 인수와 작업 디렉터리, 환경 변수를 사용합니다.

스크롤백은 셸이 시작되기 전에 복원되고, 저장 시각을 보여 주는 한 줄이 표시됩니다. 복원되는 내용은 텍스트와 서식, 하이퍼링크입니다. 셸 이외의 프로그램은 다시 실행하지 않습니다. kitty 문서는 명령이 파일 삭제처럼 이미 효과를 냈을 수 있어 중복 실행을 피하기 위한 것이라고 설명합니다. 따라서 터미널의 텍스트와 화면 배치는 복원되지만, 실행 중이던 편집기나 빌드 프로그램의 프로세스 상태는 이어지지 않습니다.

macOS에서는 kitty 인스턴스마다 별도의 임의 키를 만들고 로그인 키체인에 보관해 저장 상태를 암호화합니다. 저장 상태에는 스크롤백과 환경 변수도 포함됩니다. 복원 후 키를 삭제하므로 디스크나 백업에 남은 데이터는 읽을 수 없게 됩니다. 다만 같은 사용자 권한으로 실행되는 프로세스는 암호화된 데이터도 읽을 수 있습니다. 키체인에 사용자 상호작용이 필요하면 상태를 저장하거나 복원하지 않습니다. 로그인 키체인이 잠겨 있거나, 저장 당시와 다른 개발자가 서명한 kitty를 실행하는 경우가 그 예입니다.

Linux에서는 데스크톱이 세션 종료를 앞두고 알릴 때 상태를 저장하며, 로그아웃이 취소되면 저장 파일을 삭제합니다. 파일은 kitty 캐시 디렉터리에 암호화되지 않은 상태로 저장되며 해당 사용자만 읽을 수 있습니다.

자료: kitty 공식 문서 / 정리·해설: Trawling

참고 자료

오류 제보