Go to file
Roman Shevchenko cae7f5a398 #147. Click on hyperlink 2019-03-15 16:55:40 +03:00
.github Create CODEOWNERS 2019-01-08 10:10:13 +00:00
buffer #147. Click on hyperlink 2019-03-15 16:55:40 +03:00
ci Include source branch title in nightly build tag (#243) 2019-03-04 16:56:55 +02:00
config Gofmt (#216) 2019-02-14 16:45:53 +00:00
demo progress toward vim support 2018-10-23 14:22:27 +01:00
glfont Gofmt (#216) 2019-02-14 16:45:53 +00:00
gui #147 set up hyperlinks and render them 2019-03-13 20:59:38 +03:00
hints colour hinting 2018-11-25 11:06:05 +00:00
matrix Sixel Part 2. Ignore embedded by Windows CSI and OSC sequences. (#132) 2019-01-10 14:09:32 +00:00
platform Add correct handling of attaching to child console errors (#239) 2019-03-05 10:00:34 +03:00
scripts version alerts 2018-11-25 19:53:56 +00:00
sixel fix conflict 2018-11-04 20:34:04 +00:00
terminal #147 Hyperlinks, corrected set/unset 2019-03-06 18:53:51 +03:00
vendor Bug/glfw monitors update 210 (#214) 2019-02-14 16:46:23 +00:00
version added version check 2018-11-25 19:08:48 +00:00
vttest Resolves sixel rendering regression issue and adds gui unit test to validate rendered image (#221) 2019-02-14 16:58:14 +00:00
.gitignore Windows support and enhancements. (#123) 2019-01-07 12:00:08 +00:00
.travis.yml [travis] Insert new line after each git log commit message to be correctly parsed by bash read command (#244) 2019-03-04 19:08:38 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2018-10-21 15:41:47 +01:00
CONTRIBUTING.md fix scrollable region in htop 2018-10-23 10:39:23 +01:00
Gopkg.lock Bug/glfw monitors update 210 (#214) 2019-02-14 16:46:23 +00:00
Gopkg.toml Bug/glfw monitors update 210 (#214) 2019-02-14 16:46:23 +00:00
LICENSE Create LICENSE 2018-10-21 11:54:58 +01:00
Makefile Gofmt (#216) 2019-02-14 16:45:53 +00:00
PULL_REQUEST_TEMPLATE.md Create PULL_REQUEST_TEMPLATE.md 2018-10-21 15:57:21 +01:00
README.md Add dpi-scale config option (#198) 2019-02-05 13:18:24 +00:00
aminal.exe.manifest Windows support and enhancements. (#123) 2019-01-07 12:00:08 +00:00
aminal.ico Update Windows icon to 128x128 px (#200) 2019-02-06 08:53:39 +00:00
aminal.rc Windows support and enhancements. (#123) 2019-01-07 12:00:08 +00:00
build.sh build fix again 2018-12-06 13:23:04 +00:00
config.go Gofmt (#216) 2019-02-14 16:45:53 +00:00
demo.gif nicer demo gif 2018-11-27 16:35:29 +00:00
example.sixel finished sixel support 2018-10-28 15:26:12 +00:00
logger.go tidy up main package 2018-10-23 15:31:47 +01:00
main.go Automate ci running of vttest Test of screen features (#209) 2019-02-12 08:10:51 +00:00
main_test.go Resolve formatting issues (#222) 2019-02-16 09:15:40 +00:00
windows.md Windows support and enhancements. (#123) 2019-01-07 12:00:08 +00:00

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