The missing Connection Manager and Input Enhancer for macOS Terminal.
FineTerm is a lightweight, native Swift application designed to supercharge the stock macOS Terminal.app. It bridges the gap between the native terminal experience and the advanced session management features found in heavy third-party emulators like iTerm2 or SecureCRT.
It does not replace Terminal.app—it wraps it with a powerful session manager and injects nostalgic PuTTY-style "Pro" input behaviors that Unix and Windows admins have missed for years.
Most terminal replacements (Hyper, Alacritty, iTerm, Tabby) require you to abandon the highly optimized, battery-friendly native macOS Terminal.
FineTerm is different:
- Native Performance: You still use the actual Terminal.app. Now it's just automated.
- Unix/Windows Mouse Behavior: Finally brings "Copy on Select" (PuTTY/Linux style) and "Paste on Right Click" to the native Mac Terminal.
- Focus Flow: A seamless Global Hotkey system allows you to toggle between your connection list and your active terminal instantly.
- Zero Bloat: Written in pure Swift. No Electron, no Python, no heavy dependencies. 5MB memory footprint.
- Organized: Group your SSH, Telnet, or local script commands into foldable folders.
- Smart Search: Instant "Spotlight-style" search with multi-word matching (e.g., "db prod" finds "Production DB Server").
- Drag & Drop: Reorder connections and organize groups intuitively.
- Import/Export: Share your server lists via JSON.
- Terminal Tab Naming: Automatically sets the Terminal tab title to your connection name.
- Copy on Select: Simply dragging your mouse over text in the Terminal automatically copies it to the clipboard. No more
Cmd+C. - Paste on Right Click: Right-clicking anywhere in the Terminal window pastes your clipboard.
- Note: These features operate by intercepting mouse events specifically when Terminal is focused and injecting keystrokes.
- Configurable Global Hotkey (Default:
Cmd+N):- From Terminal: Press the hotkey to instantly bring the Connection List to the front.
- System-wide Mode: Optionally enable global mode to activate FineTerm from any application.
- Second Activation: When FineTerm is already focused, pressing the hotkey again instantly switches back to Terminal—perfect for quick glances at your connection list.
- Select your server, hit Enter, and it launches a new tab in your existing Terminal window.
This project is a raw Swift codebase. You don't need Xcode to build it, just the command line tools.
-
Build the App:
chmod +x build.sh ./build.sh
This creates the app bundle at
./FineTerm.app. -
Run: Double-click
FineTerm.appor run from terminal:open FineTerm.app
-
⚠️ CRITICAL: Accessibility Permissions Because this app intercepts global keystrokes and mouse events (for Copy/Paste), macOS requires Accessibility Access.- On first launch, the app will check for permissions.
- Go to System Settings -> Privacy & Security -> Accessibility.
- If
FineTermis in the list, enable the toggle. - If not, drag the
FineTerm.appfile into the list manually. - Restart the app.
- Add: Click the "+" button or fill in the form at the bottom.
- Edit: Click a row to load it into the editor.
- Connect: Click the "Play" icon or press
Enteron a highlighted row. - Search: Just start typing. The list filters automatically with smart multi-word matching. Use
Up/Downarrows to navigate andEnterto connect.
| Context | Shortcut | Action |
|---|---|---|
| Terminal | Cmd + N |
Switch focus to FineTerm (Configurable) |
| FineTerm (search focused) | Cmd + N |
Switch back to Terminal (if enabled) |
| FineTerm | Up / Down |
Navigate connection list |
| FineTerm | Enter |
Connect to selected server |
Click the ⚙️ icon to configure:
Global Activation Shortcut:
- Modifier + Key: Choose Command, Control, or Option plus any key.
- System-wide (Global): Enable to activate FineTerm from any application, not just Terminal.
- Second Activation to Terminal: When enabled, pressing the shortcut again while FineTerm is focused switches back to Terminal.
Command Execution Wrappers:
- Prefix: Commands prepended before your connection (e.g.,
unset HISTFILE ; clear ;). - Suffix: Commands appended after (e.g.,
&& exit). - Set Terminal Tab Name: Automatically names the Terminal tab after your connection.
- Template Variables: Use these in prefix/suffix for dynamic values:
$PROFILE_NAME– Replaced with the connection name (e.g., "Production Server")$PROFILE_COMMAND– Replaced with the connection command (e.g., "ssh user@example.com")
UI Preferences:
- Hide Command in List: Show only connection names, hiding the command details.
- Smart Search (Multi-word): Enables AND-logic search where "db prod" matches "prod db".
Mouse Behavior:
- Copy on Select: Toggle Linux/PuTTY-style copy behavior.
- Paste on Right Click: Toggle right-click paste behavior.
- SwiftUI Interface: Renders the lightweight list and settings.
- AppleScript Bridge: When you click "Connect", the app talks to Terminal.app via AppleScript to spawn tabs and type commands.
- CGEventTap (Interceptors): Low-level CoreGraphics APIs hook into the system event stream.
- The app filters for events only when
com.apple.Terminalis the frontmost application (unless global mode is enabled). - It swallows specific events (like Right Click) and injects simulated keystrokes (
Cmd+V) in their place.
- The app filters for events only when
MIT License.


