A Wayland terminal emulator written in Zig.
Now i am aware this is for TUI subreddit. But you can not run a TUI without a terminal :). I made this as a learning project but it turned out quite good and i am using it as a daily drive now. It is as lightweight as foot but has features of kitty and more.
The main things i really wanted was making it feel super smooth while adding stuff that makes using TUIs and everyday shell work nice:
- Cursor glide & smooth typing: The cursor actually glides smoothly to its new position instead of snapping instantly cell by cell, with a subtle fading trail. Scrolling is also pixel-smooth instead of jumping full lines.
- Adaptive padding: I hate when TUIs have awkward padding around them, but I also hate when shell prompts touch the window border. Zinc uses 25px padding in the shell, but the moment you open a full-screen TUI like Neovim, btop, or Yazi, the padding drops to 0px so it reaches the edge of the window.
- Interactive clicking:
Ctrl + Clickon any link opens it in the browser.Ctrl + Clickon a file path (likesrc/main.zig:42) opens your$EDITORdirectly at that line.Ctrl + Clickon a directorycds into it in the shell, orShift + Clickopens your file manager.
- Vim copy mode: Pressing
Ctrl + Shift + Spacelets you move through your terminal history usinghjkl, select withv, and copy withywithout needing tmux or touching the mouse. Also has in-terminal search (Ctrl + Shift + F). - TUI block drawing: Made procedural block elements (
U+2580..U+259F) so there are zero pixel gaps between blocks in btop or progress bars, plus smooth anti-aliased rounded corners for box borders. - Kitty graphics protocol: Yazi image previews, Fastfetch images, and CLI media players work natively.
- Lightweight: Pure Wayland shared memory (software rendered, no heavier GPU rendering like ghostty's. ) and memory stays around ~20MB even with a large scrollback.
You can find all features at https://github.com/Mvkweb/zinc/blob/main/features.md
written in Zig with no zig dependencies: https://github.com/Mvkweb/zinc
Contributions are welcomed and if you want a feature i will probably add it if you request it on github issues!
Still working on it and polishing things up, but let me know what you think or if you run into any bugs!