WezTerm은 GPU 가속을 지원하는 고성능 터미널 에뮬레이터로, Windows, macOS, Linux 등 다양한 운영체제에서 사용할 수 있다. 개인적으로 더욱 좋은 것은 Lua 기반의 설정을 제공한다는 것이다. 탭/분할 창, 이미지 표시, SSH 멀티플렉싱 등 현대적인 다양한 기능을 제공합니다.
소개 이유
- 빠른 화면 속도
- Lua로 설정
- tmux를 대체할 수 있고 오히려 더 편리한 사용성
- 터미널 내 복사, 붙여넣기, 검색 등의 편리함
- 다양한 테마와 Nerd Font 기본 지원, 폰트 별도 설치 불필요
- 왜 그동안 이걸 몰랐을까? 정말 모던하고 깔끔하고 안정적이고 풍부한 기능 제공
주요 기능
- 크로스 플랫폼 지원: Windows, macOS, Linux.
- GPU 가속: 부드러운 렌더링 성능.
- 탭/분할 창: 다중 작업 환경 지원.
- Lua 설정: 사용자 정의 가능한 테마, 키 바인딩, 동작.
- 이미지/폰트 지원: Sixel, Iterm2 이미지 및 Nerd Fonts.
- SSH 멀티플렉싱: 단일 연결로 다중 세션 관리.
설치
다음 링크에 여러 플랫폼 별 설치법이 나와 있다.
Alpine Linux
$ doas apk add wezterm
- Windows install using Chocolatey
$ choco install wezterm -y
기본 키 매핑
WezTerm에는 이미 많은 기본 키 매핑이 포함되어 있다. 다음은 일부 중요한 기본 매핑들이다:
일반 명령어:
- Ctrl + N: 새 세션 생성
- Ctrl + W: 현재 세션 닫기
- Ctrl + Tab: 활성 세션 전환
- Ctrl + Shift + C: 복사
- Ctrl + Shift + V: 붙여넣기
- Ctrl + /: 현재 컨텍스트 팁 표시
- Ctrl + Q: 전체적인 사용법 안내
창 관리:
- Ctrl + Shift + 화살표: 창 이동
- Ctrl + Alt + 화살표: 창 크기 조절
테마 및 모드:
- Ctrl + Shift + P: 빠른 메뉴 (테마 선택)
- Ctrl + ,: 설정 열기
스크린샷:
- Ctrl + Shift + S: 현재 패널 스크린샷 캡처
기본 설정
설정 파일
- 1차:
$HOME/.config/wezterm/init.lua
- 2차:
$HOME/.wezterm.lua
- 1차:
설정 적용
- wezterm 재실행
- 또는 설정 파일 수정 시 바로 적용
설정 예제
- font: 사용할 폰트를 설정.
- font_size: 폰트 크기를 설정.
- color_scheme: 사용할 색상 테마를 설정.
- window_background_opacity: 배경 투명도를 설정.
- enable_tab_bar: 탭 바의 표시 여부를 설정.
- keys: 사용자 정의 키 바인딩을 설정.
local wezterm = require 'wezterm';
return {
font = wezterm.font("Fira Code"),
font_size = 12.0,
color_scheme = "Dracula",
window_background_opacity = 0.9,
enable_tab_bar = true,
keys = {
{key="t", mods="CTRL|SHIFT", action=wezterm.action{
SpawnTab="CurrentPaneDomain"}
},
{key="w", mods="CTRL|SHIFT", action="CloseCurrentTab"},
},
}
Windows + WSL 환경 설정
- 윈도우즈용
Wezterm
설치 - 작업표시줄에 등록
- 윈도우즈 사용자홈내에
C:\Users\사용자명\.wezterm.lua
다음과 같이 설정 - 아래 예제는 wsl의 Alpine318 리눅스를
wezterm
실행시에 기본 동작하는 예. - 나머지는 개인 취향
-- Pull in the wezterm API
local wezterm = require 'wezterm'
-- This will hold the configuration.
local config = wezterm.config_builder()
--// WSL ALpine Linux 기본 로드
-- This is where you actually apply your config choices
--config.default_prog = {"powershell.exe", "-NoLogo"}
--config.default_prog = {"wsl.exe -d Alpine318"}
-- 아래 wsl을 기본으로 설정하는 방법인데 bash 서브쉘을 여러개 생성한다는 문제가 있다.
--config.default_prog = {"wsl.exe", "-d", "Alpine318", "-e", "bash", "-l", "-c", "cd ~; exec bash"}
-- 다음 방법으로 해결: domain 설정
config.default_domain = 'WSL:Alpine318'
-- 폰트 설정
--config.font = wezterm.font("Your Font Name")
--config.font_size = 10.0
config.font_size = 11.0
--// Window Size 변경 (문자의 종수, 횡수)
config.window_decorations = "RESIZE"
config.initial_cols = 116
config.initial_rows = 58
-- color scheme 설정
--config.color_scheme = 'AdventureTime'
--config.color_scheme = 'Batman'
config.color_scheme = 'Tokyo Night'
--config.color_scheme = 'Catppuccin Mocha'
-- 줄바꿈 처리 설정(Windows에서 WSL 또는 Linux 터미널 사용시)
config.canonicalize_pasted_newlines = "None"
return config
Tab 추가시 확장 설정
$HOME/.wezterm.lua
에 다음 프로파일을 추가한다. (윈도우즈의 경우 사용자 홈 폴더)- 저장하고 wezterm을 재실행한다.
-- Pull in the wezterm API
local wezterm = require 'wezterm'
-- This will hold the configuration.
local config = wezterm.config_builder()
-- This is where you actually apply your config choices
-- config.default_prog : 실행시 기본 프로그램 등록
config.default_prog = {"wsl.exe", "-d", "Alpine318", "-e", "bash", "-l", "-c", "cd ~; exec bash"}
-- 프로파일 추가
-- config.launch_menu: 등록된 label들은 상단 탭의 '+'를 마우스 우클릭하여 선택하면 실행된다.
config.launch_menu = {
{
label = "Alpine318",
--args = {"wsl.exe"},
args = {"wsl.exe", "-d", "Alpine318", "-e", "bash", "-l", "-c", "cd ~; exec bash"},
},
{
label = "Busybox64",
args = {"C:\\Users\\batut\\bin\\busybox64.exe", "bash", "-l"},
},
{
label = "Busybox64u",
args = {"C:\\Users\\batut\\bin\\busybox64u.exe", "bash", "-l"},
},
{
label = "GSL-Shell",
args = {"C:\\Users\\batut\\gsl-shell\\gsl-shell.exe"},
},
{
label = "PowerShell",
--args = {"powershell.exe", "-NoExit", "-Command", "Start-Process PowerShell -Verb RunAs"},
args = {"powershell.exe"},
},
}
윈도우즈에서 유닉스 명령 환경 구성
- Busybox64는 윈도우즈 환경에서 busybox를 통해 unix 명령어를 사용하기위한 좋은 방법이다.
- 윈도우즈에서 간단히 파일 편집, 이동, 파일 조작 등 익숙한 172개의 명령어 사용가능.
- Shell Script 작성도 가능 : sh, bash, vi 등으로 여러 작업 자동화 스크립트 작성.
- 가벼운 작업만 한다면 cygwin, msys2, git for windows 등이 굳이 필요치 않다.
- busybox.exe(32bit), busybox64.exe(64bit), busybox64u.exe (64bit unicode) 중 선택해서 사용한다.
- 다운로드: https://frippery.org/busybox/
busybox.exe bash -l
: bash 쉘 환경으로 터미널이 실행된다. (sh, ash, bash 지원)busybox.exe --list
: 사용할 수 있는 unix 명령들 목록 (sed, awk, grep, make, wget, vi, ..)busybox.exe --help
: 도움말
REFERENCE
- wezterm home: http://wezterm.org
- config help: https://wezfurlong.org/wezterm/config/lua.html
- busybox home: https://frippery.org/busybox/
- busybox github: https://github.com/rmyorston/busybox-w32