# Aminal - A Modern Terminal Emulator [![CircleCI](https://circleci.com/gh/liamg/aminal/tree/master.svg?style=svg)](https://circleci.com/gh/liamg/aminal/tree/master) Aminal is a modern terminal emulator implemented in Golang and utilising OpenGL. So far the terminal is very much incomplete, but we're getting there! ![Example screenshot](demo.png) 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. ## Aims - Full unicode support - OpenGL rendering - Full customisation options - True colour support - Support for commmon ANSI escape sequences a la xterm - Scrollback buffer - Clipboard access - Clickable URLs - Resize logic that wraps/unwraps lines _correctly_ - Bullshit graphical effects - Multi platform support ## What isn't supported? - Suspend/Continue (\^S, \^Q). This is archaic bullshit that annoys more people than it helps. Basically:

Overheating

## Build Dependencies - Go 1.10.3+ - 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`. ## Platform Support | Platform | Supported | |----------|------------| | Linux | ✔ | MacOSX | ⏳ | Windows | ⏳ ## Planned Features | Feature | Done | Notes | |-----------------------------|------|-------| | Pty allocation | ✔ | Needs work for OSX + Windows | OpenGL rendering | ✔ | | 8-bit (256) colour | ✔ | | 24-bit (true) colour | ✔ | | Resizing/content reordering | ⏳ | | ANSI escape codes | ⏳ | Most of these are handled now | UTF-8 input | ✔ | | UTF-8 output | ✔ | Works as long as the font in use supports the relevant characters. | Copy/paste | | Paste working, no mouse interaction for copy | Customisable colour schemes | ✔ | Complete, but the config file has no entry for this yet | Config file | ⏳ | Minimal options atm | Scrolling | ⏳ | Infinite buffer implemented, need GUI scrollbar & render updates | Mouse interaction | | | Sweet render effects | | ## Keyboard Shortcuts | Operation | Key(s) | |--------------------|---------------------| | Paste | ctrl + shift + v | Toggle slomo | ctrl + shift + ; | Interrupt (SIGINT) | ctrl + c ## 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 Options/CLI Flags | CLI Flag | Config Section | Config Name | Type | Default | Description | |--------------------|---------------------|------------------------|---------|--------------|-------------| | --debug | _root_ | debug | boolean | false | Enable debug mode, with debug logging and debug info terminal overlay. | --slomo | _root_ | slomo | boolean | false | Enable slomo mode, delay the handling of each incoming byte (or escape sequence) from the pty by 100ms. Useful for debugging. | --always-repaint | rendering | always_repaint | boolean | false | Redraw the terminal GUI constantly, even when no changes have occurred.