Crate and binary are named
terminal-switcher; the repo isterminal_launcher. Same project.
A fast, keyboard-driven launcher for terminal sessions. Hit a global hotkey, fuzzy-search a list of saved directories and SSH hosts, press Enter, and a new WezTerm window opens at that location.
Built in Rust with iced. Lives in the system tray. Config is a single TOML file.
If you regularly hop between a handful of project directories and remote hosts, opening a terminal and cd-ing (or running ssh user@...) every time gets old. This is a small dedicated launcher just for that — closer to Spotlight or Alfred than to a full terminal multiplexer.
- Global hotkey to show/hide (default
Alt+Space) - Fuzzy search over saved entries
- Two entry types: local directory (opens WezTerm with
--cwd) and SSH host (runsssh user@host [-p port]inside WezTerm) - Built-in editor (
Ctrl+E) to add, edit, and delete entries — no need to hand-edit the TOML - System tray icon with Config / Restart / Exit menu
- Customizable color theme via the config file
- Cross-platform (Windows, macOS, Linux)
- WezTerm —
wezterm-guimust be on yourPATH - On Linux: a working desktop environment with system tray support (most do)
For building from source, you'll also need Rust (stable, 2021 edition).
Grab the latest archive for your platform from the Releases page. Unzip it, drop the binary somewhere on your PATH, and run it.
git clone https://github.com/AbstractNucleus/terminal_launcher.git
cd terminal_launcher
cargo build --releaseThe binary lands at target/release/terminal-switcher (.exe on Windows).
- Windows: put a shortcut to the binary in
shell:startup(Win+R, thenshell:startup). - macOS: add it under System Settings → General → Login Items.
- Linux: create a
.desktopfile in~/.config/autostart/.
- Launch
terminal-switcher. On first run it creates a default config and opens the editor. - Add your directories and SSH hosts in the editor, or close it and use it from the tray.
- Press
Alt+Spaceanywhere. Type a few characters, use arrow keys to pick, pressEnterto launch.
| Key | Action |
|---|---|
Alt+Space |
Show/hide the launcher (configurable) |
↑ / ↓ |
Move selection |
Enter |
Launch selected entry |
Escape |
Hide the launcher |
Ctrl+E |
Toggle the entry editor |
Located at the platform's standard config directory:
- Windows:
%APPDATA%\terminal-switcher\config.toml - macOS:
~/Library/Application Support/terminal-switcher/config.toml - Linux:
~/.config/terminal-switcher/config.toml
You can open it directly from the tray icon's Config menu item.
[settings]
# Default palette is the Claude design language (warm coal + terracotta).
background = "#1F1E1C"
foreground = "#FAF9F5"
highlight = "#D97757"
surface = "#262624"
muted = "#9C9A92"
accent = "#E08B6F"
border = "#30302E"
danger = "#EE8884"
font_size = 14
[settings.hotkey]
modifier = "Alt" # Alt | Ctrl | Shift | Super
key = "Space" # Space, Enter, Tab, or a-z
[[entry]]
type = "directory"
name = "My Project"
path = "~/projects/myapp"
[[entry]]
type = "ssh"
name = "Prod Box"
host = "user@prod.example.com"
port = 22 # optionalAfter editing the file directly, restart the app from the tray menu (or hotkey changes won't apply).
This is intentionally minimal. It's a launcher, not a terminal, not a session manager, not a replacement for tmux. WezTerm is currently hard-coded as the terminal — making that configurable is on the table if there's interest.
MIT — see LICENSE.