Convert Figma logo to code with AI

gnachman logoiTerm2

iTerm2 is a terminal emulator for Mac OS X that does amazing things.

16,980
1,304
16,980
48

Top Related Projects

62,439

A cross-platform, OpenGL terminal emulator.

101,819

The new Windows Terminal and the original Windows console host, all in the same place!

31,271

If you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.

24,169

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

44,700

A terminal built on web technologies

41,889

tmux source code

Quick Overview

iTerm2 is a powerful and feature-rich terminal emulator for macOS. It provides a wide range of customization options, advanced functionality, and a user-friendly interface to enhance the terminal experience for developers, system administrators, and power users.

Pros

  • Extensive Customization: iTerm2 offers a vast array of customization options, allowing users to personalize the terminal's appearance, behavior, and functionality to suit their preferences.
  • Advanced Features: The terminal emulator includes features such as split-pane support, hotkey-triggered actions, and advanced search capabilities, improving productivity and workflow.
  • Improved Usability: iTerm2 provides a clean and intuitive user interface, making it easier for users to navigate and perform tasks within the terminal.
  • Active Development: The project is actively maintained and regularly updated, ensuring compatibility with the latest macOS versions and addressing user feedback and bug reports.

Cons

  • macOS-Specific: iTerm2 is designed exclusively for macOS, limiting its availability and usage on other operating systems.
  • Learning Curve: The extensive customization options and advanced features of iTerm2 may present a steeper learning curve for some users, especially those new to the terminal environment.
  • Resource Consumption: Depending on the user's system configuration and the number of customizations, iTerm2 may consume more system resources compared to the default macOS Terminal application.
  • Proprietary License: iTerm2 is released under a proprietary license, which may be a concern for users who prefer open-source software.

Getting Started

To get started with iTerm2, follow these steps:

  1. Download the latest version of iTerm2 from the official website: https://iterm2.com/downloads.html.
  2. Install the application by running the downloaded package.
  3. Launch iTerm2 from the Applications folder or by searching for it in Spotlight.
  4. Explore the various customization options available in the Preferences menu, such as setting the color scheme, adjusting the font, and configuring keyboard shortcuts.
  5. Familiarize yourself with the advanced features, such as split-pane support, hotkey-triggered actions, and the search functionality.
  6. Customize the terminal to your liking and enjoy the enhanced terminal experience.

Competitor Comparisons

62,439

A cross-platform, OpenGL terminal emulator.

Pros of Alacritty

  • Faster performance due to GPU acceleration
  • Cross-platform compatibility (Windows, macOS, Linux)
  • Minimal resource usage and lightweight design

Cons of Alacritty

  • Fewer built-in features and customization options
  • Less user-friendly for beginners
  • Limited support for complex terminal operations

Code Comparison

iTerm2 (Objective-C):

- (void)setBackgroundColor:(NSColor *)color {
    _backgroundColor = color;
    [self setNeedsDisplay:YES];
}

Alacritty (Rust):

pub fn set_background_color(&mut self, color: Rgb) {
    self.colors.background = color;
    self.dirty = true;
}

Both examples show methods for setting the background color, but iTerm2 uses Objective-C and Cocoa frameworks, while Alacritty employs Rust for better performance and cross-platform compatibility.

iTerm2 offers a more feature-rich experience with extensive customization options, ideal for power users on macOS. Alacritty, on the other hand, prioritizes speed and efficiency across multiple platforms, making it suitable for users who prefer a minimalist, high-performance terminal emulator.

101,819

The new Windows Terminal and the original Windows console host, all in the same place!

Pros of Terminal

  • Cross-platform support (Windows, macOS, Linux)
  • Deeper Windows integration and customization options
  • Active development with frequent updates from Microsoft

Cons of Terminal

  • Less extensive plugin ecosystem compared to iTerm2
  • Fewer advanced features like split panes and search functionality
  • Limited theming options compared to iTerm2's robust customization

Code Comparison

iTerm2 (Objective-C):

- (void)setSessionTitle:(NSString *)title
{
    [_delegate sessionDidUpdateTitle:self];
    [_screen setWindowTitle:title];
}

Terminal (C++):

void TerminalCore::SetWindowTitle(const std::wstring_view newTitle)
{
    _title = newTitle;
    _pfnTitleChanged(_title);
}

Both projects implement similar functionality for setting window titles, but use different programming languages and slightly different approaches. iTerm2 uses Objective-C and relies on delegate methods, while Terminal uses C++ and employs a callback function.

iTerm2 offers a more mature and feature-rich experience on macOS, with extensive customization options and a large plugin ecosystem. Terminal, on the other hand, provides a solid cross-platform solution with strong Windows integration, making it an excellent choice for users working across different operating systems.

31,271

If you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.

Pros of kitty

  • Faster rendering due to GPU acceleration
  • More customizable and extensible through configuration files
  • Supports ligatures and advanced font features

Cons of kitty

  • Steeper learning curve for configuration
  • Less intuitive GUI for settings compared to iTerm2
  • May have compatibility issues with some terminal applications

Code Comparison

kitty configuration example:

font_family      Fira Code
font_size        12.0
cursor_shape     beam
background_opacity 0.9

iTerm2 configuration example (via preferences plist):

<key>Normal Font</key>
<string>FiraCode-Regular 12</string>
<key>Cursor Type</key>
<integer>2</integer>
<key>Transparency</key>
<real>0.10000000000000001</real>

Both terminals offer extensive customization options, but kitty's configuration is more human-readable and easier to version control. iTerm2's settings are primarily managed through a GUI, which can be more user-friendly for beginners but less flexible for advanced users.

24,169

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

Pros of WezTerm

  • Cross-platform support (Windows, macOS, Linux)
  • Written in Rust, offering better performance and memory safety
  • Extensive configuration options through Lua scripting

Cons of WezTerm

  • Smaller community and ecosystem compared to iTerm2
  • Less mature and potentially less stable than iTerm2
  • Steeper learning curve for advanced customization

Code Comparison

iTerm2 (Objective-C):

- (void)setBackgroundColor:(NSColor *)color {
    _backgroundColor = color;
    [self setNeedsDisplay:YES];
}

WezTerm (Rust):

pub fn set_background_color(&mut self, color: RgbaColor) {
    self.background_color = color;
    self.needs_redraw = true;
}

Summary

WezTerm is a modern, cross-platform terminal emulator written in Rust, offering excellent performance and extensive customization through Lua scripting. However, it has a smaller community and ecosystem compared to iTerm2, which is more mature and widely used on macOS. iTerm2 benefits from a larger user base and longer development history, but is limited to macOS. The choice between the two depends on the user's specific needs, platform requirements, and preference for customization vs. stability.

44,700

A terminal built on web technologies

Pros of Hyper

  • Built with web technologies (HTML, CSS, JavaScript), making it highly customizable and extensible
  • Cross-platform support (Windows, macOS, Linux) with a consistent experience
  • Active community with a large ecosystem of plugins and themes

Cons of Hyper

  • Performance can be slower compared to native terminal emulators like iTerm2
  • Less mature and may have fewer advanced features out of the box
  • Higher resource usage due to Electron framework

Code Comparison

iTerm2 (Objective-C):

- (void)setBackgroundColor:(NSColor *)color {
    _backgroundColor = color;
    [self setNeedsDisplay:YES];
}

Hyper (JavaScript):

setBackgroundColor(color) {
  this.backgroundColor = color;
  this.forceUpdate();
}

Both examples show methods for setting the background color, but iTerm2 uses Objective-C while Hyper uses JavaScript, reflecting their different underlying technologies.

41,889

tmux source code

Pros of tmux

  • Cross-platform compatibility (Linux, macOS, BSD)
  • Lightweight and runs in terminal, no GUI overhead
  • Persistent sessions survive network disconnects

Cons of tmux

  • Steeper learning curve for new users
  • Less intuitive mouse support and graphical features
  • Limited built-in customization options without plugins

Code Comparison

tmux configuration example:

# ~/.tmux.conf
set -g mouse on
set -g status-bg black
set -g status-fg white
bind-key v split-window -h
bind-key s split-window -v

iTerm2 doesn't have a direct configuration file, but uses a GUI for preferences. However, it supports custom scripts:

# Custom iTerm2 Python script
import iterm2

async def main(connection):
    app = await iterm2.async_get_app(connection)
    window = app.current_terminal_window
    await window.async_create_tab()

iterm2.run_until_complete(main)

Both tmux and iTerm2 offer powerful terminal multiplexing capabilities, but cater to different user preferences. tmux excels in lightweight, cross-platform functionality and session persistence, while iTerm2 provides a more user-friendly GUI experience with extensive customization options for macOS users.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

iTerm2

macOS Terminal Replacement

Version Platform

Website • Downloads • Documentation • Features


About

iTerm2 is a powerful terminal emulator for macOS that brings the terminal into the modern age with features you never knew you always wanted.

Key Features

  • tmux Integration - Native iTerm2 windows/tabs replace tmux's text-based interface. Run tmux -CC and tmux windows become real macOS windows. Sessions persist through crashes, SSH disconnects, and even app upgrades. Collaborate by having two people attach to the same session.
  • Shell Integration - Deep shell awareness that tracks commands, directories, hostnames, and usernames. Enables click-to-download files via SCP, drag-and-drop uploads, command history per host, recent directories by "frecency," and marks at each prompt.
  • AI Chat - Built-in LLM chat window that can optionally interact with terminal contents. Link sessions to get context-aware help, run commands on your behalf, or explain output with annotations.
  • Inline Images - Display images (including animated GIFs) directly in the terminal. Use imgcat to view photos, charts, or visual output without leaving your workflow.
  • Automatic Profile Switching - Terminal appearance changes automatically based on hostname, username, directory, or running command. SSH to production? Background turns red. Different environments get different visual contexts.
  • Dedicated Hotkey Windows - System-wide hotkey summons a terminal that slides down from the top of the screen (or any edge), even over fullscreen apps. Pin it or let it auto-hide.
  • Session Restoration - Sessions run in long-lived server processes. If iTerm2 crashes or upgrades, your shells keep running. When iTerm2 restarts, it reconnects to your sessions exactly where you left off.
  • Built-in Web Browser - Browser profiles integrate web browsing into iTerm2's window/tab/pane hierarchy. Copy mode, triggers, AI chat, and other terminal features work in browser sessions.
  • Configurable Status Bar - Per-session status bar showing git branch, CPU/memory graphs, current directory, hostname, custom interpolated strings, or Python API components.
  • Triggers - Regex patterns that fire actions when matched: highlight text, run commands, send notifications, open password manager, set marks, or invoke Python scripts.
  • Smart Selection - Quad-click selects semantic objects (URLs, file paths, email addresses, quoted strings). Right-click for context actions. Cmd-click to open.
  • Copy Mode - Vim-like keyboard selection. Navigate and select text without touching the mouse. Works with marks to jump between command prompts.
  • Instant Replay - Scrub backward through terminal history to see exactly what was on screen at any moment, with timestamps. Perfect for catching fleeting errors.
  • Python Scripting API - Full automation and customization via Python. Create custom status bar components, triggers, menu items, or entirely new features.
  • Open Quickly - Cmd-Shift-O opens a search across all sessions by tab title, command, hostname, directory, or badge. Navigate large session collections instantly.

Installation

Download

Get the latest version from iterm2.com/downloads

For the bleeding edge without building, try the nightly build.

Build from Source

Note: Development builds may be less stable than official releases.

Prerequisites

  • The most recent version of Xcode (with Command Line Tools). You can minimize suffering by using the same Xcode that is in the file last-xcode-version.
  • Homebrew
  • Rustup

Clone

git clone https://github.com/gnachman/iTerm2.git

Setup (first time)

make setup

This installs Homebrew dependencies (cmake, pkg-config, python3, etc.), SF Symbols, Rust cross-compilation support, downloads the Metal Toolchain, initializes submodules, and compiles third-party libraries (OpenSSL, libsixel, libgit2, Sparkle, etc.) inside a sandbox.

Re-run make paranoid-deps whenever your active Xcode version changes — the file last-xcode-version tracks which version was last used.

Build

make Development

Run

make run

Architecture

Builds target your native architecture by default. To produce a universal (arm64 + x86_64) binary:

UNIVERSAL=1 make Development

Code signing

Code signing is disabled by default to keep contributor builds simple. To enable it with the project's signing identity:

SIGNED=1 make Development

Building in Xcode

If you prefer building from Xcode instead of the command line:

  1. Complete the Clone and Setup steps above.

  2. Configure code signing with your team ID:

    tools/set_team_id.sh YOUR_TEAM_ID
    

    This script updates DEVELOPMENT_TEAM in all Xcode project files (iTerm2 and its dependencies like Sparkle, SwiftyMarkdown, etc.) so code signing works with your identity.

    To find your team ID: Open Keychain Access, find your "Apple Development" or "Developer ID" certificate, and look for the 10-character string in parentheses (e.g., "H7V7XYVQ7D").

    No Developer account? Skip this step and select "Sign to Run Locally" in Xcode's Signing & Capabilities tab.

  3. Open iTerm2.xcodeproj in Xcode.

  4. Edit Scheme (Cmd-<) and set Build Configuration to Development.

  5. Press Cmd-R to build and run.


Development

Contributing

We welcome contributions! Please read our contribution guide before submitting pull requests.


Bug Reports & Issues

Note: We use GitLab for issues because it provides better support for attachments.


Resources

ResourceLink
Official Websiteiterm2.com
Documentationiterm2.com/documentation
CommunityiTerm2 Discussions
Downloadsiterm2.com/downloads

License

iTerm2 is distributed under the GPLv3 license.


Support

If you love iTerm2, consider: