Install
Documentation in progress
Some sections are still incomplete.
ThinkTerm is released for macOS, Linux and Windows on the releases page. On macOS and Linux the install script is the way to install it, and the only way that lets ThinkTerm update itself later. The iOS and Android apps are in development and have not been released.
System requirements
| System | Needs |
|---|---|
| macOS | macOS 14 or later, on Apple silicon or Intel |
| Linux | x86_64 or arm64, with glibc 2.35 or newer — Ubuntu 22.04, Debian 12, RHEL 10 or later |
| Windows | Windows 10 version 1809 or later, on x64 |
Linux builds link against glibc, so a musl system such as Alpine cannot run them at all. An older glibc fails in a less obvious way — at load time, with a message about a symbol version rather than the real cause — so the install script checks the version first and says so in words. On either, the answer is to build from source.
The install script
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | shThe script picks the release for this machine, downloads it, and checks it against the SHA-256 digest GitHub recorded when the file was uploaded. A download that does not match is refused and nothing is installed. If GitHub has no digest for the file, or the machine has neither sha256sum nor shasum, the script says the download was not verified rather than staying quiet about it.
It installs for the current user and needs no root and no package manager:
- Linux — the programs go in
~/.local/bin, and the desktop variant adds a launcher entry and an icon under~/.local/share. - macOS — the signed
ThinkTerm.appgoes in/Applications, or~/Applicationswhen/Applicationsis not writable for you, and the command-line tools are linked into~/.local/bin. The links point into the app rather than copying out of it, so they stay covered by its signature.
Completions for bash, zsh and fish are installed under ~/.local/share as well. A small record of what was installed is kept beside them, which is how thinkterm update and Settings › Software Update later know they may replace these files.
Your shell startup files are not touched. When ~/.local/bin is not on your PATH the script prints the line to add — on Debian and Ubuntu it only joins PATH at the next login, and only if it existed then — and it prints the optional line that turns on shell integration, which gives prompt marks and lets ThinkTerm follow the shell's working directory.
Both variants put a wezterm command beside thinkterm, for tools that look for one when TERM_PROGRAM says WezTerm. If WezTerm itself is also installed, whichever directory comes first on your PATH decides which wezterm runs.
Desktop or server
| Variant | Contains |
|---|---|
--desktop | The app, the command-line tools, the TUI and the session server |
--server | Everything but the app. On Linux it needs no graphics libraries either |
The script never guesses from the machine: a headless box may still want the TUI, and a desktop may be somebody's SSH target. Run in a terminal without either flag, it asks. Run with no terminal at all — from a provisioning script — the flag is required.
The two are exclusive. Installing one removes the other's files, so moving a machine from server to desktop is the same command with --desktop, which adds the app and keeps the rest, and moving back removes the app and its launcher.
Options
| Option | Effect |
|---|---|
--desktop, --server | Choose the variant |
--version X | Install release X instead of the latest |
--prefix DIR | Install under DIR instead of ~/.local; the programs go in DIR/bin |
--app-dir DIR | macOS only: put ThinkTerm.app in DIR |
--from FILE | Install an archive already downloaded; nothing is fetched |
--dry-run | Say what would be done and stop before touching the disk |
Options reach the script through sh -s --:
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | sh -s -- --serverGITHUB_TOKEN, if it is set, is sent with the script's requests, which lifts GitHub's anonymous rate limit. ThinkTerm's own background update check never reads it; see Updates.
Upgrading and removing
Running the script again is the upgrade. It does not compare versions — it installs the release it fetched over whatever is there — so it can also take a machine back to an older release with --version. thinkterm update and Install Update in Settings run this same script for you; Updates has the details.
Files are swapped in place, so anything already running keeps the version it started with. If a session server from before the install is still running, the script says so: a newer app or command-line tool may refuse to talk to it until it is restarted. On macOS it also notes when ThinkTerm is open, since the new version starts the next time you open it.
There is no uninstaller. The script lists every file it installed when it finishes, and removing ThinkTerm is deleting them.
Missing libraries on Linux
A package manager would pull in the libraries the app needs; a tarball cannot. For the desktop variant the script asks the system which ones the app is missing and names the package that provides each, for apt, dnf and zypper. It warns rather than stops: the command-line tools and the session server work without them, and the app starts once they are installed.
What a release contains
macOS
One zip per architecture, arm64 and x86_64, each holding a signed and notarised ThinkTerm.app. The install script uses the same zip for both variants.
You can also unzip it and move the app into Applications yourself. A copy placed by hand is one ThinkTerm can still update: Install Update replaces it where it sits and adds the command-line tools under ~/.local/bin, after which it is managed like a script install.
Linux
| Download | What it is |
|---|---|
thinkterm-<version>-linux-<arch>.tar.gz | The desktop variant, as the install script installs it |
thinkterm-server-<version>-linux-<arch>.tar.gz | The server variant |
.deb | Packages thinkterm and thinkterm-server, built on Ubuntu 22.04 |
.rpm | Packages thinkterm and thinkterm-server, built on Fedora |
.AppImage | The desktop app in one file, built on Ubuntu 22.04 |
Each comes for x86_64 and arm64.
The .deb and .rpm packages cannot be installed alongside a WezTerm package, because both provide a wezterm command, and the desktop and server packages exclude each other. A package is updated through the package manager, and an AppImage through AppImageUpdate; ThinkTerm points you there rather than replacing their files.
Windows
Windows has no install script. The release carries two downloads, both for x64.
The installer, ThinkTerm-<version>-setup.exe, asks for administrator rights and installs into Program Files. It adds ThinkTerm's folder to the system PATH, adds Open ThinkTerm here to the Explorer menu for folders, folder backgrounds and drives, and offers a desktop shortcut. Updating from inside ThinkTerm downloads the next installer and runs it.
The zip, ThinkTerm-windows-<version>.zip, unpacks anywhere and runs from there, with nothing added to PATH or to Explorer. A thinkterm.lua beside the executable takes precedence over the config in your user profile, so a copy can carry its own settings — see Configuration. Only the config travels with it, though: Spaces, hosts and the rest of ThinkTerm's data are still kept in your user profile. To update it, unpack the new zip in its place.
Installing on a server
A machine you reach over SSH needs ThinkTerm only for ThinkTerm Connect, the persistent connection that keeps sessions running on the host. The server variant is enough:
curl -fsSL https://raw.githubusercontent.com/RoversX/thinkterm/main/install.sh | sh -s -- --serverOn macOS the server variant keeps the app bundle under ~/.local/libexec, out of Applications and Launchpad, since what is wanted from it is the programs inside rather than a Dock icon. On Linux the thinkterm-server package does the same job for a machine you would rather manage with apt or dnf.
The session server needs no root and no service file. Remote covers starting it, keeping it running after you log out, and what a host needs for each kind of connection.
The first launch
The first time the app opens, it shows one page, Welcome to ThinkTerm, with two choices: Language and Appearance (Follow System, Light or Dark). Each applies as you pick it, so you see the result before deciding. Get Started keeps them; Skip puts back what ThinkTerm was using when the page opened. Either way the page does not come back.
Both can be changed later, under Settings › General › Language and Settings › Appearance.
A new installation also keeps local terminals in a background session server from the start, so quitting ThinkTerm does not end them. Remote explains that setting and how to turn it off.
Related
- Updates — how an installed copy is kept up to date
- Remote — preparing a host for SSH, Mosh and ThinkTerm Connect
- Configuration — where the config and data live on each system
- Privacy and Security — what ThinkTerm sends, and what it keeps
