---
title: WezTerm
url: https://doc.liz6.com/en/tools/wezterm
locale: en
area: tools
tags:
- tools
date: null
modified: 2026-07-16
description: A cross-platform terminal kept for Windows only — one Lua config works across Linux/macOS/Windows, synced via chezmoi.
---

# WezTerm

For me, WezTerm basically exists only for Windows. Its biggest advantage is that a single Lua config works across Linux, macOS, and Windows, so I can directly reuse it on that Windows machine, synced via [chezmoi](chezmoi.md), without having to maintain a separate terminal setup.

Only a few lines in the config actually affect the user experience:

```lua
config.front_end = "WebGpu"   -- Uses GPU (Vulkan/Metal/DX12) for smooth scrolling and large outputs
config.max_fps   = 144        -- Keeps up with high-refresh-rate displays, not locked to 60
config.font      = wezterm.font("JetBrains Mono")  -- Same font as the editor/Ghostty
-- Several Ctrl+Shift shortcuts for tabs/splits
```

It’s worth mentioning that WezTerm actually **has a built-in multiplexer** (panes/tabs/sessions, and it can even connect to remote muxers like mosh), and you can write Lua event hooks for deep customization. On Windows, I just use its built-in tabs, which are sufficient for daily use, so I don’t layer on another multiplexer.

However, on Linux, I actually don’t use these features; instead, I use [Ghostty](ghostty.md) + [Zellij](zellij.md) with a division of labor — which is the real point I want to make. My habit is to **let the terminal handle rendering only, and hand off sessions to the multiplexer**: this way, if the connection drops or I accidentally close the window, the session remains intact; split layouts can be saved; and keybindings remain consistent across any terminal. The terminal thus becomes a replaceable layer; if I want to switch to a different terminal one day, my workflow remains unaffected — which is also why I can easily switch between Ghostty and WezTerm.
