| Crates.io | par-term |
| lib.rs | par-term |
| version | 0.4.0 |
| created_at | 2026-01-23 00:58:41.346464+00 |
| updated_at | 2026-01-24 07:37:53.656962+00 |
| description | Cross-platform GPU-accelerated terminal emulator with inline graphics support (Sixel, iTerm2, Kitty) |
| homepage | https://github.com/paulrobello/par-term |
| repository | https://github.com/paulrobello/par-term |
| max_upload_size | |
| id | 2063105 |
| size | 4,611,765 |
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.

Each window now supports multiple terminal tabs, each with its own independent PTY session.
Cmd+T (macOS) / Ctrl+T to create a new tabCmd+W closes tab (or window if single tab)Cmd+Shift+[ / Cmd+Shift+] or Ctrl+Tab / Ctrl+Shift+TabCmd+1 through Cmd+9 to switch to specific tabsCmd+Shift+Left/Right to move tabsSpawn multiple independent terminal windows, each with its own PTY session and tabs.
Cmd+N (macOS) / Ctrl+N to open a new terminal windowCmd+W (macOS) / Ctrl+W to close the current windowCross-platform native menu support using the muda crate.
| Menu | Items |
|---|---|
| File | New Window, New Tab, Close Tab, Close Window, Quit (Windows/Linux) |
| Edit | Copy, Paste, Select All, Clear Scrollback, Clipboard History |
| View | Toggle Fullscreen, Font Size (+/-/Reset), FPS Overlay, Settings |
| Tab | New Tab, Close Tab, Next/Previous Tab, Move Tab Left/Right, Duplicate Tab |
| Window (macOS) | Minimize, Zoom |
| Help | Keyboard Shortcuts, About |
custom_shader_brightness setting to dim shader backgrounds for better text readabilitycursor_shader_hides_cursor allows shaders to fully replace cursor renderingFull support for cursor-based shader animations compatible with Ghostty custom shaders.
iCurrentCursor, iPreviousCursor, iCurrentCursorColor, iTimeCursorChange uniforms for cursor trail effectsiCurrentCursorColor to shadersCmd+, (macOS) / Ctrl+, to cycle through Block, Beam, and Underline cursor stylesSignificantly reduced CPU and GPU usage by switching from continuous polling to event-driven rendering.
ControlFlow::Wait logic, allowing the application to sleep during inactivity instead of maxing out VSync.parking_lot to eliminate Mutex poisoning risks.wgpu with custom glyph atlas for blazing-fast text rasterization.par-term-emu-core-rust.arboard.brew install --cask paulrobello/tap/par-term
Requires Rust 1.85+ (2024 edition) and modern graphics drivers:
# Clone the repository
git clone https://github.com/paulrobello/par-term
cd par-term
# Build and run (debug)
cargo run
# Build optimized release version
cargo build --release
./target/release/par-term
To create a native macOS .app bundle with a dock icon:
make bundle
make run-bundle
On Linux (Ubuntu/Debian), you need GTK3 and X11/Wayland libraries:
sudo apt install libgtk-3-dev libxkbcommon-dev libwayland-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev
| 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 |
| 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 |
Cmd + , / Ctrl + , |
Cycle cursor style (Block/Beam/Underline) |
| Shortcut | Action |
|---|---|
F1 |
Toggle Help panel |
F3 |
Toggle FPS overlay |
F5 |
Reload configuration |
F11 |
Toggle fullscreen |
F12 |
Toggle Settings UI |
Configuration is stored in YAML format:
~/.config/par-term/config.yaml%APPDATA%\par-term\config.yamlcols: 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
# Custom shader settings
custom_shader: "starfield.glsl"
custom_shader_enabled: true
custom_shader_brightness: 0.3 # Dim shader for readability
custom_shader_channel1: "~/textures/noise.png" # Optional texture
See examples/config-complete.yaml for a full list of options.
wgpu (WebGPU for Rust)swash + rustybuzz (custom glyph atlas)egui for settings and overlayswinittokioContributions are welcome! Please ensure you run make checkall before submitting any pull requests.
make fmt # Format code
make lint # Run clippy
make test # Run test suite
make checkall # Run all of the above
This project is licensed under the MIT License - see the LICENSE file for details.
Paul Robello - probello@gmail.com