프로젝트 소개

mTerm은 Swift로 작성된 네이티브 macOS 터미널 에뮬레이터로, 창에는 AppKit을, 터미널 뷰에는 Metal 렌더러를 사용합니다. Mac 네이티브한 느낌, GPU급 렌더링, 그리고 방대한 환경설정 대신 의도적으로 작은 기능 집합을 원하는 개발자를 위한 iTerm2의 대안으로 자리매김합니다. AI 기능, 클라우드 계정, 셸 재설계는 명시적으로 배제합니다. 렌더링과 터미널 에뮬레이션 터미널 뷰는 픽셀 스냅된 글리프 아틀라스를 사용해 Metal로 렌더링되며, GPU 필터링 흐림 없이 모든 크기에서 텍스트를 선명하게 유지하는 것을 목표로 합니다. 굵게와 기울임은 합성된 기울기가 아니라 폰트의 실제 자형을 사용하고, 어드밴스 폭이 동일해 열이 정렬됩니다. 밑줄, 흐리게, 반전 속성을 지원하며 이를 해제하는 코드도 포함합니다. 크기 조절 시 버퍼가 재배치됩니다. 줄바꿈된 줄은 다시 합쳐지고 새 너비에 맞게 다시 나뉘며, 드래그하는 동안 그리드 크기 표시가 나타납니다. 호환성은 vim, neovim, htop, fzf, less, git 페이저 같은 도구를 위해 xterm-256color를 목표로 합니다. 24비트 트루 컬러, 대체 화면, 스크롤 영역(DECSTBM), DEC 선 그리기, 동기화 출력(DEC 2026)을 지원합니다. 마우스 보고는 클릭, 드래그, 이동, 휠에 대해 SGR(1006)과 레거시 인코딩을 포함하며, ⇧를 누르면 대신 선택합니다. 브래킷 붙여넣기, 포커스 이벤트, 장치/커서 위치 보고도 포함됩니다. 동아시아 및 전각 문자는 두 열을 차지하고, 결합 문자는 앞 글리프에 합성됩니다. 탭, 탐색, 명령 허브 AppKit 창에는 드래그로 순서를 바꿀 수 있는 탭 사이드바가 있고, 전체 화면을 지원하며, 세션(탭, 해당 디렉터리, 프로필)을 복원합니다. ⌘K는 모든 창의 모든 탭과 모든 메뉴 막대 명령을 하나의 목록으로 순위를 매겨 보여주는 허브를 엽니다. 탭 행은 인덱스, 실행 상태, 제목, 디렉터리, 포그라운드 프로세스를 표시합니다. 빈 쿼리는 최근 탭을 이전 탭이 선택된 상태로 나열하므로 ⌘K ⏎로 되돌아갈 수 있고, ⌘⌫는 강조된 탭을 닫습니다. 작업은 사용자가 떠올릴 법한 단어로 검색할 수 있습니다. 예를 들어 Clear Screen에는 "cls", 획 두께에는 "blurry"로 검색하면 해당 컨트롤에 포커스 링이 있는 상태로 설정이 열립니다. 셸 통합과 tmux zsh, bash, fish용 셸 통합은 OSC 133을 사용해 종료 상태에 따라 색이 지정되는 거터 프롬프트 마커와 ⌘↑ / ⌘↓ 프롬프트 점프를 추가합니다. 사용자 rc 파일을 수정하지 않고, 대신 각 셸에 래퍼(zsh는 ZDOTDIR, bash는 --rcfile, fish는 vendor_conf.d 스니펫)를 제공해 실제 시작 파일을 먼저 소스합니다. tmux 제어 모드를 지원합니다. tmux -CC를 실행하면 각 tmux 창이 실제 mTerm 탭이 되고, ⌘T와 ⌘W가 tmux 창 생성과 닫기에 매핑되며, 이름 변경과 창 전환이 양방향으로 tmux를 따릅니다. 탭은 해당 창의 활성 팬을 표시합니다. 한 번에 하나의 세션이며, 분리하면 탭이 종료됩니다. 링크, 트리거, 프로필 ⌘-클릭으로 링크를 엽니다. URL은 브라우저로 가고 파일 경로는 Finder에서 보입니다. 링크는 ⌘를 누른 채 포인터가 위에 있을 때까지 시각적으로 구분되지 않으며, 그때 링크가 테마 강조 색과 밑줄을 띠고 커서가 손 모양이 됩니다. 디스크에 존재하는 경로만 제공되고, 여러 행에 걸친 URL은 하나의 주소로 취급됩니다. ⌘-클릭은 인라인 코드나 인용된 초안처럼 색으로 구분된 텍스트를 복사할 수도 있으며, 텍스트와 문자 수를 보여주는 확인이 표시됩니다. 트리거는 정규식과 동작을 결합합니다. 강조, 색 변경, 밑줄, URL로 열기, Finder에서 보기, 또는 $1을 매치로 사용해 명령 실행. 설정에서 인라인 테스터와 함께 편집되며 triggers.json에 저장됩니다. 사용자 규칙은 URL과 파일 경로에 대한 두 가지 내장 규칙보다 먼저 시도되며, 내장 규칙은 비활성화할 수 있지만 편집할 수는 없습니다. 프로필은 이름이 있는 명령, 시작 디렉터리, 환경, 선택적 고정 테마를 정의하며 profiles/ 아래에 각각 하나의 JSON 파일로 저장되어 공유하거나 커밋할 수 있습니다. File > New Tab with Profile 또는 ⌘⌥1–9로 열리고, ⌘T는 기본 프로필을 사용합니다. 설정, 테마, 구성 설정 창에는 Appearance, Profiles, Triggers, General, Notifications 창이 있고, 이름이나 구어체 설명으로 컨트롤을 찾는 검색 필드가 있습니다. 테마에는 Tomorrow Night, Solarized(라이트 및 다크), Nord, Dracula, Gruvbox Dark, mTerm 자체의 라이트와 다크가 있으며, iTerm2 .itermcolors 파일 가져오기와 자동 라이트/다크 전환을 지원합니다. 폰트 패밀리, 크기, 획 두께, 줄 간격(1.0×–2.0×, 기본 1.15×)을 실시간으로 조정할 수 있습니다. 스크롤백 깊이는 1k에서 100k 줄까지 구성 가능하며 탭별 비용이 표시됩니다. macOS 알림은 터미널 주의 이벤트(bell, OSC 9 / OSC 777)를 다룹니다. 실행 중인 포그라운드 프로세스에 대한 닫기 확인과 Clear Screen 확인은 토글할 수 있습니다. 구성은 ~/Library/Application Support/mTerm/ 아래 settings.json, state.json, profiles/*.json, triggers.json에 있습니다. v1에는 별도의 구성 파일이 없습니다. 설치와 상태 설치는 Homebrew cask(brew install --cask d0x2a/tap/mterm), 서명 및 공증된 유니버설 DMG, 또는 macOS 14+와 Xcode 15+(또는 Swift 5.10+ 명령줄 도구)로 소스에서 swift run -c release mTerm으로 빌드하는 방식입니다. 프로젝트는 v1.3.1이며 SPEC.md의 완료 정의에 있는 모든 항목이 출시되었다고 밝힙니다. 스크롤백 메모리 목표는 여유를 두고 충족되지만 처리량은 사양의 이상적인 수치에 미치지 못한다고 보고하며, 측정값과 하네스 모두 docs/BENCHMARKS.md에 문서화되어 있습니다. 라이선스는 MIT이며 저작권은 Dox2A Labs LLC입니다.