Skip to content

sudo-tee/hollow

Repository files navigation

Hollow

Zig GitHub stars Last Commit

Hollow demo
Hollow demo Hollow demo

What Hollow Is

A Zig terminal emulator with a LuaJIT runtime and Ghostty's VT core. Fully configurable via Lua — inspired by the Lua APIs from WezTerm and Neovim — with a plugin system for custom panes, overlays, and widgets.

A personal side project — built for around my personal workflow, but completely customizable for anyone else.

If you are new to the repo, start with the docs index.

Features

  • Zig + LuaJIT runtime with a full Lua API (hollow.config, hollow.term, hollow.events, hollow.keymap, hollow.ui, hollow.htp, and more)
  • Ghostty's VT core for fast, accurate terminal emulation
  • Tabs, split panes, floating panes, maximized panes, workspaces, customizable top bar
  • Scrollback, selection, clipboard, hyperlink handling, font discovery, ligature, nerd fonts and emoji support
  • Basic support for Kitty images and Sixel
  • Windows domains for pwsh, powershell, cmd, and wsl
  • Optional WSL PTY bypass helper with automatic ConPTY fallback (needed for full escape sequence support)
  • Cross-platform targets: Windows, WSL (primary); Linux (planned), macOS (planned)
  • Plugin system with Lua API for custom panes, overlays, and widgets (hollow.plugins)
  • Sensible default UX but fully customizable via Lua config and plugins

Quick Start

Download a release: github.com/sudo-tee/hollow/releases Windows builds include the optional hollow-wsl-bypass helper for WSL domains (falls back to ConPTY automatically when the helper is absent).

Customize: copy conf/init.lua to %APPDATA%\hollow\init.lua (Windows) or ~/.config/hollow/init.lua (other).

Build from source:

Zig version: 0.15.2 only. If you use asdf or mise, run asdf install or mise install from the repo root — .tool-versions is already pinned.

./scripts/setup.sh        # first-time submodule init
./launch.sh               # Windows cross-build + run
zig build run             # non-Windows build + run

Full build docs in Development.

Documentation

The full guide set lives in docs/:

Section Start here
Guides Getting started, Configuration, Keybindings, Panes/tabs/workspaces
Platforms Windows, WSL, Linux, macOS
Reference Lua API, CLI, Keymap actions
Examples Config snippets, UI recipes, Plugin authoring

Companion files: conf/init.lua (default config), types/hollow.lua (LuaLS typings).

Default Keymaps

All keymaps are defined in conf/init.lua. The leader key is <C-Space> (1200ms timeout). See the file for the full bindings or override them in your user config via hollow.keymap.set.

Project Status

  • Hollow is still an active project and the API surface is still moving.
  • The docs in this repo are meant to describe the current product, not a future roadmap.
  • The current build is suitable for building, running, configuring, and packaging now, with Windows/WSL as the main tested target.

About

Hollow is a terminal emulator built in Zig with a LuaJIT scripting layer and `libghostty-vt` for VT parsing and rendering.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors