Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
par-term
A cross-platform, GPU-accelerated terminal emulator frontend built with Rust, powered by par-term-emu-core-rust. Designed for high performance, modern typography, and rich graphics support.

What's New in 0.23.0
⨠New Features
- Content Prettifier: Detects structured content in terminal output (Markdown, JSON, YAML, TOML, XML, CSV, diffs, logs, diagrams, SQL results, stack traces) and renders with syntax highlighting, table formatting, and color-coded diffs â pluggable architecture with custom renderer support, per-profile overrides, and Settings UI tab
- Font Hinting Enabled by Default: Improved text sharpness at common display sizes (toggle in Settings â Appearance)
đ Bug Fixes
- Inline Graphics in Split Pane Mode: Sixel/iTerm2/Kitty graphics now render correctly in split-pane layouts
- Scrollback in Split Pane Mode: Mouse-wheel scroll, Page Up/Down, and keyboard marks navigation now work in split panes
- Scrollbar in Split Pane Mode: Scrollbar now appears inside the focused pane's bounds
clearRemoves Inline Graphics: ED 2/ED 3 erase-display sequences now clear all inline graphics- Window Arrangement DPI Fix: Arrangement restore now works correctly across mixed-DPI multi-monitor setups
- Character Rendering Artifacts: Fixed thin bright lines at cell edges from bilinear sampling bleed
- Symbol Rendering: Fixed symbols from emoji fonts (dingbats, misc symbols) rendering incorrectly
- Text Selection in Mouse-Tracking Apps: Shift+click/drag now bypasses app mouse tracking for local selection
- tmux Pane Click Fix: Clicks no longer blocked by clipboard image guard
- Trackpad Jitter Selection: Increased drag dead-zone to suppress accidental micro-selections
- Tab Emoji Rendering: Sanitized emoji/ZWJ sequences in tab labels to avoid tofu
- Settings Search Keywords: Fixed and expanded search keywords across all settings tabs
- Startup Error Message: par-term now prints clear errors on startup failure (e.g., missing display server)
- Agent Screenshot Tool:
terminal_screenshotMCP tool for visual terminal capture by ACP agents - Code Block Rendering in Chat: Agent messages with fenced code blocks render with dark background, border, language label, and monospace font
- Cancel Queued Messages / Streaming: Cancel buttons for queued and in-progress messages
- Multi-line Chat Input: Enter sends, Shift+Enter inserts newline, grows up to 6 rows
- Auto-Approval Chat Notifications: Auto-approved tool calls show in chat history
- Best-Effort Context Restore: Reconnecting preserves prior chat context
- Glass Sphere Bounce Shader: New background shader
- Fixed: Input/shader lag, scrollbar repositioning, new-tab button clipping, assistant panel overlap, clipboard image loss, tab bar borders
- Nerd Font Icons for Profile Picker: Replaced emoji presets with ~120 curated Nerd Font icons across 10 categories with descriptive tooltips
- Tab Icon via Context Menu: Right-click any tab to pick a custom icon from the Nerd Font grid â persists across sessions, layouts, and tab duplication
- Tab Title Mode: New
tab_title_modeconfig option (auto/osc_only) controls automatic tab title updates - Rename Tab: Right-click any tab to set a custom static name â enter blank to revert to automatic behavior
- Major Idle CPU Reduction: Reduced idle CPU from ~103% to ~18-25% via conditional dirty tracking, fast render path, adaptive polling backoff
- Fixed: Layout restore tab properties, input lag, scrollbar overlap, geometric shapes, clipboard loss, settings revert, tab bar borders
- Status Bar Update Widget: New
UpdateAvailablewidget with clickable update dialog - Rain Glass Shader: New
rain-glass.glslbackground shader - Inactive Tab Outline-Only Mode: New
tab_inactive_outline_onlyoption - File Transfer Progress Overlay: Upload/download progress bars in bottom-right overlay
- Inline Image Display Fix: Fixed images >750 KB not rendering
- Upload Over SSH Fix: Fixed uploads hanging indefinitely
- Default
window_paddingâ 0.0,font_hintingâ false,tab_bar_modeâalways
⨠New Features
- Configurable Link Highlight Color: Link highlight color for detected URLs and file paths is now configurable via
link_highlight_colorsetting - Link Underline Rendering: Detected URLs and file paths now render with visible underlines in the GPU text pipeline
- Stipple Underline Style: Added
link_underline_stylesetting with Solid and Stipple options
đ Bug Fixes
- Fast Window Shutdown: Fixed slow app close (beachball on macOS) that scaled with number of open tabs
- Settings Sidebar Icon: Fixed Input tab (â¨ī¸) showing an empty box
- Crate Package Size: Reduced package from 24.7MiB to 3.9MiB
⨠New Features
- Quick Settings Shader Toggles: BG Shader and Cursor Shader toggle checkboxes in the settings UI quick settings strip
- Focus Event Forwarding: Forward CSI focus-in/out sequences to PTYs with DECSET 1004 focus tracking enabled
đ Bug Fixes
- Dingbat/Symbol Monochrome Rendering: Fixed dingbat characters rendering as colorful emoji instead of monochrome symbols
- Focus Click Clipboard Loss: Suppress first mouse click that focuses the window to prevent clipboard clearing
- Image Paste in Claude Code: Fixed Cmd+V not forwarding to terminal when clipboard contains an image but no text
- Settings Sidebar Icons: Fixed empty box rendering for several tab icons
- Shell Detection: Improved
ShellType::detect()with multi-strategy fallback - Settings Version Display: Fixed settings UI displaying subcrate version instead of app version
- Shell Integration Install/Uninstall: Fixed Install and Uninstall buttons not working
đī¸ Architecture
- Workspace Crate Extraction: Extracted 8 modules into dedicated workspace subcrates for maintainability
đ§ Bug Fixes & Dependency Updates
- macOS Self-Update: Auto-updater now removes macOS quarantine attributes (
xattr -cr) from the downloaded.appbundle, preventing Gatekeeper from blocking the updated app on first launch - Dependency Updates: Updated
clap,libc,uuid,arboard,regex,zip,mdns-sd,ureq, and 27 transitive dependencies to latest versions
đ¤ Assistant Panel (AI Integration)
DevTools-style right-side panel for terminal state inspection and ACP agent integration.
- Toggle with
Cmd+I(macOS) /Ctrl+Shift+I(other) or keybinding action - 4 view modes (Cards, Timeline, Tree, List+Detail) for browsing command history
- ACP agent chat: connect to Claude Code and other ACP-compatible agents via JSON-RPC 2.0 over stdio
- 8 bundled agent configs: Claude Code, Amp, Augment, GitHub Copilot, Docker, Gemini CLI, OpenAI, OpenHands
- Agent command suggestions with Run (execute + notify) and Paste actions
- Auto-context feeding: sends command results to connected agent on completion
- Yolo mode: auto-approve all agent permission requests
- Resizable panel with drag handle; terminal reflows columns when panel opens/closes/resizes
đ¨ Shader Assistant for ACP Agents
Context-triggered shader expertise for ACP agents.
- Auto-detects shader-related queries and active shader state
- Injects full shader reference into agent prompts (current state, available shaders, uniforms, GLSL template)
- Config file watcher for live-reloading agent-applied shader changes
đ Workspace Crate Extraction
Major refactoring into modular workspace crates for maintainability.
- par-term-fonts: Font management and text shaping
- par-term-terminal: Terminal manager, scrollback, styled content
- par-term-render: GPU rendering engine, shaders, cell renderer
- par-term-settings-ui: Complete settings UI (28 tabs, sidebar, section helpers)
- All types re-exported from main crate for backward compatibility
đ File Transfer UI
Native file dialogs and progress overlay for iTerm2 OSC 1337 file transfers.
- Native save dialog for downloads, file picker for uploads
- Real-time egui progress overlay with progress bars
- Desktop notifications for transfer lifecycle events
- Shell integration utilities:
pt-dl,pt-ul,pt-imgcatfor remote file operations
đ Scripting Manager
Python scripts that react to terminal events via the observer API.
- 12 event types (bell, cwd_changed, command_complete, etc.) and 9 command types
- Per-tab script lifecycle with auto-start and restart policies
- JSON protocol over stdin/stdout for bidirectional communication
- Markdown panels: scripts can register custom UI panels in Settings
đŧī¸ Per-Pane Background Images
Individual background images for each split pane with GPU texture caching.
- Per-pane image path, display mode (fit/fill/stretch/tile/center), and opacity
- Settings UI with pane index selector, file picker, mode dropdown, opacity slider
đ Dynamic Profiles from Remote URLs
Load team-shared profile definitions from remote URLs.
- Background auto-refresh with configurable timer and local cache
- Conflict resolution: Local Wins or Remote Wins
- Visual
[dynamic]indicators; dynamic profiles are read-only
đ§ Other Changes
- Duplicate Tab: Right-click context menu option to duplicate any tab with same CWD and color
- Auto Dark Mode: Auto-switch terminal theme based on system light/dark appearance
- Automatic Tab Style: Tab bar style follows system theme with configurable light/dark mapping
- macOS Target Space: Open windows in a specific macOS Space (virtual desktop)
- Configurable Link Handler: Custom command for opening URLs instead of system default browser
- Fast Window Shutdown: Closing par-term is now visually instant instead of 8+ seconds
- Shift+Tab Fix: Now correctly sends CSI Z to terminal applications
đ SSH Host Management
Comprehensive SSH host profiles, quick connect, and auto-discovery.
- SSH Quick Connect dialog (
Cmd+Shift+S) with search, keyboard navigation, grouped by source - SSH config parser (
~/.ssh/config), known hosts parser, shell history scanner - mDNS/Bonjour SSH host discovery via
_ssh._tcp.local.(opt-in) - SSH-specific profile fields: host, user, port, identity file, extra args
- Automatic profile switching on SSH connection with auto-revert on disconnect
đ Status Bar
Configurable status bar with widget system and system monitoring.
- 10 built-in widgets: clock, username@hostname, current directory, git branch, CPU/memory usage, network status, bell indicator, current command, custom text
- Widget configurator in Settings UI with drag-and-drop reordering
- Auto-hide on fullscreen and/or mouse inactivity
đ§ Other Changes
- Profile Selection on New Tab: Split
+/âžbutton on tab bar for quick profile launch - Shell Selection Per Profile: Configure specific shells per profile with platform-aware detection
- Navigate to Settings from Application Menu: Platform-aware settings access
- Install Shell Integration on Remote Host: Shell menu option with confirmation dialog
đ Directory-Based Profile Switching
Automatically switch profiles based on current working directory.
- New
directory_patternsfield on profiles (glob patterns like/Users/*/projects/work-*) - CWD changes detected via OSC 7 trigger profile matching
- Priority: explicit user selection > hostname match > directory match > default
- Settings UI for editing directory patterns per profile
đ¨ Tab Style Variants
Cosmetic tab bar presets with 5 built-in styles.
- Dark (default), Light, Compact, Minimal, and High Contrast presets
- Each preset applies coordinated color/size/spacing adjustments
- Config:
tab_style: dark|light|compact|minimal|high_contrast
đ Alert Sounds
Configurable sound effects for terminal events.
- Per-event sound configuration: Bell, Command Complete, New Tab, Tab Close
- Each event supports: enable/disable, volume, frequency, duration, custom sound file
- Custom sound files: WAV/OGG/FLAC format with
~home directory expansion - UI in Settings > Notifications > Alert Sounds
đ Fuzzy Command History Search
Searchable overlay for browsing and selecting from command history.
- Fuzzy matching with ranked results via Skim algorithm
- Match highlighting, exit code indicators, and relative timestamps
- Keyboard navigation: Arrow Up/Down, Enter to insert, Esc to close
- History persisted across sessions; keybinding: Cmd+R (macOS), Ctrl+Alt+R (Linux/Windows)
âŠī¸ Session Undo â Reopen Closed Tabs
Recover accidentally closed tabs.
- Reopen with Cmd+Z (macOS) or Ctrl+Shift+Z (Linux/Windows)
- Toast notification shows undo keybinding hint and countdown
- Optional shell session preservation for full session restore with scrollback intact
- Configurable timeout and queue depth
đž Session Restore on Startup
Automatically save and restore session state.
- Saves open windows, tabs, pane layouts, and working directories on clean exit
- Restores full session on next launch including split pane trees with ratios
- Config:
restore_session: true(default: false)
đ Tab Bar Position
Configurable tab bar placement with three positions.
- Top (default), Bottom, or Left (vertical sidebar)
- Configurable sidebar width for Left position (default 160px, range 100â300)
- All positions support tab bar visibility modes and live switching via Settings UI
đĨ Import/Export Preferences
Import and export terminal configuration.
- Export current config to a YAML file via native file dialog
- Import from local file or URL with replace or merge modes
- Merge mode only overrides values that differ from defaults
đ§ Other Changes
- Profile Emoji Picker: Curated grid of ~70 terminal-relevant emojis in 9 categories for profile icons
- Full Profile Auto-Switch Application: Directory, hostname, and tmux session switching now apply all visual settings (icon, title, badge, command)
- Profile Management in Settings: Profile create/edit/delete/reorder UI moved inline to Settings > Profiles tab
- Settings Quick Search: Added missing search keywords across all settings tabs
- HiDPI/DPI Scaling Fix: All pixel-dimension config values now correctly scale on HiDPI displays
- Text Shaper LRU Cache: Upgraded from FIFO to proper LRU eviction for better cache hit rates
- Default Update Check: Changed from weekly to daily for faster update discovery
đ Self-Update
par-term can now update itself in-place â no package manager needed.
- CLI:
par-term self-updatewith--yesflag for non-interactive use - Settings UI: "Check Now" and "Install Update" buttons in Advanced > Updates
- Detects installation method (Homebrew, cargo, .app bundle, standalone binary) and shows appropriate instructions
âââ Command Separator Lines
Horizontal separator lines between shell commands in the terminal grid.
- Renders thin lines at prompt boundaries using shell integration (OSC 133) marks
- Exit-code coloring: green for success, red for failure, gray for unknown
- Configurable thickness, opacity, and custom fixed color
đ Drag-and-Drop Tab Reordering
Reorder tabs by dragging them in the tab bar with ghost tab preview and insertion indicators.
đ Window Arrangements
Save and restore window layouts (iTerm2 parity) with monitor-aware positioning and auto-restore on startup.
đ§ Other Changes
- Variable Substitution in Config (#102): Use
${VAR}and${VAR:-default}in config.yaml values - Shell Integration Event Queuing: OSC 133 markers now queue with cursor positions
- Remember Settings Section States (#105): Collapsible section states persist across sessions
đ Vi-Style Copy Mode
Keyboard-driven text selection and navigation (iTerm2 parity).
- Full vi motions:
h/j/k/l,w/b/e,0/$,gg/G, count prefixes, half/full page scrolling - Visual selection: Character (
v), Line (V), and Block (Ctrl+V) modes with yank to clipboard - Search:
/patternforward,?patternbackward,n/Nrepeat (case-insensitive, wrapping) - Marks:
m{a-z}set,'{a-z}jump â persistent per-tab bookmarks through scrollback - Status bar: Mode indicator (COPY/VISUAL/V-LINE/V-BLOCK/SEARCH) and cursor position
- Settings: Enable/disable, auto-exit on yank, status bar visibility (Settings > Input > Copy Mode)
đ Snippets & Actions Completion
- Custom Variables UI: Collapsible per-snippet variable editor (name/value grid)
- Key Sequence Simulation:
KeySequenceactions send terminal byte sequences (Ctrl combos, arrow keys, F-keys) - Import/Export: Export/import snippets as YAML with duplicate detection and keybinding conflict resolution
đ¤ Unicode Normalization
Configurable normalization form (NFC/NFD/NFKC/NFKD/None) in Settings > Terminal > Unicode. Live-updates across all tabs.
đ§ Fixed
- Color emoji rendering (Apple Color Emoji now renders as colored bitmaps instead of monochrome outlines)
- Tmux pane resize via mouse drag (drag events now forwarded when mouse tracking enabled)
- Text baseline alignment (eliminated per-glyph rounding artifacts)
- File/URL link highlighting offset with multi-byte UTF-8 characters
- Absolute file path detection in link highlighting regex
đ Snippets & Actions System
Text automation and custom actions (iTerm2 parity).
- Text Snippets: Save text blocks with variable substitution (
\(variable)syntax), 10 built-in + 12 session variables - Custom Actions: Shell commands, text insertion, and keyboard shortcuts triggered via keybindings
- Settings UI: Two new tabs â Snippets (đ) and Actions (đ) â with keybinding recording and conflict detection
- Auto-Execute: Optional checkbox to run commands immediately when keybinding is pressed
đ Progress Bar Rendering
Overlay progress bars via OSC 9;4 and OSC 934 protocols.
- Configurable style (bar or bar-with-text), position, height, opacity, and per-state colors
- Named concurrent progress bars stack vertically
- New
iProgressshader uniform for progress-reactive shader effects
đ Paste Enhancements
- Paste Delay: Configurable delay between pasted lines (
paste_delay_ms, 0-500ms) - Newline Control: Three new Paste Special transforms â Single Line, Add Newlines, Remove Newlines
đĨī¸ Shell Integration Enhancements
- Command in Title: Window title shows
[command_name]during execution - Badge Variables:
\(session.exit_code)and\(session.current_command) - Remote Host: OSC 1337 RemoteHost syncs hostname and username to badge variables
đŧī¸ Image & Pane Improvements
- Image Scaling: Choose
nearestorlinearfiltering for inline images - Aspect Ratio Control: Toggle aspect ratio preservation for inline images
- Pane Titles: GPU-rendered title bars for split panes
- Divider Styles: Four visual styles â Solid, Double, Dashed, Shadow
â¨ī¸ Cross-Platform Keybindings
Redesigned Linux/Windows defaults to avoid conflicts with terminal control codes (Ctrl+C, Ctrl+V, etc.). macOS unchanged.
đ§ Fixed
- Dingbat/symbol rendering as colored emoji instead of monochrome glyphs
- Pane focus indicator, background opacity, divider hover, and divider width settings (#88)
- Platform-specific keybinding labels in snippet rows
⥠Triggers, Trigger Actions & Coprocesses
Full automation system for terminal output processing with regex triggers, 7 action types, coprocesses, and scrollbar marks.
âŋ Minimum Contrast Enforcement
WCAG-based accessibility â auto-adjusts text color when contrast ratio is too low.
đ Semantic History
Ctrl+click file paths in terminal output to open them in your editor.
đ§ Configurable Log Level
Runtime log level control via log_level config or --log-level CLI flag.
đˇī¸ Per-Profile Badge Configuration
Full badge customization per profile (iTerm2 parity). Profiles can now override badge color, opacity, font, position, and size constraints individually.
⥠Performance: Maximize Throughput Mode
Manual toggle for prioritizing bulk output processing over immediate responsiveness. Toggle with Cmd+Shift+T (macOS) or Ctrl+Shift+T (other platforms).
đĨī¸ Reduce Flicker
iTerm2-style flicker reduction for smoother terminal updates. Delays redraws while cursor is hidden (DECTCEM off).
đŽ GPU Power Preference
Control which GPU is used for rendering on multi-GPU systems: none, low_power, or high_performance.
đ Tmux Profile Auto-Switching
Automatically apply profiles when connecting to tmux sessions via tmux_session_patterns glob patterns.
â¨ī¸ Enhanced Keyboard Input
Modifier key remapping, physical key bindings, and modifyOtherKeys protocol support.
đĄī¸ Close Confirmation for Running Jobs
Confirmation dialog when closing tabs/panes with active processes.
đ§ Shell Exit Action
Configurable behavior when shell exits: close, keep, restart_immediately, restart_with_prompt, or restart_after_delay.
đ Welcome Dialog Changelog Link
The welcome/onboarding popup now includes a "View Changelog" link for easy access to release notes.
đ Configurable Startup Directory
Control where new terminal sessions start with three modes: home, previous, or custom.
đˇī¸ Badge System
iTerm2-style semi-transparent text overlays with 12 dynamic variables and full appearance customization.
đ Scrollbar Mark Tooltips
Hover over scrollbar command markers to see command text, execution time, duration, and exit code.
đ¨ Tab Bar Enhancements
- Tab stretch to fill bar width (
tab_stretch_to_fill) - HTML markup support in tab titles
đ Integrations Install System
Unified installation for optional par-term enhancements.
- Shell Integration: Scripts for bash/zsh/fish enabling prompt navigation, CWD tracking, and command status
- Install via CLI:
par-term install-shell-integration - Install via curl:
curl -fsSL https://paulrobello.github.io/par-term/install-shell-integration.sh | bash
- Install via CLI:
- Shader Bundle with Manifest: Tracks bundled vs user-created files using SHA256 hashes
- Welcome Dialog: First-run prompt offering to install both integrations
- Settings UI Tab: New "Integrations" tab (đ) for managing installations
đ¤ Profile System
iTerm2-style profiles for saved terminal configurations.
- Profile Manager: Create, edit, delete, and reorder named profiles
- Profile Drawer: Collapsible right-side panel for quick profile access
- Profile Settings: Name, emoji icon, working directory, custom command, tab name override
- Persistence: Profiles saved to
~/.config/par-term/profiles.yaml
đš Session Logging & Recording
Automatic session logging to record terminal output.
- Multiple Formats: Plain text, HTML (with colors), Asciicast (asciinema-compatible)
- Hotkey Toggle:
Cmd/Ctrl+Shift+Rto start/stop session recording on demand - CLI Option:
--log-sessionflag to enable logging at startup
đŗ tmux Integration Enhancements
- Native Status Bar: Session name, window list, and time display at terminal bottom
- Bidirectional Pane Resize: Resizing in par-term updates external tmux clients
- Auto-Close Exited Panes: Panes close when their shell process exits
đ Terminal Search
Search through scrollback buffer with Cmd/Ctrl+F.
- Match highlighting with navigation (Enter/Shift+Enter)
- Search options: case sensitive, regex mode, whole word
- Proper Unicode support for multi-byte characters
đ Paste Special
Transform clipboard content before pasting with Cmd/Ctrl+Shift+V.
- 28 text transformations across shell escaping, case conversion, whitespace, and encoding
- Live preview with keyboard navigation
- Integration with clipboard history via
Shift+Enter
â¨ī¸ Option Key as Meta/Esc
Essential feature for emacs/vim users.
- Configure left and right Option/Alt key behavior independently
- Three modes: Normal (special characters), Meta (high bit), Esc (ESC prefix)
đŧī¸ Shader Gallery
- Browse the Gallery: See all shaders before installing
- Auto-Updated: Gallery automatically deploys when shaders are added or modified
â¨ī¸ Configurable Keybindings
- Custom Bindings: Edit
~/.config/par-term/keybindings.yaml - Modifier Support: Ctrl, Alt, Shift, Super in any combination
đĨī¸ CLI Enhancements
--screenshot <path>: Capture terminal to image file--shader <name>: Override background shader on launch--exit-after <seconds>: Auto-exit after duration--command <cmd>: Run specific command instead of default shell
đĒ Standalone Settings Window
F12orCmd+,(macOS) /Ctrl+,(Linux/Windows) to open- Settings window stays visible when terminal gains focus
đ¨ Per-Shader Configuration System
- Shader metadata in GLSL files, per-shader overrides, global fallback
- Shader hot reload with desktop notifications
đ¤ Enhanced Unicode Rendering
- Grapheme clusters (flag emoji, ZWJ sequences, skin tones)
- Geometric box drawing and block elements
đī¸ Tab Bar Enhancements
- 11 color options, per-tab colors, equal-width layout
đ Window Transparency
- macOS blur, proper alpha handling, keep_text_opaque option
đŽ Shader System
- Cubemap support, iTimeKeyPress, 9 new shaders
đ Power Saving
- pause_shaders_on_blur, pause_refresh_on_blur, unfocused_fps
Multi-Tab Support
Cmd/Ctrl+Tnew tab,Cmd/Ctrl+Wclose tabCmd/Ctrl+Shift+[/]orCtrl+Tabto switch tabsCmd/Ctrl+1-9direct tab access- Tab bar with close buttons, activity indicators, bell icons
Multi-Window Support
Cmd/Ctrl+Nnew window with independent PTY session- Each window has its own tabs, scrollback, and state
Native Menu Bar
- Cross-platform menus via muda
- Full keyboard accelerators for all menu items
Custom Shader Enhancements
- Shadertoy-compatible iChannel1-4 texture support
custom_shader_brightnessfor better text readabilitycursor_shader_hides_cursorfor shader-controlled cursors
Ghostty-Compatible Cursor Shaders
iCurrentCursor,iPreviousCursor,iCurrentCursorColor,iTimeCursorChangeuniforms- Built-in cursor shaders: sweep, warp, glow, blaze, trail, ripple, boom
- Geometric cursor rendering for all styles
Fixes
- Login shell initialization and environment loading
Power Efficiency
- Event-driven rendering with
ControlFlow::Wait - Smart redraws only when content changes
Stability
- Fixed dropped input during heavy rendering
parking_lotmutex migration- Graceful audio fallback
Features
Core Terminal Frontend
- Cross-platform Support: Native performance on macOS (Metal), Linux (Vulkan/X11/Wayland), and Windows (DirectX 12).
- Multi-Window & Multi-Tab: Multiple windows with independent tab sessions per window.
- GPU-Accelerated Rendering: Powered by
wgpuwith custom glyph atlas for blazing-fast text rasterization. - Inline Graphics: Full support for Sixel, iTerm2, and Kitty graphics protocols.
- Real PTY Integration: Full pseudo-terminal support for interactive shell sessions.
- Advanced Sequence Support: VT100/VT220/VT320/VT420/VT520 compatibility via
par-term-emu-core-rust. - Intelligent Reflow: Full content reflow on window resize, preserving scrollback and visible state.
Modern UI & Visuals
- Custom GLSL Shaders: 49+ included shaders with hot reload, per-shader config, and cubemap support.
- Background Images: Support for PNG/JPEG backgrounds with configurable opacity and scaling modes.
- Window Transparency: True per-pixel alpha with macOS blur support and text clarity options.
- Visual Bell: Flash-based alerts for terminal bell events.
- Dynamic Themes: Support for iTerm2-style color schemes (Dracula, Monokai, Solarized, etc.).
- Standalone Settings: Dedicated settings window (F12) for live configuration editing.
Typography & Fonts
- Styled Font Variants: Explicit support for separate Bold, Italic, and Bold-Italic font families.
- Unicode Range Mapping: Assign specific fonts to Unicode ranges (perfect for CJK, Emoji, or Symbols).
- Text Shaping: HarfBuzz-powered shaping for ligatures, complex scripts, and emoji sequences.
- Grapheme Clusters: Proper rendering of flag emoji, ZWJ sequences, skin tone modifiers.
- Box Drawing: Geometric rendering for pixel-perfect TUI borders and block characters.
- Smart Fallback: Automatic system font discovery and fallback chain.
Selection & Clipboard
- Advanced Selection: Block/Rectangular, Line-based, and Word-based selection modes.
- Multi-platform Clipboard: Seamless integration with system clipboards via
arboard. - Middle-click Paste: Standard Unix-style middle-click paste support.
- Automatic Copy: Optional "copy on select" behavior.
Hyperlinks & URL Detection
- OSC 8 Support: Native support for application-provided hyperlinks.
- Regex Detection: Automatic detection of URLs in terminal output.
- Interactive Links: Ctrl+Click to open links in your default browser, with hover highlighting and tooltips.
Assistant Panel & ACP Agents
- Assistant Panel: DevTools-style side panel for terminal state inspection and ACP agent chat.
- Bundled + Custom ACP Agents: Built-in agent definitions plus custom agents via
config.yamlor~/.config/par-term/agents/*.toml. - Per-Agent Environment Variables: Configure local/provider-specific env vars (for example Ollama/OpenRouter endpoints) for each agent.
- Local Claude via Ollama: Supports
claude-agent-acpwith Ollama Claude-compatible launch mode (seedocs/ASSISTANT_PANEL.md).
Content Prettifier
- Auto-Detection: Automatically detects and renders structured content in terminal output â Markdown, JSON, YAML, TOML, XML, CSV, diffs, log files, SQL results, stack traces, and diagrams.
- 11 Built-in Renderers: Each with syntax highlighting, source line mapping, and per-block source/rendered toggling (
Ctrl+Shift+Pglobal toggle). - Diagram Rendering: Mermaid, PlantUML, GraphViz, D2, and 7 more diagram languages with local CLI, Kroki API, and text fallback backends.
- Custom Renderers: Define your own renderers that pipe content through external commands (e.g.,
bat,pygmentize) with full ANSI color preservation. - Claude Code Integration: Auto-detects Claude Code sessions, renders markdown and diffs in output, shows format badges on collapsed blocks.
- Configurable: Per-renderer enable/disable, priority ordering, detection rules, clipboard behavior, and profile-level overrides.
Documentation
Getting Started
- Quick Start Guide - Get up and running with custom fonts.
- Examples - Comprehensive configuration examples.
Features
- Keyboard Shortcuts - Complete keyboard shortcut reference.
- Mouse Features - Text selection, URL handling, and pane interaction.
- Semantic History - Click file paths to open in your editor.
- Automation - Regex triggers, actions, and coprocesses.
- Profiles - Profile system for saving terminal configurations.
- Session Logging - Recording sessions in Plain/HTML/Asciicast formats.
- Search - Terminal search with regex, case-sensitive, and whole-word modes.
- Paste Special - 28 clipboard transformations for pasting.
- Copy Mode - Vi-style keyboard-driven text selection and navigation.
- Snippets & Actions - Text snippets with variables, custom actions, and keybinding management.
- Progress Bars - OSC 9;4 and OSC 934 progress bar rendering and shader integration.
- Accessibility - Minimum contrast enforcement and display options.
- Integrations - Shell integration and shader installation system.
- Window Management - Window types, multi-monitor, and transparency.
- Window Arrangements - Save and restore window layouts with auto-restore.
- Command Separators - Horizontal lines between shell commands with exit-code coloring.
- SSH Host Management - SSH quick connect, host discovery, and SSH profiles.
- Status Bar - Configurable status bar with widgets and system monitoring.
- Tabs - Tab management, duplicate tab, and tab behavior.
- Assistant Panel - ACP agent chat, custom agents (UI/TOML/YAML), shader assistant, and Claude+Ollama setup/troubleshooting.
- File Transfers - OSC 1337 file transfers with shell utilities.
- Self-Update - In-place update capability via CLI and Settings UI.
- Content Prettifier - Auto-detect and render markdown, JSON, YAML, diffs, diagrams, and more with custom renderers.
- Debug Logging - Configurable log levels and troubleshooting.
Shaders
- Shader Gallery - Visual gallery of 49+ included shaders with screenshots.
- Shader Reference - Complete list of bundled shaders.
- Custom Shaders Guide - Create custom GLSL shaders with hot reload and per-shader config.
- Compositor Details - Deep dive into the rendering architecture.
Technical
- Architecture Overview - High-level system architecture and components.
- Core Library - Documentation for the underlying terminal engine.
Installation
Homebrew (macOS)
From Source
Requires Rust 1.85+ (2024 edition) and modern graphics drivers:
# Clone the repository
# Build and run (debug)
# Build optimized release version
# Install Claude ACP bridge for Assistant Panel (Claude connector)
Note: The legacy package
@zed-industries/claude-code-acpwas renamed/deprecated upstream. Use@zed-industries/claude-agent-acp(claude-agent-acpbinary).
macOS Bundle
To create a native macOS .app bundle with a dock icon:
To build and install the app bundle plus the CLI binary and Claude ACP bridge in one step:
Linux Dependencies
On Linux (Ubuntu/Debian), you need GTK3 and X11/Wayland libraries:
macOS Gatekeeper Notice
If macOS reports that par-term "is damaged and can't be opened", this is caused by the Gatekeeper quarantine attribute applied to unsigned binaries. Remove it with:
# For the release binary
# For the .app bundle
Note: The Homebrew cask install (
brew install --cask paulrobello/tap/par-term) handles this automatically.
Installing Shaders
par-term includes 49+ custom GLSL shaders for background effects and cursor animations. These need to be installed to your config directory.
Built-in Installer (Recommended)
Use the built-in CLI command to download and install all shaders from the latest release:
# Install shaders (with confirmation prompt)
# Install without prompts
# Force overwrite existing shaders
Shell Script
Alternatively, use the shell script installer:
# Download and run the installer
|
Or download and run manually:
Manual Install
- Download
shaders.zipfrom the latest release - Extract to your config directory:
- macOS/Linux:
~/.config/par-term/shaders/ - Windows:
%APPDATA%\par-term\shaders\
- macOS/Linux:
From Source
If building from source, copy the shaders folder manually:
# macOS/Linux
# Windows (PowerShell)
Using Shaders
Once installed, enable shaders in your config.yaml:
# Background shader
custom_shader: "starfield.glsl"
custom_shader_enabled: true
# Cursor shader
cursor_shader: "cursor_glow.glsl"
cursor_shader_enabled: true
See the Shader Gallery for previews of all included shaders.
Keyboard Shortcuts
Window & Tab Management
| Shortcut | Action |
|---|---|
Cmd/Ctrl + N |
New window |
Cmd/Ctrl + T |
New tab |
Cmd/Ctrl + W |
Close tab (or window if single tab) |
Cmd/Ctrl + Q |
Quit (Windows/Linux) |
Cmd/Ctrl + Shift + ] |
Next tab |
Cmd/Ctrl + Shift + [ |
Previous tab |
Ctrl + Tab |
Next tab (alternative) |
Ctrl + Shift + Tab |
Previous tab (alternative) |
Cmd/Ctrl + 1-9 |
Switch to tab 1-9 |
Cmd/Ctrl + Shift + Left |
Move tab left |
Cmd/Ctrl + Shift + Right |
Move tab right |
Navigation & Editing
| Shortcut | Action |
|---|---|
PageUp / PageDown |
Scroll up/down one page |
Shift + Home |
Jump to top of scrollback |
Shift + End |
Jump to bottom (current) |
Cmd/Ctrl + C |
Copy selection |
Cmd/Ctrl + V |
Paste from clipboard |
Cmd/Ctrl + Shift + K |
Clear scrollback buffer |
Cmd/Ctrl + Shift + H |
Clipboard history |
Ctrl + L |
Clear visible screen |
Cmd/Ctrl + +/-/0 |
Adjust font size / Reset |
Ctrl + Shift + S |
Take screenshot |
UI Toggles
| Shortcut | Action |
|---|---|
F1 |
Toggle Help panel |
F3 |
Toggle FPS overlay |
F5 |
Reload configuration |
F11 |
Toggle fullscreen |
F12 |
Open Settings window |
Cmd + , / Ctrl + , |
Open Settings window (alternative) |
Configuration
Configuration is stored in YAML format:
- Unix:
~/.config/par-term/config.yaml - Windows:
%APPDATA%\par-term\config.yaml
cols: 80
rows: 24
font_size: 13.0
font_family: "JetBrains Mono"
theme: "dark-background"
window_opacity: 0.95
scrollbar_position: "right"
# Tab bar settings
tab_bar_mode: "when_multiple" # always, when_multiple, never
tab_bar_height: 28.0
tab_show_close_button: true
tab_inherit_cwd: true
dim_inactive_tabs: true
inactive_tab_opacity: 0.6
# Transparency settings
keep_text_opaque: true
transparency_affects_only_default_background: true
blur_radius: 8 # macOS only
# Power saving
pause_shaders_on_blur: true
unfocused_fps: 30
# Cursor lock options (prevent apps from overriding)
lock_cursor_visibility: false
lock_cursor_style: false
lock_cursor_blink: false
# Custom shader settings
custom_shader: "starfield.glsl"
custom_shader_enabled: true
shader_hot_reload: true # Auto-reload on file changes
# Per-shader overrides (optional)
shader_configs:
starfield.glsl:
animation_speed: 0.8
brightness: 0.3
See examples/config-complete.yaml for a full list of options.
Technology
- Terminal Engine: par-term-emu-core-rust
- Graphics:
wgpu(WebGPU for Rust) - Text:
swash+rustybuzz(custom glyph atlas) - UI:
eguifor settings and overlays - Windowing:
winit - Async:
tokio
Contributing
Contributions are welcome! Please ensure you run make checkall before submitting any pull requests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Paul Robello - probello@gmail.com
Links
- GitHub: https://github.com/paulrobello/par-term
- Core Library: https://github.com/paulrobello/par-term-emu-core-rust
