Skip to content

Eitan-Shteinberg/tmax

 
 

Repository files navigation

tmax logo

tmax

A powerful cross-platform multi-terminal app with tiling layouts, floating panels, and a keyboard-driven workflow.

Built with Electron, React, TypeScript, xterm.js, and node-pty.

Windows macOS Linux Electron TypeScript

tmax Screenshot

Features

Multiple Terminals in One View

  • Tiling layout with horizontal/vertical splits (binary tree, like tmux)
  • Floating panels that can be dragged, resized, and maximized
  • Equalize all panes to the same size with one shortcut

Grid View Mode

  • Toggle between Focus (single terminal) and Grid layout (Ctrl+Shift+F)
  • Grid auto-arranges terminals: 2x2, 3x2, etc. based on terminal count
  • Cycle grid column count with Ctrl+Shift+L (1-col stack, 2-col, 3-col, ...)
  • Fully resizable dividers in grid mode

AI Sessions Panel

  • Monitor GitHub Copilot and Claude Code sessions in real-time (Ctrl+Shift+C)
  • Shows session status, summary, branch, repo, message/tool counts, and relative time
  • Click a session to resume it directly in a new terminal pane
  • Filter tabs: All / Copilot / Claude Code
  • Search across sessions by name, branch, cwd, or summary
  • Desktop notifications when a Copilot session needs approval or input
  • Sessions automatically filtered to last 7 days and deduplicated
  • Configurable base commands for Copilot and Claude Code sessions via Settings > Terminal

Keyboard-Driven Workflow

  • Command palette (Ctrl+Shift+P) with every action searchable
  • Jump to any terminal by name (Ctrl+Shift+G)
  • Split, move, resize, and navigate -- all from the keyboard
  • Every shortcut is fully configurable

Drag & Drop

  • Drag tabs to split panes (left/right/top/bottom indicators)
  • Drag to swap terminal positions
  • Drag to detach as floating panel
  • Visual drop zone labels showing exactly where the terminal will land

Session Management

  • Auto-save/restore on close, crash, or reboot (saves every 5 seconds)
  • Named layouts: save and load terminal arrangements with titles and working directories
  • Startup commands per terminal -- restored when loading a layout

External Links

  • Links open in your default browser, not inside the app

Configurable Everything

  • Settings UI (Ctrl+,) with tabs for Terminal, Keybindings, Shells, and Theme
  • Re-record any keybinding by clicking it
  • Add/remove shell profiles (PowerShell, CMD, WSL, or any executable)
  • Set default start folder globally or per shell
  • 10 built-in color themes (or create your own with color pickers)

Keyboard Shortcuts

Shortcut Action
Ctrl+Shift+P Command palette
Ctrl+Shift+N New terminal
Ctrl+Shift+W Close terminal
Ctrl+Shift+R Rename terminal
Ctrl+Shift+G Jump to terminal by name
Shift+Arrow Move focus between panes
Ctrl+Shift+Arrow Move/swap terminal in direction
Ctrl+Alt+Arrow Split in that direction
Ctrl+Shift+F Toggle view mode (Focus / Grid)
Ctrl+Shift+L Cycle grid column layout
Ctrl+Shift+C AI Sessions panel (Copilot / Claude)
Ctrl+Shift+D Directory favorites panel
Ctrl+Shift+E Equalize all pane sizes
Ctrl+Shift+Alt+Arrow Resize pane
Ctrl+= / Ctrl+- Zoom in / out
Ctrl+0 Reset zoom
Ctrl+, Open settings
Ctrl+Shift+/ Show all shortcuts

All shortcuts are remappable in Settings > Keybindings.

Tab Context Menu

Right-click any tab for:

  • Rename
  • Split Right / Down
  • Float / Dock
  • Set Startup Command
  • New Terminal (pick shell)
  • Close / Close Others / Close All

Download

Download the latest version from the Releases page. Available for Windows (.exe installer + portable .zip), macOS (.dmg for Apple Silicon and Intel), and Linux (.deb, .rpm).

macOS: If you see "tmax is damaged and can't be opened", run: xattr -cr /Applications/tmax.app

Building from Source

Prerequisites

  • Node.js 18+
  • npm
  • Windows: Visual Studio 2022 Build Tools with "Desktop development with C++" workload (for node-pty native compilation). VS 2025+ is not yet supported by node-gyp — if you only have VS 2025, install the 2022 Build Tools alongside it and set GYP_MSVS_VERSION=2022 before running npm install.
  • macOS: Xcode Command Line Tools (xcode-select --install)
  • Linux: build-essential, python3, libx11-dev, libxkbfile-dev

Install & Run

git clone https://github.com/InbarR/tmax.git
cd tmax
npm install
npm start

Build Installer

npm run build

Output per platform:

  • Windows: out/make/squirrel.windows/x64/tmax-1.0.0.Setup.exe
  • macOS: out/make/*.dmg
  • Linux: out/make/deb/x64/*.deb and out/make/rpm/x64/*.rpm
  • All: portable .zip

Architecture

src/
  main/           Electron main process
    main.ts                     Window creation, IPC handlers
    pty-manager.ts              node-pty lifecycle management
    config-store.ts             electron-store config persistence
    copilot-session-monitor.ts  Scans ~/.copilot/session-state/
    copilot-session-watcher.ts  File watcher for Copilot sessions
    copilot-events-parser.ts    Incremental JSONL parser for Copilot events
    copilot-notification.ts     Desktop notifications for Copilot
    claude-code-session-monitor.ts  Scans ~/.claude/projects/
    claude-code-session-watcher.ts  File watcher for Claude Code sessions
    claude-code-events-parser.ts    JSONL parser for Claude Code sessions
  preload/        Secure IPC bridge (contextBridge)
  renderer/       React UI
    state/          Zustand store + binary tree / grid layout engine
    components/     Terminal, TabBar, TilingLayout, FloatingPanel,
                    CopilotPanel, CommandPalette, Settings, etc.
    hooks/          Keybindings, drag & drop, PTY helpers
    styles/         Global CSS (Catppuccin theme)
  shared/         IPC channel constants, AI session types

Key design decisions:

  • Binary tree layout engine for tmux-style tiling with arbitrary splits
  • Zustand for state management (terminals, layout, focus, config)
  • @dnd-kit for structured drag & drop with per-pane drop zones
  • node-pty with ConPTY for native Windows terminal emulation
  • contextIsolation: true for Electron security
  • Session auto-save every 5s for crash recovery

Configuration

Settings are stored at:

%APPDATA%/tmax/tmax-config.json

You can edit this file directly or use the Settings UI (Ctrl+,).

AI Session Commands

The commands used to resume Copilot and Claude Code sessions are configurable in Settings > Terminal:

Setting Default Description
Copilot Command agency copilot Base command for Copilot sessions
Claude Code Command claude Base command for Claude Code sessions

This lets you use custom aliases (e.g., frodo instead of agency copilot) or wrapper scripts. The configured command is invoked as <command> --resume <sessionId>.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 83.4%
  • CSS 13.5%
  • JavaScript 1.9%
  • PowerShell 1.1%
  • HTML 0.1%