Ghostty
Primary terminal. Its entire configuration is short enough to fit in ten lines because I’ve handed off everything I could: window rounding, borders, blur, and move/resize are handled by Hyprland; color schemes are managed by matugen; Ghostty is left with just a region for rendering text. It’s fast, GPU-rendered, and its configuration is purely key = value. That’s all I need.
background-opacity = 0.92 # Semi-transparent; let the compositor handle blur
background-blur = false # Don’t add another layer of blur, or it’ll turn gray
theme = MaterialYou # Points to the theme generated by matugen
window-decoration = none # Remove title bar; pure content only
gtk-titlebar = false
Two points are worth mentioning. First, transparency and blur should be separated: semi-transparent windows let the background show through, while blur is applied only once by the compositor. If both are enabled, the result is a muddy gray. Second, the color scheme line isn’t static—when you change your wallpaper, matugen doesn’t just rewrite the theme file; it also sends an OSC sequence to all open terminals to change colors on the fly, without needing to restart the window (see matugen for details).
Without a title bar, the window looks bare, but Hyprland adds rounded corners and borders, and SUPER+drag handles moving it. It looks seamlessly integrated with the overall theme. Instead of using Ghostty’s built-in tabs, I reuse Zellij.
Why Ghostty and not something else. It’s written in Zig and uses GPU rendering (scrolling and large outputs are smooth), but what really sold me is that it “just works” out of the box: correct ligatures, wide Unicode characters, kitty graphics protocol, and sensible selection behavior are all enabled by default. Unlike some terminals that require extensive configuration to be usable, Ghostty requires none of that. Its configuration is purely key = value, with no DSL to learn. It also runs natively on both Linux and macOS (using each platform’s native windowing/font stacks), rather than being wrapped in Electron.
Shell integration is worth enabling explicitly. Ghostty automatically injects shell integration (for zsh/bash/fish), unlocking several highly useful features: it marks prompt boundaries for each command, allowing you to “jump to the output of the previous/next command”; it automatically reports the current working directory, so new windows/splits open in the current directory; and it provides visual feedback based on exit codes after commands finish. None of this requires manual configuration—it works out of the box. This aligns with the philosophy of “handing off aesthetics and focusing only on text rendering”: capabilities are gained through protocols and defaults, keeping the configuration file as short as possible.
The font used is JetBrains Mono, shared with the editor and WezTerm, ensuring visual consistency across terminals.