Tabby Terminal

repository·master·Indexed 13 days ago

https://github.com/eugeny/tabby

A highly configurable terminal emulator, SSH, and serial client for Windows, macOS, and Linux. It features integrated connection management, support for multiple shells (PowerShell, WSL, Git-Bash, etc.), and an extensible plugin system. Tabby includes an encrypted container for SSH secrets, a built-in serial terminal, and a CLI for controlling the application via commands like open, run, and profile.

Tokens
16.2K
Snippets
47
Records
82
Agent score
97%

What's inside Tabby

  1. Overview of Tabby features

    master

    Tabby is a highly configurable terminal emulator, SSH, and serial client. Key capabilities include:

    Terminal Capabilities

    • Shell Support: PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder, and CMD.
    • Layouts: Multiple nested split panes and tabs on any side of the window.
    • UI Features: Font ligatures, progress detection, notification on process completion, and an optional dockable "Quake console" window.
    • Input/Output: Full Unicode support, bracketed paste, and multiline paste warnings.

    SSH & Remote Access

    • SSH Client: SSH2 client with connection management, X11 and port forwarding, and automatic jump host management.
    • Agent Support: Agent forwarding (including Pageant and Windows native OpenSSH Agent).
    • File Transfer: Direct file transfer to/from SSH sessions via Zmodem.
    • Serial Terminal: Integrated serial terminal with saved connections, newline conversion, and automatic reconnection.

    Security & Configuration

    • Secrets Management: Integrated encrypted container for SSH secrets and configuration.
    • Customization: Extensive theming, color schemes, and fully configurable multi-chord shortcuts.
  2. What is Tabby?

    master

    Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH client, and serial terminal for Windows, macOS, and Linux.

    Key Capabilities:

    • Terminal: Supports multiple nested split panels, tabs, and a 'Quake-style' dockable window. It provides full Unicode support and handles fast output without locking up.
    • SSH Client: Includes an SSH2 client with a connection manager, X11/port forwarding, automatic jump host management, and agent forwarding (supporting Pageant and native Windows OpenSSH agents).
    • Serial Terminal: Supports saved connections, line-based input, optional hex/hexdump modes, and automatic reconnection.
    • Shell Support: Compatible with PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder, and CMD.
    • Security: Features an integrated encrypted container for SSH secrets and configuration.

    Important Distinctions:

    • Tabby is an alternative to standard terminals (like macOS Terminal.app or iTerm) and SSH clients (like PuTTY).
    • Tabby is not a new shell (like MinGW or Cygwin) and is not designed to be a lightweight terminal. If RAM usage is your primary concern, consider Alacritty or Conemu.
  3. Use the Tabby Terminal Plugin for terminal management

    master

    The tabby-terminal plugin provides core terminal capabilities within Tabby, including:

    • Terminal tabs: Manage multiple terminal sessions using a tabbed interface.
    • Terminal frontends: Various UI representations for terminal output.
    • Session management: Handling the lifecycle and state of terminal sessions.
  4. What the Tabby Linkifier Plugin does

    master

    The Tabby Linkifier Plugin enhances the terminal experience by identifying specific text patterns and making them interactive. It automatically detects:

    • URLs: Makes web links clickable.
    • IP Addresses: Makes network addresses clickable.
    • File Paths: Makes local or remote file paths clickable.

    When you interact with these identified elements, the plugin provides a context menu that allows you to quickly copy the detected string to your clipboard.

  5. How Tabby plugins work

    master

    Tabby loads plugins from three locations:

    1. The source checkout (during development).
    2. The user's plugins directory (accessible via Settings > Plugins in the app).
    3. The directory specified by the TABBY_PLUGINS environment variable.

    Plugin Requirements

    • Discovery: A module is only loaded if its package.json contains the tabby-plugin keyword. To publish to NPM so it appears in the Plugin Manager, you must include this keyword.
    • Structure: A plugin should provide a default export which is an Angular NgModule (or NgModuleWithDependencies). This module is injected into the app's root module.
    • Development Mode: To run Tabby while developing a plugin located in your current directory, use:
    TABBY_PLUGINS=$(pwd) tabby --debug

    Extension Points

    Plugins extend Tabby by providing singular or multi providers. Key extension points can be found in the following files:

    • tabby-core/src/api.ts
    • tabby-settings/src/api.ts
    • tabby-local/src/api.ts
    • tabby-terminal/src/api.ts
  6. What Tabby is and isn't

    master

    What Tabby is:

    A highly configurable terminal emulator, SSH client, and serial console client for Windows 10, macOS, and Linux. It serves as an alternative to standard consoles like Windows conhost, PowerShell ISE, PuTTY, Terminal.app, or iTerm.

  7. Download and install Tabby

    master

    Tabby is available for Windows, macOS, and Linux. You can obtain it through the following methods:

    • Latest Releases: Download the latest stable version from the GitHub Releases page.
    • Nightly Builds: For the latest experimental features, use the Nightly Builds.
    • Package Repositories: Install via PackageCloud for Debian/Ubuntu-based or RPM-based systems.
    • Web App: Use the SSH, SFTP, and Telnet client as a web application at tabby.sh/app.
  8. Contributing to Tabby

    master
    Tabby welcomes pull requests and new plugins. For detailed information on how to contribute to the project and short tutorials on how to develop plugins, refer to the official documentation and hacking guides.
  9. Install and run Tabby from source

    master

    To develop on Tabby, clone the repository and ensure you have Node.js (version 15 or newer) and Yarn installed.

    macOS & Windows

    1. Install dependencies:
    yarn
    1. Build the project:
    yarn run build
    1. Start the application:
    yarn start

    Linux (Debian/Ubuntu)

    1. Install system dependencies:
    sudo apt install libfontconfig-dev libsecret-1-dev libarchive-tools libnss3 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1 cmake
    1. Install project dependencies:
    yarn
    1. Build and start as described above.

    Note: If you have forked the repository, you may need to run git pull --tags upstream master before installing node modules to ensure correct versions.

    yarn
    yarn run build
    yarn start
  10. Build Tabby installers

    master

    To generate installers for different platforms, first perform a standard build (yarn run build). Then, run the appropriate packaging script from the root directory. The resulting artifacts will be located in the dist folder.

    • Windows: node scripts/build-windows.mjs
    • Linux: node scripts/build-linux.mjs
    • macOS: node scripts/build-macos.mjs

    Before running the platform-specific build, you must run the plugin pre-packaging script:

    node scripts/prepackage-plugins.mjs
    node scripts/prepackage-plugins.mjs
    node scripts/build-windows.mjs