Aminal - A Modern Terminal Emulator
Aminal is a modern terminal emulator for Mac/Linux implemented in Golang and utilising OpenGL.
The project is experimental at the moment, so you probably won't want to rely on Aminal as your main terminal for a while.
Ensure you have your latest graphics card drivers installed before use.
Features
- Unicode support
- OpenGL rendering
- Customisation options
- True colour support
- Support for common ANSI escape sequences a la xterm
- Scrollback buffer
- Clipboard access
- Clickable URLs
- Multi platform support (Windows coming soon...)
- Sixel support
- Hints/overlays
- Built-in patched fonts for powerline
- Retina display support
Quick Start
Installation
Prebuilt Binaries
Prebuilt binaries are available for Linux and OSX on the releases page.
Download the binary and sudo cp aminal-* /usr/local/bin/aminal
.
Install with Go
go get -u github.com/liamg/aminal
Build
Dependencies
- On macOS, you need Xcode or Command Line Tools for Xcode (
xcode-select --install
) for required headers and libraries. - On Ubuntu/Debian-like Linux distributions, you need
libgl1-mesa-dev xorg-dev
. - On CentOS/Fedora-like Linux distributions, you need
libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel
.
Building Locally
There are various make targets available, the most obvious being:
make test
make build
make install
As long as you have your GOBIN
environment variable set up properly (and in PATH
), you should be able to run aminal
.
Keyboard/Mouse Shortcuts
Operation | Key(s) |
---|---|
Select text | click + drag |
Select word | double click |
Select line | triple click |
Copy | ctrl + shift + c (Mac: super + c ) |
Paste | ctrl + shift + v (Mac: super + v ) |
Google selected text | ctrl + shift + g (Mac: super + g ) |
Toggle debug display | ctrl + shift + d (Mac: super + d ) |
Toggle slomo | ctrl + shift + ; (Mac: super + ; ) |
Report bug in aminal | ctrl + shift + r (Mac: super + r ) |
Configuration
Aminal looks for a config file in ~/.aminal.toml
, and will write one there the first time it runs, if it doesn't already exist.
You can ignore the config and use defaults by specifying --ignore-config
as a CLI flag.
Config File
debug = false # Enable debug logging to stdout. Defaults to false.
slomo = false # Enable slow motion output mode, useful for debugging shells/terminal GUI apps etc. Defaults to false.
shell = "/bin/bash" # The shell to run for the terminal session. Defaults to the users shell.
[colours]
cursor = "#e8dfd6"
foreground = "#e8dfd6"
background = "#021b21"
black = "#032c36"
red = "#c2454e"
green = "#7cbf9e"
yellow = "#8a7a63"
blue = "#065f73"
magenta = "#ff5879"
cyan = "#44b5b1"
light_grey = "#f2f1b9"
dark_grey = "#3e4360"
light_red = "#ef5847"
light_green = "#a2db91"
light_yellow = "#beb090"
light_blue = "#61778d"
light_magenta = "#ff99a1"
light_cyan = "#9ed9d8"
white = "#f6f6c9"
selection = "#333366" # Mouse selection background colour
[keys]
copy = "ctrl + shift + c" # Copy highlighted text to system clipboard
paste = "ctrl + shift + v" # Paste text from system clipboard
debug = "ctrl + shift + d" # Toggle debug panel overlay
google = "ctrl + shift + g" # Google selected text
report = "ctrl + shift + r" # Send bug report
slomo = "ctrl + shift + ;" # Toggle slow motion output mode (useful for debugging)
CLI Flags
Flag | Description |
---|---|
--debug |
Enable debug mode, with debug logging and debug info terminal overlay. |
--slomo |
Enable slomo mode, delay the handling of each incoming byte (or escape sequence) from the pty by 100ms. Useful for debugging. |
--shell [shell] |
Use the specified shell program instead of the user's usual one. |
--version |
Show the version of aminal and exit. |