Skip to content

Install

Trinidad Head runs on macOS 14 or newer (Apple Silicon and Intel) and on Windows. The README lists Windows 10 and 11. There is no Linux window.

Download

System File What to do
macOS Trinidad-Head-mac.zip Unzip, drag Trinidad Head into Applications, open it.
Windows Trinidad-Head-windows.zip Unzip and double-click Trinidad Head.exe.

Mac. The download is one universal app (built for both aarch64-apple-darwin and x86_64-apple-darwin and joined with lipo), signed with a Developer ID certificate, notarized and stapled by scripts/package-release.sh, so it opens without a warning.

Windows. The zip holds a single exe and nothing else. It is linked with the C runtime built in (+crt-static in .cargo/config.toml), so no extra DLLs are needed. It is not code-signed, so if a blue "Windows protected your PC" box shows, click More info, then Run anyway.

All releases are listed on the releases page.

Build from source on a Mac

You need the Rust toolchain. The build script looks for cargo at ~/.cargo/bin/cargo unless you set CARGO. It also uses sips, iconutil and codesign, which ship with macOS.

git clone https://github.com/nicedreamzapp/trinidad-head.git
cd trinidad-head
scripts/build-mac-app.sh              # puts "Trinidad Head" in ~/Applications
open -n -a "Trinidad Head"            # each launch opens its own window

The script signs the app with the first Apple Development certificate in your keychain. If you have none, it stops with:

no Apple Development certificate on this Mac.
Set TH_SIGN_IDENTITY, or TH_ALLOW_ADHOC=1 to accept losing the app's permissions.

Run TH_ALLOW_ADHOC=1 scripts/build-mac-app.sh to sign ad hoc instead. An ad hoc signature changes with every build, so macOS forgets permissions you granted the app (Full Disk Access, Accessibility, Screen Recording) each time you rebuild. Other build options are listed under Configuration.

Optional helper commands (Mac)

mac-tools/install.sh copies four small helpers into ~/Scripts/trinidad-head:

Command What it does
th-open <file.command or file.ghostty>... Opens each file in its own new window and prints the window id (th:<token>).
th-type [--escape-first] [--no-enter] <token> <text> Types text into a window in the background, then presses Return.
th-alive <token> Prints yes if that window is open, else no.
th-self-id Inside a Trinidad Head window, prints this window's id.

See How it works for the socket these use.

Build from source on Windows

No Visual Studio is needed. The project builds with the gnullvm Rust target and llvm-mingw.

rustup default stable-x86_64-pc-windows-gnullvm
# add llvm-mingw to PATH, then:
cargo build --release
target\release\trinidad-head.exe

build.rs embeds the app icon with x86_64-w64-mingw32-windres from llvm-mingw. If that tool is not on PATH, the build still succeeds and prints x86_64-w64-mingw32-windres not found; building without the app icon.

To make the release zip, run:

powershell -NoProfile -ExecutionPolicy Bypass -File pc-tools\package-release.ps1

which writes dist\Trinidad-Head-windows.zip.

pc-tools/install_th.ps1

This script copies a fresh build into %LOCALAPPDATA%\Programs\TrinidadHead. Its source path is hard-coded to the author's own clone location, so on another machine edit $src first.

Linux

The code compiles the engine and Unix pty on Linux, but there is no window. Running the binary prints trinidad-head: there is no window for this OS yet.

Updating

There is no download updater. The app updates itself only when a git clone of this repo is on the same machine in one of the places it looks, and then it rebuilds from that clone. See the self-updater for the rules it follows, and TRINIDAD_HEAD_NO_UPDATE to turn it off.