TildaZ

August 9, 2026 · View on GitHub

A native Quake-style drop-down terminal for Linux, macOS, and Windows. Your terminal, one key away. If you are looking for a Tilda alternative, a Guake / Yakuake-style terminal, or a Wayland drop-down terminal that also follows you to macOS and Windows, TildaZ brings that show-and-hide workflow to every desktop you use.

Most drop-down terminals stop at one OS, one toolkit, or one Linux desktop. TildaZ is one native app across Linux, macOS, and Windows. On Linux it brings a real drop-down with a global hotkey to every major desktop: KDE Plasma, GNOME, Cinnamon, COSMIC, Hyprland, and sway. No Electron, no GTK or Qt runtime dependency — just a terminal that appears when you need it and disappears when you do not.

Website: https://ensky0.github.io/tildaz/ · Download: https://github.com/ensky0/tildaz/releases/latest

v0.8.0 — Text finally looks the way your shell asked for it. Underlines, strikethrough, overline, blink, and real italic and bold faces now render, a new tab opens in the active tab's directory, and emoji- and CJK-heavy output draws far faster.

Who is TildaZ for?

  • You want a Tilda alternative that follows you across OSes. TildaZ keeps the Quake-style drop-down workflow on Linux, macOS, and Windows instead of tying it to one desktop.
  • You like the Guake / Yakuake reflex. Press one hotkey, get a real terminal over your current workspace, press it again, and get back to what you were doing.
  • You need a Wayland drop-down terminal. TildaZ has real drop-down and global hotkey paths across KDE Plasma, GNOME, Cinnamon, COSMIC, Hyprland, and sway.
  • You want familiar config everywhere. Config paths differ by platform, but the JSON schema, themes, hotkey, font, shell, opacity, and geometry settings stay familiar.

Why TildaZ

  • One key between thought and shell. Drop the terminal over your current workspace, run the command, and hide it again before your flow cools off.
  • Same reflex, every OS. The same drop-down terminal on Linux, macOS, and Windows — one JSON config shape, one muscle memory.
  • Familiar config everywhere. Config paths differ by platform, but the schema, themes, hotkey, font, shell, opacity, and geometry settings stay familiar.
  • Wayland coverage that matters. KDE Plasma, GNOME, Cinnamon, COSMIC, Hyprland, and sway all get a real drop-down and global hotkey path.
  • Native where it counts. No Electron, no GTK or Qt runtime dependency — direct Wayland on Linux, GPU rendering on all three, and the fast libghostty-vt core.
  • Pretty TUIs, serious text. Tabs, themes, true color, ligatures, color emoji, full CJK, procedural box-drawing, smooth shaded blocks, and inline IME for Korean / Japanese / Chinese.
  • Personal, not nosy. No telemetry, no analytics, no auto-update phone-home — only local config and logs.

See it render

Ligatures, true color, color emoji with skin tones and ZWJ families, full-width CJK, smoothly-shaded block glyphs (░▒▓ now use smooth alpha instead of a dot dither), and procedural box-drawing (continuous lines, corners, and rounded joints — drawn the way Windows Terminal does) all render correctly — identically on Linux, macOS, and Windows. Paste this into any TildaZ window:

echo -e "\n🎉❤️🌈🎨🌞🍎🚀💎✨\n👋🏻👋🏼👋🏽👋🏾👋🏿\n👨‍👩‍👧👨‍👨‍👦‍👦\nABCDEFG abcdefg 0123456789\n한글 ABC 가나다라마바사\n▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏\n▐░▒▓▔▕\n┌─┬─┐ ╔═╦═╗ ╭───╮\n├─┼─┤ ╠═╬═╣ │░▒▓│\n└─┴─┘ ╚═╩═╝ ╰───╯\n"

Install

Download the latest artifact from GitHub Releases.

PlatformArtifactNotes
Linux (any distro) — portabletildaz-vX.Y.Z-linux-{x86_64,aarch64}.tar.gzExtract, then ./install.sh installs the .desktop and icon under ~/.local/share. The binary stays in the extracted directory by default.
Linux Debian / Ubuntutildaz_X.Y.Z-1_{amd64,arm64}.debsudo dpkg -i tildaz_*.deb (or open with the Software app).
Linux Fedora / RHEL / openSUSEtildaz-X.Y.Z-1.{x86_64,aarch64}.rpmsudo dnf install ./tildaz-*.rpm (or rpm -Uvh).
Linux distro-independent — single fileTildaZ-X.Y.Z-{x86_64,aarch64}.AppImagechmod +x TildaZ-*.AppImage && ./TildaZ-*.AppImage — runs on any glibc 2.28+ system.
Linux Arch / Manjaro / EndeavourOStildaz-X.Y.Z-1-x86_64.pkg.tar.zstsudo pacman -U tildaz-*.pkg.tar.zst (x86_64).
macOS 14+ universaltildaz-vX.Y.Z-macos.dmgDrag TildaZ.app into Applications. Apple Silicon and Intel are both included.
Windows 10 1903+ x64tildaz-vX.Y.Z-win-x64.zipUnzip anywhere, keep the _internal folder next to tildaz.exe, and run tildaz.exe.
Windows 11 ARM64tildaz-vX.Y.Z-win-arm64.zipSame layout as the x64 zip with ARM64-native binaries.

First launch creates the default config:

PlatformConfigLog
Linux$XDG_CONFIG_HOME/tildaz/config_0.json$XDG_STATE_HOME/tildaz/tildaz_0.log
macOS$XDG_CONFIG_HOME/tildaz/config_0.json~/Library/Logs/tildaz_0.log
Windows%APPDATA%\tildaz\config_0.json%APPDATA%\tildaz\tildaz_0.log

On Linux and macOS, XDG_CONFIG_HOME defaults to ~/.config. On Linux, XDG_STATE_HOME defaults to ~/.local/state. Empty or relative XDG values use those defaults.

macOS releases use a stable self-signed TildaZ identity. They are not signed with an Apple Developer ID or notarized, so if Gatekeeper blocks the first open, right-click TildaZ.app and choose Open, or run:

xattr -d com.apple.quarantine /Applications/TildaZ.app

Then grant Input Monitoring and Accessibility in System Settings → Privacy & Security. Those permissions are needed for the global hotkey and window control shortcuts.

Configure

Edit config_0.json; the schema is documented in CONFIG.md. Launch TildaZ again while every configured instance is running to create another one. Press its global hotkey and choose Create; TildaZ writes config_1.json, config_2.json, and so on. Each config owns one process, hotkey, and log file. Legacy config.json files are left untouched and are not loaded.

Common fields:

  • window.dock_position, width_percent, height_percent, offset_percent, opacity_percent
  • font.family, font.glyph_fallback, size_point, cell_width_ratio, line_height_ratio
  • theme, shell, hotkey, auto_start, hidden_start, max_scroll_lines

Font fallback is capped at 8 families total: 1 primary font.family plus up to 7 entries in font.glyph_fallback.

Command line

TildaZ needs no arguments to start. These options are available:

tildaz --instance 1     # run instance 1, with its own window, config, and log
tildaz --toggle         # show or hide the running instance, then exit (Linux only)
tildaz --autostart      # start the way the desktop session starts TildaZ
tildaz --version        # print the version, then exit
tildaz --help           # print the option list, then exit

--version prints the release version, plus the commit it was built from when TildaZ was built from a git checkout:

$ tildaz --version
tildaz 0.8.0 (d1ad1ff)

A -dirty suffix on the commit — tildaz 0.8.0 (d1ad1ff-dirty) — means the build had uncommitted local changes. Builds from a source archive with no git metadata print the version alone. The same string appears in the About dialog (Ctrl+Shift+I, or Shift+Cmd+I on macOS) and on the first line of the log file, so any of the three identifies a build exactly.

--toggle is meant for a desktop shortcut: bind tildaz --toggle to a key in your desktop's keyboard settings, and it shows or hides the running instance.

On macOS the executable lives inside the app bundle, so call it by path:

/Applications/TildaZ.app/Contents/MacOS/tildaz --version

Build

Requirements:

  • Zig 0.15.2
  • macOS: Xcode Command Line Tools (xcode-select --install)
  • Windows: no extra C/C++ toolchain; Zig provides clang + LLD for the MSVC ABI
zig build
zig build test
zig build package

Outputs:

PlatformLocal build outputPackage output
Linuxzig-out/bin/tildaz (with -Dtarget={x86_64,aarch64}-linux-gnu.2.28)zig-out/release/{tildaz-v<ver>-linux-<arch>.tar.gz,tildaz_<ver>-1_<debarch>.deb,tildaz-<ver>-1.<arch>.rpm,TildaZ-<ver>-<arch>.AppImage} (-Dformat=tar.gz|deb|rpm|AppImage)
macOSzig-out/TildaZ.appzig-out/release/tildaz-v<ver>-macos.dmg
Windows x64zig-out/bin/tildaz.exezig-out/release/tildaz-v<ver>-win-x64.zip
Windows ARM64zig-out/bin/tildaz.exe (with -Dtarget=aarch64-windows)zig-out/release/tildaz-v<ver>-win-arm64.zip

Official release binaries are built by GitHub Actions from v* tags. Local packages are useful for testing, but release artifacts are not uploaded by hand.

Documentation

NeedRead
Configuration schema, themes, examplesCONFIG.md
Keyboard and mouse shortcutsKEYBINDINGS.md
Current code structureARCHITECTURE.md
Security reportingSECURITY.md
Release notesdist/release-notes/

Known Limitations

  • Linux is Wayland-only (no X11) and shipped in v0.5.0. It is verified on real hardware across KDE Plasma 6, GNOME (via a Shell extension), Cinnamon, COSMIC, Hyprland, and sway. Z-order yield on focus loss is not implemented on Linux (zwlr_layer_shell_v1 categorical layers have no normal-window slot). Hanja conversion of already-committed Hangul (selecting committed Korean text and pressing the Hanja key) is not supported on Linux — zwp_text_input_v3 has no reconversion request.
  • macOS releases use a stable self-signed identity, so Gatekeeper may still require the first-open flow above. Apple Developer ID signing and notarization are not currently available.
  • Holding paste-repeat on very wide ZWJ emoji clusters under macOS bash 3.2 can desynchronize shell wrapping. Normal single paste is unaffected; zsh 5.x does not exhibit the same mismatch.
  • Windows binaries are not Authenticode-signed yet, so SmartScreen or EDR tools may warn on first launch. The current SignPath application draft lives in dist/signpath-application.md.
  • Windows ConPTY does not expose OSC 10/11 default-color queries to TildaZ, so fish_terminal_color_theme can remain empty in WSL. This also occurs in Windows Terminal. TildaZ still passes COLORFGBG into WSL so vim, tmux, and other tools can select the configured dark/light scheme.
  • The Windows global hotkey cannot fire while an elevated app has focus unless TildaZ is also elevated. This is Windows UIPI behavior.

Privacy

TildaZ has no telemetry, analytics, auto-update check, crash reporter, or network request path. It stores only local config and log files. Child shells (cmd, PowerShell, WSL, bash, zsh, etc.) are independent processes governed by the user's shell and OS configuration.

License

TildaZ is AGPL-3.0-or-later. See LICENSE.

Bundled / linked components:

ComponentLicenseSource
libghostty-vtMIThttps://github.com/ghostty-org/ghostty
OpenConsole.exe / conpty.dllMIThttps://github.com/microsoft/terminal