ezterm은 WezTerm을 포크해 마우스만으로도 정리가 끝나는 터미널을 목표로 편의 기능을 덧붙인 GPU 가속 터미널 에뮬레이터입니다. WezTerm의 설정·Lua API·멀티플렉서는 그대로 쓸 수 있고, 그 위에 파일 매니저, 워크스페이스 사이드바, 자동 빌드·릴리즈 파이프라인이 추가되어 있습니다.
원본 WezTerm README는 README-WEZTERM.md에 그대로 보존되어 있습니다.
왼쪽에 워크스페이스 사이드바, 오른쪽에 파일 매니저가 기본으로 열린 모습. 둘 다 창 크롬처럼 항상 제자리에 있고, 우클릭 메뉴와 드래그로 탭·페인·워크스페이스를 정리할 수 있습니다.
| 채널 | 설명 |
|---|---|
| Nightly | main에 머지될 때마다 자동 갱신. 릴리즈 설명에 빌드 번호·날짜·커밋이 표시됩니다. |
| 릴리즈 | 마일스톤마다 태그된 버전. 최신은 v0.2.0(컨텍스트 메뉴, 탭·페인 드래그, 사이드바 기본 표시). |
Linux(.deb, .tar.xz / Ubuntu 22.04 기준 빌드), macOS(유니버설 .zip), Windows(.zip, 설치 프로그램 .exe)를 제공합니다. 각 파일에는 .sha256 체크섬이 함께 올라갑니다. macOS 빌드는 서명되어 있지 않으므로 처음 실행 시 우클릭 → 열기가 필요할 수 있습니다.
현재 탭 오른쪽에 토글식 사이드바로 열리는 파일 매니저입니다.
- 로컬 페인은 로컬 파일시스템을, SSH 도메인 페인은 이미 맺어진 SSH 세션의 SFTP 채널로 원격 파일시스템을 탐색합니다 (비밀번호 재입력 없음).
- 페인의 현재 디렉터리(OSC 7 또는 포그라운드 프로세스의 cwd)에서 시작합니다.
d다운로드 ·u업로드: OS 기본 파일 대화상자로 저장 위치/업로드할 파일을 고릅니다. macOS에서는 앱 내부에서 실행되는 진짜NSOpenPanel/NSSavePanel이라 터미널 창에 붙어서 뜹니다 (Windows는 내장 대화상자, Linux는zenity/kdialog; 없으면 경로 입력·다운로드 폴더로 대체). 전송 진행률 표시.- 로컬 페인에서는 메뉴의 "Go to folder..."로 폴더 선택 대화상자를 열어 바로 이동할 수 있습니다.
- vi 스타일 뷰어: 파일을 열면
j/k,Ctrl-d/u,g/G,/검색,n/N,q로 보는 읽기 전용 페이저. 원격 파일도 SFTP로 바로 읽습니다. - 마우스: 휠 스크롤, 클릭 선택, 선택 항목 재클릭으로 열기, 우클릭 = 뒤로, 휠 클릭 = 앞으로 (브라우저식 히스토리).
m또는 Shift/Ctrl+우클릭: 열기/보기, 다운로드, 업로드, 이름 변경, 삭제, 상위, 뒤로/앞으로, 새로고침, 닫기 액션 메뉴.F2이름 변경,Delete삭제(확인 후; 디렉터리는 비어 있을 때만). 로컬·원격(SFTP) 모두 지원.
상단 탭바처럼 창 크롬의 일부로 그려지는 왼쪽 세로 바입니다. 페인이 아니라서 탭·워크스페이스를 바꿔도 항상 제자리에 있고, 탭바는 사이드바 옆에서 시작합니다.
- 워크스페이스 이름, 창 개수, 현재 워크스페이스
*표시, 행 번호. - 클릭으로 전환, 더블클릭으로 이름 변경.
- 우클릭 메뉴: 전환, 이름 변경, 워크스페이스에 새 창, 워크스페이스 닫기, 새 워크스페이스, 사이드바 숨기기.
- 워크스페이스 닫기는 항상 확인창을 거칩니다. 닫힐 창/탭/페인 수와 실행 중인 프로그램을 보여주고, 마지막 워크스페이스면 종료됨을 경고합니다.
- 탭을 사이드바 행에 드롭하면 그 워크스페이스로 이동합니다.
- 폭은
config.workspace_sidebar_width = 20(셀 단위).
- 터미널 영역 우클릭 (앱이 마우스를 잡고 있지 않을 때): 링크 열기, 복사/붙여넣기, 복사 모드, 분할(오른쪽/아래), 줌, 페인 닫기, 새 탭, 작업 디렉터리 복사, 파일 매니저, 커맨드 팔레트.
- 탭 우클릭: 활성화, 새 탭, 복제, 이름 변경, 왼쪽/오른쪽으로 이동, 새 창으로 분리, 닫기, 다른 탭 닫기, 오른쪽 탭 닫기.
- 키보드로도 조작 가능(
↑/↓,j/k,Enter,Esc).context-menuLua 이벤트에서false를 반환하면 기본 메뉴를 막을 수 있고, 기본 우클릭 바인딩은DisableDefaultAssignment로 끌 수 있습니다.
Ctrl+Alt(config.pane_drag_modifiers) + 왼쪽 버튼으로 페인을 끌 수 있습니다.- 다른 페인의 가장자리에 드롭하면 그쪽으로 분할, 가운데에 드롭하면 자리 바꾸기.
- 탭에 드롭하면 그 탭으로 이동, 탭바 빈 곳/+ 버튼에 드롭하면 새 탭, 사이드바 행에 드롭하면 그 워크스페이스, 창 밖에 드롭하면 새 창.
- 드롭 영역이 반투명으로 표시되며
Esc로 취소. 자세한 내용은docs/config/pane-drag.md.
- 탭바 안에서 드래그하여 순서 변경 (삽입 위치 표시).
- 창 밖에 드롭하면 포인터 위치에 새 창으로 분리.
- 워크스페이스 사이드바 행에 드롭하면 그 워크스페이스로 이동.
- Shift를 누른 채 다른 탭 위에 드롭하면 그 탭에 합치기(페인들이 분할로 들어감). 탭 메뉴의 "왼쪽/오른쪽 탭에 합치기"도 동일.
- 드래그 중
Esc로 취소. 자세한 내용은docs/config/tab-drag.md.
| 액션 | 동작 |
|---|---|
ShowFileManager |
파일 매니저 사이드바 토글 |
ShowWorkspaceSidebar |
워크스페이스 사이드바 토글 |
SwitchToWorkspaceByIndex(n) |
이름순 n번째(0부터) 워크스페이스로 전환 — 사이드바 번호와 동일 |
ShowContextMenu |
마우스 위치에 컨텍스트 메뉴 (기본: 우클릭) |
DuplicateTab |
같은 도메인·디렉터리로 탭 복제 |
RenameTab |
탭 제목 변경 프롬프트 |
MoveTabToNewWindow |
현재 탭을 새 창으로 분리 |
CloseOtherTabs { confirm } |
현재 탭 외 모두 닫기 |
CloseTabsToTheRight { confirm } |
오른쪽 탭 모두 닫기 |
CopyCurrentWorkingDir |
현재 페인의 작업 디렉터리를 클립보드로 |
설정:
config.workspace_sidebar_default_show = true— 새 창을 열 때 워크스페이스 사이드바를 바로 표시 (기본 켜짐).config.file_manager_default_show = true— 새 탭마다 파일 매니저 사이드바를 바로 표시, 포커스는 쉘에 유지 (기본 켜짐).config.pane_drag_modifiers = "CTRL|ALT"— 페인 드래그 시작 조합키.
모두 커맨드 팔레트(Ctrl+Shift+P)에도 등록되어 있습니다.
local wezterm = require 'wezterm'
local act = wezterm.action
local config = wezterm.config_builder()
config.workspace_sidebar_width = 22
config.keys = {
{ key = 'E', mods = 'CTRL|SHIFT', action = act.ShowFileManager },
{ key = 'B', mods = 'CTRL|SHIFT', action = act.ShowWorkspaceSidebar },
{ key = 'n', mods = 'CTRL|SHIFT', action = act.SwitchWorkspaceRelative(1) },
{ key = 'p', mods = 'CTRL|SHIFT', action = act.SwitchWorkspaceRelative(-1) },
}
-- ALT-1..9 로 워크스페이스 바로 전환
for i = 1, 9 do
table.insert(config.keys, {
key = tostring(i), mods = 'ALT', action = act.SwitchToWorkspaceByIndex(i - 1),
})
end
return configmacOS는 "전체 디스크 접근" 같은 권한을 앱의 코드 서명 정체성에 묶어 기억합니다. ezterm의 공개 빌드는 Apple Developer ID로 서명되어 있지 않아(ad-hoc 서명), 새 빌드를 받을 때마다 다른 앱으로 인식되어 권한을 다시 묻습니다. 정식 WezTerm과 구분되도록 번들 ID는 com.github.ez2k.ezterm을 씁니다.
- 임시 대처: 새 빌드를 설치한 뒤 시스템 설정 → 개인정보 보호 및 보안 → 전체 디스크 접근에서 기존 ezterm 항목을 지우고 다시 추가하면 그 빌드를 쓰는 동안은 프롬프트가 멈춥니다.
- 근본 해결: Apple 개발자 계정이 있으면 리포 Secrets에
MACOS_CERT(Developer ID Application .p12를 base64),MACOS_CERT_PW(p12 비밀번호를 base64),MACOS_TEAM_ID, 공증용MACOS_APPLEID,MACOS_APP_PW(앱 암호)를 넣으세요. 이후 빌드는 자동으로 서명·공증되고 권한이 버전 간에 유지됩니다.
.github/workflows/release.yml 하나가 Linux/macOS/Windows를 빌드합니다.
main푸시 → 3개 플랫폼 빌드 후nightly릴리즈의 에셋과 설명(빌드 번호·날짜·커밋)을 교체합니다.- 버전 릴리즈는 다음 중 하나로 만듭니다: 리포 루트의
.release-version파일을 새 버전(예:v0.2.0)으로 바꿔 머지, Actions에서version입력과 함께 수동 실행, 또는v*태그 푸시. 릴리즈 제목에 빌드 날짜·번호가 붙고 릴리즈 노트는 자동 생성됩니다. - 별도 시크릿 없이
GITHUB_TOKEN만으로 동작합니다. 업스트림의gen_*워크플로는 이 포크에서 릴리즈를 만들지 않습니다.
./get-deps # 시스템 의존성 (Linux/macOS)
cargo build --release -p wezterm -p wezterm-gui -p wezterm-mux-server
cargo run -p wezterm-gui # 개발 중 바로 실행포크에서 추가된 코드는 주로 wezterm-gui/src/overlay/file_manager.rs, wezterm-gui/src/termwindow/render/workspace_sidebar.rs, config/src/keyassignment.rs에 있습니다. 문서는 docs/config/lua/keyassignment/ 아래에 액션별로 있습니다.
완료: 우클릭 컨텍스트 메뉴(터미널·탭·사이드바·파일 매니저), 워크스페이스 닫기 확인창, 탭 드래그(순서 변경·새 창 분리·워크스페이스 이동). 페인 드래그(분할·교체·탭/워크스페이스/새 창 이동), 탭 합치기, 파일 매니저 삭제/이름 변경. 이후 후보: 세션 복원, 드롭다운(Quake) 모드, 명령 완료 알림, 키 바인딩 치트시트.
WezTerm은 @wez가 만든 프로젝트이며 ezterm은 그 위에 얹힌 포크입니다. 라이선스는 원본과 동일하게 LICENSE.md를 따릅니다. WezTerm 자체에 대한 문서와 지원 채널은 https://wezterm.org/ 를 참고하세요.