tmui
tmux를 위한 터미널 UI. 오픈소스(MIT)입니다. 세션, 윈도우, pane과 그 출력을 한 화면에서 보며, 다른 것은 아무것도 띄우지 않아도 됩니다.
tmui는 tmux를 위한 터미널 UI입니다. tmux 서버의 세션, 윈도우, pane을 한 화면에 보여 주고, 만들고 이름을 바꾸고 나누고 없앱니다. 어떤 pane의 출력이든 읽을 수 있고, 세션에 붙었다가 떼면 tmui로 돌아옵니다. tmux와 직접 이야기하므로 어떤 tmux 설정에서도 동작하고, st도 계정도 필요 없습니다. 오픈소스(MIT)이며 저장소는 sophonz-labs/tmui입니다. 지금 릴리스는 v0.2.2입니다.
무엇을 쓰나
tmui, stui, st ui는 생김새가 비슷하고 키도 같습니다. 필요한 것과 닿는 범위가 다릅니다.
| 누구를 위한 것 | 보여 주는 것 | 다른 장치와 폰 | 필요한 것 | |
|---|---|---|---|---|
| tmui (MIT) | tmux를 쓰는 누구나 | 세션, 윈도우, pane, 출력, 플러그인 | 없음 | tmux |
| stui (Apache-2.0) | 한 장치에서 코딩 에이전트를 돌리는 사람 | tmui의 화면에 더해 에이전트 상태, 오케스트레이션 런, CI, 요금제 한도 | 없음, 이 장치만 | tmux, CI에는 gh |
| st ui | st 사용자 | stui의 화면에 더해 계정의 모든 장치와 장치의 볼트 | 있음, st와 앱을 거쳐 | 장치에서 공유 중인 st |
설치
curl -fsSL https://dl.sophonz.io/tmui/install.sh | sh스크립트는 SHA-256을 확인한 뒤 tmui를 ~/.local/bin에 둡니다. TMUI_INSTALL_DIR로 다른 곳에 두고, TMUI_VERSION=v0.2.2로 릴리스를 고정합니다. Go가 있으면 go install github.com/sophonz-labs/tmui@latest도 됩니다. 릴리스 페이지에는 macOS와 Linux(amd64, arm64)용 tmui-<os>-<arch>.tar.gz와 checksums.txt가 있습니다.
tmui upgrade는 같은 방식으로 SHA-256을 확인하고 최신 릴리스로 바꿉니다(--check는 새 릴리스가 있는지만 말하고, --version vX.Y.Z는 그 판을 설치합니다). Homebrew가 설치한 tmui는 건드리지 않고 brew upgrade tmui를 실행하라고 알려 줍니다.
tmux 3.0 이상이 PATH에 있어야 하고(팝업으로 붙으려면 3.2), macOS나 Linux에서 동작합니다.
사용하기
tmui # 지금 들어 있는 서버, 아니면 기본 서버
tmui -L work # 소켓 이름이 "work"인 서버 (tmux -L과 같습니다)
tmui -S /tmp/my.sock # 소켓 경로의 서버 (tmux -S와 같습니다)세션 목록에서 시작합니다. enter는 한 단계 아래로(세션, 윈도우, pane, pane의 출력), esc는 위로 돌아옵니다. ?는 모든 키를 보여 줍니다.


| 키 | 어디서 | 하는 일 |
|---|---|---|
j k, g G, ctrl-b ctrl-f | 어디서나 | 이동, 맨 위와 맨 아래, 한 페이지 |
enter, esc | 어디서나 | 줄 안으로, 뒤로(또는 필터 지우기) |
/ | 목록, 출력 | 줄 거르기. 출력에서는 검색(n N으로 다음과 이전) |
a | 세션, 윈도우, pane | 붙기(아래 참고) |
n, R | 세션, 윈도우 | 새로 만들기, 이름 바꾸기 |
s v | pane | 아래로 나누기, 오른쪽으로 나누기 |
ctrl-d | 세션, 윈도우, pane | 없애기(먼저 묻습니다) |
ctrl-r | 어디서나 | 지금 새로 읽기(2초마다 새로 읽습니다), 설정 다시 읽기 |
ctrl-e | 어디서나 | 머리글 켜고 끄기 |
: | 어디서나 | :sessions, :windows, :panes, :ext, :config, :logo, :headless, :tmux <인자>, :q |
:tmux <인자>는 같은 서버에서 tmux 명령을 실행합니다. 예를 들어 :tmux new-window -d -n logs처럼 씁니다. 출력은 페이저로 열립니다.
복사하기
마우스로 고르면 테두리와 칸까지 같이 잡히므로, tmui는 내용만 일반 텍스트로 복사합니다.
y는 줄의 값을 복사합니다. 세션은 이름, 윈도우는session:index, pane은 id, 플러그인 줄은url입니다.Y는 줄 전체를 탭으로 구분해 복사합니다.- pane 출력에서
v는 줄을 고르고(jkgG로 넓힘),y는 고른 부분을, 고른 것이 없으면 출력 전체를 복사합니다. z는 테두리 없이 출력만 보여 주어 터미널의 마우스 선택을 쓸 수 있게 합니다.esc로 돌아옵니다.
텍스트는 터미널의 클립보드(tmux 밖에서는 OSC 52, 안에서는 tmux 붙여넣기 버퍼)와, pbcopy·wl-copy·xclip·clip.exe가 있으면 이 장치의 클립보드로 갑니다.
붙었다가 돌아오기
붙기 전에 tmui가 실제 prefix 키로 돌아오는 법을 알려 줍니다. 예를 들면 attaching to web — C-b d comes back to tmui입니다.
- tmux 밖에서는
tmux attach를 실행합니다. 떼면(prefix d) tmui로 돌아옵니다. - tmux 3.2 이상 안에서는 세션을 화면 크기의 팝업으로 엽니다.
prefix d로 팝업이 닫히고 tmui는 그대로 있습니다. - 그보다 오래된 tmux 안에서는 클라이언트를 전환합니다.
prefix L이나prefix s로 돌아옵니다.
플러그인
플러그인은 다른 CLI를 들여옵니다. 그 출력을 tmui의 표로 보여 주고, 그 명령을 키와 : 줄에 붙입니다. 플러그인은 JSON 파일이고 tmui와 stui가 같은 파일을 읽습니다. 지금 있는 플러그인과 만드는 법은 tui-plugins 페이지에, 형식은 SPEC.md에 있습니다.
tmui ext install gh-prs # 실행할 명령을 모두 보여 주고 먼저 묻습니다
tmui ext install ./my-plugin # plugin.json이 든 디렉터리, 또는 그 파일의 경로나 URL
tmui ext list
tmui ext remove gh-prsgh-runs를 설치하면 커서가 있는 pane의 저장소에서 GitHub Actions 런을 엽니다.

tmui 자신의 키와 명령이 늘 우선합니다. 그와 겹치는 플러그인 키는 빠지고, :ext가 그렇다고 알려 줍니다.
설정
설정은 $XDG_CONFIG_HOME/tmui/config.yaml(기본은 ~/.config/tmui/config.yaml)에 둡니다. 파일이 없으면 기본값을 씁니다. 쓸 수 없는 키나 값은 상태 줄과 :config에 경고로 나옵니다. 파일이 바뀌면 다시 읽습니다.
tmui config # 지금 적용된 설정과 각각이 어디서 왔는지
tmui config edit # $EDITOR로 엽니다. 없으면 모든 기본값을 주석으로 담아 만듭니다| 키 | 기본값 | |
|---|---|---|
ui.logo | true | 머리글 오른쪽 위의 로고 |
ui.headless | false | 머리글을 아예 두지 않습니다. ctrl-e로 잠시 켜고 끕니다 |
ui.color | true | false면 색 없이 그립니다(NO_COLOR와 같습니다) |
refreshRate | 2s | tmux를 다시 읽는 간격, 500ms 이상 |
startView | sessions | sessions, windows, panes |
plugins.enabled, plugins.disabled | true, [] | 플러그인을 하나도 불러오지 않거나, 이름으로 몇 개를 뺍니다 |