Guide

tmux & Mosh

tmux Mouse Mode 통합, 안정적인 연결을 위한 Mosh, Live Activities

tmux & Mosh

MTerm은 tmux와 깊이 통합되고 Mosh 프로토콜을 네이티브로 구현해서, 원격 세션 관리를 위한 두 가지 강력한 도구를 제공해요. 이 가이드에서는 둘 다 어떻게 작동하는지, 최대한 활용하는 방법을 다뤄요.


tmux 통합

원격 서버에서 tmux를 사용한다면, MTerm은 터미널 안에서 실행되는 별도 도구가 아닌 앱의 네이티브 기능처럼 느끼게 해줘요.

Mouse Mode 자동 감지

MTerm은 tmux의 Mouse Mode가 활성화되어 있는지 자동으로 감지하고 터치 제스처를 적절한 마우스 이벤트로 변환해요. MTerm 측에서 별도의 설정은 필요 없어요 — ~/.tmux.conf에 다음이 포함되어 있는지만 확인하세요:

set -g mouse on

이 설정이 활성화되면 터치 상호작용이 tmux 동작에 직접 매핑돼요:

  • tmux Pane을 해서 포커스를 전환
  • 터치 또는 트랙패드로 스크롤해서 tmux 히스토리를 탐색

세 가지 Mouse Mode 설정

MTerm 설정에서 이 동작을 제어할 수 있어요:

모드동작
Auto (기본값)tmux의 Mouse Mode가 활성화된 경우에만 마우스 이벤트를 전송해요. Mouse Mode가 꺼져 있으면 스크롤은 MTerm의 자체 스크롤 버퍼를 사용해요.
항상 ONtmux에 항상 터치 이벤트를 전달해요, Mouse Mode가 명시적으로 활성화되지 않아도요. 모든 스크롤과 탭 상호작용이 tmux로 직접 가길 원할 때 유용해요.
Offtmux에 마우스 이벤트를 전송하지 않아요. 모든 스크롤은 MTerm의 로컬 스크롤 버퍼를 사용해요.

Alternate Screen 자동 감지

MTerm은 터미널이 Alternate Screen 모드에 진입하는 것을 감지해요 (Vim, less, htop, tmux 자체 등의 애플리케이션이 사용). 이것은 스크롤 동작에 영향을 줘요 — Alternate Screen이 활성화되면 스크롤이 MTerm의 로컬 버퍼 대신 실행 중인 애플리케이션으로 전달돼요.

tmux 세션 및 Window 관리

MTerm이 tmux 마우스 이벤트를 네이티브로 처리하기 때문에 다음이 가능해요:

  • 상태 바의 tmux Window 탭을 탭해서 Window 전환
  • tmux Pane을 탭해서 포커스 전환
  • 개별 tmux Pane 안에서 스크롤
  • Pane 테두리를 드래그해서 tmux의 마우스 기반 Pane 크기 조절 사용

OSC 1212 Handler

MTerm은 tmux와 앱 간의 Context Sharing과 알림을 위한 OSC 1212 Escape Sequence Handler를 구현해요. 이를 통해 tmux가 상태 변경을 MTerm에 전달할 수 있는 고급 통합 시나리오가 가능해져요.


Mosh 연결

Mosh (Mobile Shell)는 모바일 기기에서 SSH를 사용할 때 가장 큰 불만 중 하나인 끊어지는 연결을 해결해요. 표준 TCP 기반 SSH는 네트워크가 변경되는 순간 끊겨요 — Wi-Fi에서 셀룰러로 전환, Access Point 사이 이동, 또는 짧은 네트워크 중단. Mosh는 이 모든 것을 우아하게 처리해요.

Mosh의 작동 방식

지속적인 TCP 연결을 사용하는 SSH와 달리 Mosh는 UDP를 사용해요. 이것은:

  • 네트워크 변경이 보이지 않아요. Wi-Fi에서 셀룰러로, 다시 Wi-Fi로 전환해도 세션이 끊기지 않아요.
  • 짧은 중단이 자동으로 처리돼요. 몇 초(또는 몇 분) 동안 연결이 끊겨도 Mosh가 상태를 잃지 않고 재연결해요.
  • 더 낮은 지연 시간. Mosh는 로컬에서 키 입력을 예측하고 즉시 표시하며, 예측이 틀리면 나중에 수정해요. 높은 지연 시간 연결에서도 타이핑이 반응성 있게 느껴져요.
  • 멈추는 세션이 없어요. TCP 연결은 타임아웃되기 전에 몇 분 동안 멈출 수 있어요. Mosh 연결은 작동하거나 즉시 연결이 끊어졌음을 알려줘요.

Mosh 설정하기

  1. 원격 호스트에 mosh-server를 설치하세요:

    # Ubuntu/Debian
    sudo apt install mosh
    
    # macOS
    brew install mosh
    
    # CentOS/RHEL
    sudo yum install mosh
  2. MTerm에서 호스트 설정을 편집하고 연결 방법을 SSH에서 Mosh로 변경하세요.

  3. 평소처럼 연결하세요. MTerm이 Mosh 세션을 시작하기 위한 초기 SSH 연결을 설정한 후, 실제 터미널 세션은 UDP로 전환해요.

Mosh를 사용할 때

Mosh는 다음과 같은 경우에 이상적이에요:

  • 불안정한 Wi-Fi가 있는 장소에서 작업할 때 (카페, 공항, 기차)
  • 네트워크를 자주 전환할 때
  • 신호 강도가 변하는 셀룰러 데이터를 사용할 때
  • 네트워크 중단에도 유지되길 원하는 장시간 세션을 실행할 때

안정적인 네트워크에서의 안정적인 연결에는 표준 SSH가 잘 작동하며, Port Forwarding 및 기타 TCP 기반 기능을 지원하는 장점이 있어요.

Mosh는 Pro 플랜이 필요해요


Live Activities (잠금 화면 & Dynamic Island)

MTerm은 iOS Live Activities를 사용해서 앱이 백그라운드에 있을 때도 활성 세션에 대한 정보를 제공해요.

잠금 화면 위젯

활성 SSH 또는 Mosh 세션이 있을 때, 잠금 화면에 연결 상태를 보여주는 Live Activity 위젯이 나타나요. 기기를 잠금 해제하거나 앱을 열지 않고도 세션이 연결 중인지, 재연결 중인지, 연결이 끊어졌는지 한눈에 확인할 수 있어요.

Dynamic Island

Dynamic Island가 있는 기기(iPhone 14 Pro 이후)에서 MTerm은 컴팩트한 연결 상태 인디케이터를 표시해요. Dynamic Island를 탭하면 터미널 세션으로 바로 돌아갈 수 있어요.

왜 중요한가요

긴 Claude Code 작업을 실행하면서 이메일을 확인하거나 문서를 읽기 위해 다른 앱으로 전환했을 때, Live Activities를 통해 반복적으로 MTerm으로 돌아가지 않고도 연결을 모니터링할 수 있어요. Webhook 알림과 결합하면 작업이 완료되거나 연결이 끊어질 때 알림을 받을 수 있으므로 안심하고 앱을 떠날 수 있어요.