{"id":43932398,"url":"https://github.com/achendev/fineterm","last_synced_at":"2026-02-08T01:00:53.320Z","repository":{"id":335925346,"uuid":"1147512278","full_name":"achendev/FineTerm","owner":"achendev","description":"Connection Manager and Input Enhancer for macOS Terminal","archived":false,"fork":false,"pushed_at":"2026-02-06T22:46:13.000Z","size":908,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-07T09:31:33.384Z","etag":null,"topics":["macos","productivity","putty","terminal","wrapper"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/achendev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-01T21:23:15.000Z","updated_at":"2026-02-06T18:57:11.000Z","dependencies_parsed_at":"2026-02-08T01:00:42.332Z","dependency_job_id":null,"html_url":"https://github.com/achendev/FineTerm","commit_stats":null,"previous_names":["achendev/nativetab","achendev/fineterm"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/achendev/FineTerm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achendev%2FFineTerm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achendev%2FFineTerm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achendev%2FFineTerm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achendev%2FFineTerm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/achendev","download_url":"https://codeload.github.com/achendev/FineTerm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/achendev%2FFineTerm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29215852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T00:10:47.190Z","status":"ssl_error","status_checked_at":"2026-02-08T00:10:43.589Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["macos","productivity","putty","terminal","wrapper"],"created_at":"2026-02-07T00:17:29.615Z","updated_at":"2026-02-08T01:00:53.288Z","avatar_url":"https://github.com/achendev.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FineTerm\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/achendev/FineTerm/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/downloads/achendev/FineTerm/total.svg\" alt=\"Total Downloads\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/achendev/FineTerm\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/achendev/FineTerm?style=social\" alt=\"Star on GitHub\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**The missing Connection Manager and Input Enhancer for macOS Terminal.**\n\nFineTerm 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.\n\nIt 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.\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"700\" alt=\"FineTerm\" src=\"https://github.com/user-attachments/assets/5aa439ff-e1d0-40d3-a25c-f6bb0ba5b68a\" /\u003e\n\u003c/p\u003e\n\n## Why FineTerm?\n\nMost terminal replacements (Hyper, Alacritty, iTerm, Tabby) require you to abandon the highly optimized, battery-friendly native macOS Terminal. \n\n**FineTerm is different:**\n1.  **Native Performance:** You still use the actual Terminal.app. Now it's just automated.\n2.  **Unix/Windows Mouse Behavior:** Finally brings **\"Copy on Select\"** (PuTTY/Linux style) and **\"Paste on Right Click\"** to the native Mac Terminal.\n3.  **Focus Flow:** A seamless Global Hotkey system allows you to toggle between your connection list and your active terminal instantly.\n4.  **Zero Bloat:** Written in pure Swift. No Electron, no Python, no heavy dependencies. 5MB memory footprint.\n\n---\n\n## Key Features\n\n### 1. Connection Manager\n*   **Organized:** Group your SSH, Telnet, or local script commands into foldable folders.\n*   **Smart Search:** Instant \"Spotlight-style\" search with multi-word matching (e.g., \"db prod\" finds \"Production DB Server\").\n*   **Drag \u0026 Drop:** Reorder connections and organize groups intuitively.\n*   **Import/Export:** Share your server lists via JSON.\n*   **Terminal Tab Naming:** Automatically sets the Terminal tab title to your connection name.\n\n### 2. \"Pro\" Input Interceptors\n*   **Copy on Select:** Simply dragging your mouse over text in the Terminal automatically copies it to the clipboard. No more `Cmd+C`.\n*   **Paste on Right Click:** Right-clicking anywhere in the Terminal window pastes your clipboard.\n*   *Note: These features operate by intercepting mouse events specifically when Terminal is focused and injecting keystrokes.*\n\n### 3. The \"Focus Loop\"\n*   **Configurable Global Hotkey (Default: `Cmd+N`):** \n    *   **From Terminal:** Press the hotkey to instantly bring the Connection List to the front.\n    *   **System-wide Mode:** Optionally enable global mode to activate FineTerm from any application.\n    *   **Second Activation:** When FineTerm is already focused, pressing the hotkey again instantly switches back to Terminal—perfect for quick glances at your connection list.\n*   Select your server, hit Enter, and it launches a new tab in your existing Terminal window.\n\n---\n\n## Installation \u0026 Build\n\nThis project is a raw Swift codebase. You don't need Xcode to build it, just the command line tools.\n\n1.  **Build the App:**\n    ```bash\n    chmod +x build.sh\n    ./build.sh\n    ```\n    This creates the app bundle at `./FineTerm.app`.\n\n2.  **Run:**\n    Double-click `FineTerm.app` or run from terminal:\n    ```bash\n    open FineTerm.app\n    ```\n\n3.  **⚠️ CRITICAL: Accessibility Permissions**\n    Because this app intercepts global keystrokes and mouse events (for Copy/Paste), macOS requires **Accessibility Access**.\n    \n    1.  On first launch, the app will check for permissions.\n    2.  Go to **System Settings -\u003e Privacy \u0026 Security -\u003e Accessibility**.\n    3.  If `FineTerm` is in the list, enable the toggle.\n    4.  If not, drag the `FineTerm.app` file into the list manually.\n    5.  **Restart the app.**\n\n---\n\n## Usage Guide\n\n### Managing Connections\n*   **Add:** Click the \"+\" button or fill in the form at the bottom.\n*   **Edit:** Click a row to load it into the editor.\n*   **Connect:** Click the \"Play\" icon or press `Enter` on a highlighted row.\n*   **Search:** Just start typing. The list filters automatically with smart multi-word matching. Use `Up`/`Down` arrows to navigate and `Enter` to connect.\n\n\u003cp align=\"center\"\u003e\n\u003cimg height=\"500\" alt=\"FineTerm Search\" src=\"https://github.com/user-attachments/assets/b76a072d-3aad-4341-adfe-568a48442f57\" /\u003e\n\u003c/p\u003e\n\n### Keyboard Shortcuts\n| Context | Shortcut | Action |\n| :--- | :--- | :--- |\n| **Terminal** | `Cmd + N` | Switch focus to FineTerm (Configurable) |\n| **FineTerm (search focused)** | `Cmd + N` | Switch back to Terminal (if enabled) |\n| **FineTerm** | `Up / Down` | Navigate connection list |\n| **FineTerm** | `Enter` | Connect to selected server |\n\n### Settings\nClick the ⚙️ icon to configure:\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"360\" alt=\"NatievTab Settings\" src=\"https://github.com/user-attachments/assets/28ca2698-4116-4405-93a7-7c08412ee8cb\" /\u003e\n\u003c/p\u003e\n\n**Global Activation Shortcut:**\n*   **Modifier + Key:** Choose Command, Control, or Option plus any key.\n*   **System-wide (Global):** Enable to activate FineTerm from any application, not just Terminal.\n*   **Second Activation to Terminal:** When enabled, pressing the shortcut again while FineTerm is focused switches back to Terminal.\n\n**Command Execution Wrappers:**\n*   **Prefix:** Commands prepended before your connection (e.g., `unset HISTFILE ; clear ;`).\n*   **Suffix:** Commands appended after (e.g., `\u0026\u0026 exit`).\n*   **Set Terminal Tab Name:** Automatically names the Terminal tab after your connection.\n*   **Template Variables:** Use these in prefix/suffix for dynamic values:\n    *   `$PROFILE_NAME` – Replaced with the connection name (e.g., \"Production Server\")\n    *   `$PROFILE_COMMAND` – Replaced with the connection command (e.g., \"ssh user@example.com\")\n\n**UI Preferences:**\n*   **Hide Command in List:** Show only connection names, hiding the command details.\n*   **Smart Search (Multi-word):** Enables AND-logic search where \"db prod\" matches \"prod db\".\n\n**Mouse Behavior:**\n*   **Copy on Select:** Toggle Linux/PuTTY-style copy behavior.\n*   **Paste on Right Click:** Toggle right-click paste behavior.\n\n---\n\n## How It Works (Architecture)\n\n1.  **SwiftUI Interface:** Renders the lightweight list and settings.\n2.  **AppleScript Bridge:** When you click \"Connect\", the app talks to Terminal.app via AppleScript to spawn tabs and type commands.\n3.  **CGEventTap (Interceptors):** Low-level CoreGraphics APIs hook into the system event stream.\n    *   The app filters for events only when `com.apple.Terminal` is the frontmost application (unless global mode is enabled).\n    *   It swallows specific events (like Right Click) and injects simulated keystrokes (`Cmd+V`) in their place.\n\n## License\nMIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fachendev%2Ffineterm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fachendev%2Ffineterm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fachendev%2Ffineterm/lists"}