Terminator
Terminal emulator supporting grid layout and broadcast input.
Official WebsiteFeatures
Installation
apt install terminatorpacman -S terminatordnf install terminatorWhy Use Terminator?
Terminator is a Python-based terminal emulator that arranges multiple terminals in a grid within a single window. Its broadcast input feature sends commands to multiple terminals simultaneously.
Grid Layout
Freely split a single window. Display multiple terminals in an organized layout.
Broadcast Input
Send commands to multiple terminals simultaneously. Ideal for cluster management and parallel work.
Tabs and Profiles
Build grid layouts within tabs. Switch profiles by use case.
Plugin System
Extend functionality with Python plugins. Add custom commands and menus.
Main Features
Grid Splitting
Terminator's main feature is the ability to freely split windows horizontally and vertically. Each split area acts as an independent terminal.
# Split shortcuts
# Ctrl+Shift+E: Vertical split (new terminal to right)
# Ctrl+Shift+O: Horizontal split (new terminal below)
# Move between panes
# Alt+Arrow: Move focus in arrow direction
# Ctrl+Tab: Focus next terminal
# Ctrl+Shift+Tab: Focus previous terminal
# Resize panes
# Ctrl+Shift+Arrow: Move pane boundaries
# Close pane
# Ctrl+Shift+W: Close current terminal
# Maximize terminal
# Ctrl+Shift+X: Maximize current terminal (press again to restore)Broadcast Input
Send the same command to multiple terminals simultaneously. Very useful for server management and parallel command execution.
# Broadcast input modes
# Broadcast to group
# Ctrl+G to toggle grouping (input broadcasts to same group)
# Broadcast to all
# Alt+A to broadcast to all terminals in window
# Broadcast off
# Alt+O to disable broadcasting
# Can also be set from right-click menu:
# - Broadcast: All
# - Broadcast: Group
# - Broadcast: Off
# Usage examples:
# 1. SSH to multiple servers
# 2. Enable broadcast with Alt+A
# 3. Same command is sent to all terminalsSave and Restore Layouts
Save frequently used layouts to config files for automatic restoration on startup.
# Layout configuration (~/.config/terminator/config)
[layouts]
[[default]]
[[[window0]]]
type = Window
parent = ""
[[[child1]]]
type = Terminal
parent = window0
[[development]]
[[[window0]]]
type = Window
parent = ""
size = 1200, 800
[[[child0]]]
type = HPaned
parent = window0
ratio = 0.5
[[[terminal1]]]
type = Terminal
parent = child0
profile = default
command = "vim"
[[[child2]]]
type = VPaned
parent = child0
ratio = 0.5
[[[terminal2]]]
type = Terminal
parent = child2
[[[terminal3]]]
type = Terminal
parent = child2
command = "htop"
# Start with specified layout
terminator -l developmentPlugin System
Terminator supports functionality extension via plugins. Create custom plugins in Python.
# Enable built-in plugins
# Preferences > Plugins to toggle on/off
# Available built-in plugins:
# - ActivityWatch: Monitor terminal activity
# - CustomCommandsMenu: Custom command menu
# - InactivityWatch: Notification when inactive
# - Logger: Log output to file
# - MavenPluginURLHandler: Process Maven URLs
# - TerminalShot: Take screenshots
# Add custom commands
# Right-click > Preferences > Plugins > CustomCommandsMenu
# Plugin locations
# System: /usr/share/terminator/terminatorlib/plugins/
# User: ~/.config/terminator/plugins/Installation
Debian/Ubuntu
# Install with apt
sudo apt install terminatorArch Linux
# Install with pacman
sudo pacman -S terminatorFedora
# Install with dnf
sudo dnf install terminatorpip (Latest Version)
# Install with pip (if you want the latest version)
pip install terminator
# Dependencies may be required
# Debian/Ubuntu:
sudo apt install python3-gi python3-gi-cairo gir1.2-gtk-3.0 \
gir1.2-vte-2.91 python3-psutil python3-configobjOfficial Website
Check https://gnome-terminator.org/ for detailed documentation.
Configuration and Customization
Configuration File Location
# Configuration file path
~/.config/terminator/config
# File is created if it doesn't exist
# Settings from GUI are automatically saved to this file
# Configuration file structure
# [global_config] - Global settings
# [keybindings] - Keybindings
# [profiles] - Profile definitions
# [layouts] - Layout definitions
# [plugins] - Plugin settingsGlobal Configuration
[global_config]
# Window state
window_state = normal
borderless = False
# Tab position
tab_position = top
# Broadcast default
broadcast_default = off
# Scroll settings
scroll_on_output = False
scroll_on_keystroke = True
# Title bar configuration
title_hide_sizetext = True
title_transmit_fg_color = "#ffffff"
title_transmit_bg_color = "#c80003"
title_receive_fg_color = "#ffffff"
title_receive_bg_color = "#0076c9"
title_inactive_fg_color = "#000000"
title_inactive_bg_color = "#c0bebf"
# Focus settings
focus = click
# Layout on startup
always_split_with_profile = TrueProfile Configuration
[profiles]
[[default]]
# Font settings
font = JetBrains Mono 12
use_system_font = False
# Cursor settings
cursor_shape = block
cursor_color = "#c0caf5"
cursor_blink = True
# Color scheme
foreground_color = "#c0caf5"
background_color = "#1a1b26"
background_darkness = 0.95
background_type = transparent
# Palette (16 colors)
palette = "#15161e:#f7768e:#9ece6a:#e0af68:#7aa2f7:#bb9af7:#7dcfff:#a9b1d6:#414868:#f7768e:#9ece6a:#e0af68:#7aa2f7:#bb9af7:#7dcfff:#c0caf5"
# Scrollback
scrollback_lines = 10000
scrollbar_position = hidden
# Other
copy_on_selection = True
show_titlebar = True
[[production]]
# Production environment profile (red background)
foreground_color = "#ffffff"
background_color = "#3d0000"
cursor_color = "#ff0000"
scrollback_lines = 50000Keybinding Configuration
[keybindings]
# Split
split_horiz = <Ctrl><Shift>o
split_vert = <Ctrl><Shift>e
# Move between panes
go_up = <Alt>Up
go_down = <Alt>Down
go_left = <Alt>Left
go_right = <Alt>Right
go_next = <Ctrl>Tab
go_prev = <Ctrl><Shift>Tab
# Resize
resize_up = <Ctrl><Shift>Up
resize_down = <Ctrl><Shift>Down
resize_left = <Ctrl><Shift>Left
resize_right = <Ctrl><Shift>Right
# Tab operations
new_tab = <Ctrl><Shift>t
close_tab = <Ctrl><Shift>w
next_tab = <Ctrl>Page_Down
prev_tab = <Ctrl>Page_Up
# Broadcast
broadcast_all = <Alt>a
broadcast_group = <Alt>g
broadcast_off = <Alt>o
# Other
toggle_zoom = <Ctrl><Shift>x
full_screen = F11
search = <Ctrl><Shift>f
copy = <Ctrl><Shift>c
paste = <Ctrl><Shift>vCustom Commands
# CustomCommandsMenu plugin configuration
[plugins]
[[CustomCommandsMenu]]
[[[SSH Production]]]
name = SSH Production
command = ssh user@prod.example.com
enabled = True
[[[SSH Development]]]
name = SSH Development
command = ssh user@dev.example.com
enabled = True
[[[Docker Logs]]]
name = Docker Logs
command = docker logs -f $(docker ps -q | head -1)
enabled = True
[[[System Monitor]]]
name = System Monitor
command = htop
enabled = True
# Can be executed from right-click > Custom CommandsKeyboard Shortcuts
| Shortcut | Function |
|---|---|
Ctrl+Shift+E | Vertical split (new terminal right) |
Ctrl+Shift+O | Horizontal split (new terminal below) |
Alt+Arrow | Move between panes |
Ctrl+Shift+Arrow | Resize pane |
Ctrl+Shift+X | Maximize/restore current terminal |
Ctrl+Shift+W | Close current terminal |
Alt+A | Broadcast to all terminals |
Alt+G | Broadcast to group |
Alt+O | Turn off broadcast |
Ctrl+Shift+T | Create new tab |
Ctrl+Shift+F | Search |
F11 | Toggle fullscreen |
Tips
- *Save Layouts: Save frequently used layouts to config and start with
terminator -l layout_namefor efficiency. - *Use Profiles: Use different profiles (background colors, etc.) for production vs. development to prevent mistakes. You can also change title bar color.
- *Group Broadcasting: Group specific terminals (Ctrl+G) and broadcast (Alt+G) for finer control.
- *Custom Commands: Use the CustomCommandsMenu plugin to execute frequently used SSH connections and commands from the right-click menu.
- *Drag and Drop: Drag a terminal's title bar and drop into another pane to freely change the layout.