Skip to content
A modern cross-platform terminal emulator in Go
Go Other
  1. Go 98.1%
  2. Other 1.9%
Branch: master
Clone or download
Latest commit 8a56135 Mar 6, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update CODEOWNERS Mar 6, 2019
buffer fixed Wrong cursor rendering position on fast new line input (#228) Feb 20, 2019
ci Travis nightly builds from cron job (#218) Feb 14, 2019
config Gofmt (#216) Feb 14, 2019
demo progress toward vim support Oct 23, 2018
glfont Gofmt (#216) Feb 14, 2019
gui #180/#234: CSI SM/RM multiple modes, Mouse button-tracking (#233) Feb 26, 2019
hints colour hinting Nov 25, 2018
matrix Sixel Part 2. Ignore embedded by Windows CSI and OSC sequences. (#132) Jan 10, 2019
platform
scripts version alerts Nov 25, 2018
sixel fix conflict Nov 4, 2018
terminal
vendor Bug/glfw monitors update 210 (#214) Feb 14, 2019
version added version check Nov 25, 2018
vttest Resolves sixel rendering regression issue and adds gui unit test to v… Feb 14, 2019
.gitignore Windows support and enhancements. (#123) Jan 7, 2019
.travis.yml Travis nightly builds from cron job (#218) Feb 14, 2019
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md Oct 21, 2018
CONTRIBUTING.md fix scrollable region in htop Oct 23, 2018
Gopkg.lock
Gopkg.toml Bug/glfw monitors update 210 (#214) Feb 14, 2019
LICENSE Create LICENSE Oct 21, 2018
Makefile
PULL_REQUEST_TEMPLATE.md Create PULL_REQUEST_TEMPLATE.md Oct 21, 2018
README.md Add dpi-scale config option (#198) Feb 5, 2019
aminal.exe.manifest Windows support and enhancements. (#123) Jan 7, 2019
aminal.ico
aminal.rc Windows support and enhancements. (#123) Jan 7, 2019
build.sh build fix again Dec 6, 2018
config.go Gofmt (#216) Feb 14, 2019
demo.gif nicer demo gif Nov 27, 2018
example.sixel finished sixel support Oct 28, 2018
logger.go tidy up main package Oct 23, 2018
main.go Automate ci running of vttest Test of screen features (#209) Feb 12, 2019
main_test.go Resolve formatting issues (#222) Feb 16, 2019
windows.md Windows support and enhancements. (#123) Jan 7, 2019

README.md

Aminal - A Modern Terminal Emulator

Travis Build Status GoReportCard Github Release Slack License

Aminal is a modern terminal emulator for Mac/Linux/Windows implemented in Golang and utilising OpenGL.

Demo GIF

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, Linux, OSX)
  • Sixel support
  • Hints/overlays
  • Built-in patched fonts for powerline
  • Retina display support

Installation

MacOS

brew tap liamg/aminal
brew install aminal

Windows

You can run Aminal with a binary from the releases page.

Dev environment setup instructions are available here.

Prebuilt Binaries

Prebuilt binaries are available for Linux, OSX and Windows on the releases page.

Download the binary and sudo cp aminal-* /usr/local/bin/aminal && chmod +x /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)
Search online for 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 the following places, and stops when it finds one:

  • $XDG_CONFIG_HOME/aminal/config.toml
  • $HOME/.config/aminal/config.toml
  • $HOME/.aminal.toml

Note that on Windows Aminal uses %USERPROFILE% environment variable instead of $HOME.

It will write a config file to whichever of those directories exists (preferring the top of the list) the first time it runs, if one 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.
search_url = "https://www.google.com/search?q=$QUERY" # The search engine to use for the "search selected text" action. Defaults to google. Set this to your own search url using $QUERY as the keywords to replace when searching.
max_lines = 1000            # Maximum number of lines in the terminal buffer.
copy_and_paste_with_mouse = true # Text selected with the mouse is copied to the clipboard on end selection, and is pasted on right mouse button click.
dpi-scale = 0.0             # Override DPI scale. Defaults to 0.0 (let Aminal determine the DPI scale itself).

[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.

Contributors

You can’t perform that action at this time.