WezTerm은 GPU 가속을 지원하는 고성능 터미널 에뮬레이터로, Windows, macOS, Linux 등 다양한 운영체제에서 사용할 수 있다. 개인적으로 더욱 좋은 것은 Lua 기반의 설정을 제공한다는 것이다. 탭/분할 창, 이미지 표시, SSH 멀티플렉싱 등 현대적인 다양한 기능을 제공합니다.

소개 이유

  • 빠른 화면 속도
  • Lua로 설정
  • tmux를 대체할 수 있고 오히려 더 편리한 사용성
  • 터미널 내 복사, 붙여넣기, 검색 등의 편리함
  • 다양한 테마와 Nerd Font 기본 지원, 폰트 별도 설치 불필요
  • 왜 그동안 이걸 몰랐을까? 정말 모던하고 깔끔하고 안정적이고 풍부한 기능 제공

주요 기능

  1. 크로스 플랫폼 지원: Windows, macOS, Linux.
  2. GPU 가속: 부드러운 렌더링 성능.
  3. 탭/분할 창: 다중 작업 환경 지원.
  4. Lua 설정: 사용자 정의 가능한 테마, 키 바인딩, 동작.
  5. 이미지/폰트 지원: Sixel, Iterm2 이미지 및 Nerd Fonts.
  6. SSH 멀티플렉싱: 단일 연결로 다중 세션 관리.

설치

$ doas apk add wezterm
  • Windows install using Chocolatey
$ choco install wezterm -y

기본 키 매핑

WezTerm에는 이미 많은 기본 키 매핑이 포함되어 있다. 다음은 일부 중요한 기본 매핑들이다:

  1. 일반 명령어:

    • Ctrl + N: 새 세션 생성
    • Ctrl + W: 현재 세션 닫기
    • Ctrl + Tab: 활성 세션 전환
    • Ctrl + Shift + C: 복사
    • Ctrl + Shift + V: 붙여넣기
    • Ctrl + /: 현재 컨텍스트 팁 표시
    • Ctrl + Q: 전체적인 사용법 안내
  2. 창 관리:

    • Ctrl + Shift + 화살표: 창 이동
    • Ctrl + Alt + 화살표: 창 크기 조절
  3. 테마 및 모드:

    • Ctrl + Shift + P: 빠른 메뉴 (테마 선택)
    • Ctrl + ,: 설정 열기
  4. 스크린샷:

    • Ctrl + Shift + S: 현재 패널 스크린샷 캡처

기본 설정

  1. 설정 파일

    • 1차: $HOME/.config/wezterm/init.lua
    • 2차: $HOME/.wezterm.lua
  2. 설정 적용

    • wezterm 재실행
    • 또는 설정 파일 수정 시 바로 적용
  3. 설정 예제

    • 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

  1. wezterm home: http://wezterm.org
  2. config help: https://wezfurlong.org/wezterm/config/lua.html
  3. busybox home: https://frippery.org/busybox/
  4. busybox github: https://github.com/rmyorston/busybox-w32