Go to file
Liam Galvin 1371ace95c Adding missing DL CIS handler 2018-11-15 11:33:35 +00:00
.circleci Removes the vendor director in favour of go modules support 2018-10-30 20:44:18 +00:00
.github/ISSUE_TEMPLATE Update bug_report.md 2018-10-26 12:09:12 +01:00
buffer Adding missing DL CIS handler 2018-11-15 11:33:35 +00:00
config Fix for zsh 2018-10-28 16:36:26 +00:00
demo progress toward vim support 2018-10-23 14:22:27 +01:00
glfont fix osx framebuffer issues 2018-10-25 10:15:54 +01:00
gui Merge pull request #55 from liamg/ctrl-codes 2018-11-04 20:59:34 +00:00
hints improve permission annotation 2018-11-12 10:30:42 +00:00
sixel fix conflict 2018-11-04 20:34:04 +00:00
terminal Adding missing DL CIS handler 2018-11-15 11:33:35 +00:00
.gitignore rename 2018-10-21 15:11:10 +01: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
LICENSE Create LICENSE 2018-10-21 11:54:58 +01:00
Makefile Adding missing DL CIS handler 2018-11-15 11:33:35 +00:00
PULL_REQUEST_TEMPLATE.md Create PULL_REQUEST_TEMPLATE.md 2018-10-21 15:57:21 +01:00
README.md Add go report card badge 2018-11-11 12:54:40 +00:00
config.go remove old config 2018-10-28 16:47:51 +00:00
demo.gif added gif to readme 2018-10-24 09:58:45 +01:00
example.sixel finished sixel support 2018-10-28 15:26:12 +00:00
go.mod Switchs to go modules 2018-10-30 16:57:41 +00:00
go.sum Switchs to go modules 2018-10-30 16:57:41 +00:00
hint.png add hinting 2018-10-29 20:35:49 +00:00
logger.go tidy up main package 2018-10-23 15:31:47 +01:00
main.go Fix for zsh 2018-10-28 16:36:26 +00:00
sixel.png finished sixel support 2018-10-28 15:26:12 +00:00

README.md

Aminal - A Modern Terminal Emulator

CircleCI GoReportCard

Aminal is a modern terminal emulator implemented in Golang and utilising OpenGL. Whilst the basic functionality is in place, we're not yet at the stage to make a public release. Feel free to build and play with it though!

Example screenshot

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.

Contextual Hints

Example hint

Sixel Support

Example sixel

Aims

  • Unicode support
  • OpenGL rendering
  • Full customisation options
  • True colour support
  • Support for common 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
  • Sixel support

Platform Support

Platform Supported
Linux
MacOSX
Windows

Quick Start

Dependencies

  • Go 1.11+
  • 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.

Build

Building requires Go 1.11 (for go mod).

git clone https://github.com/liamg/aminal.git
cd aminal
go build
./aminal

Keyboard Shortcuts

Operation Key(s)
Select text click + drag
Select word double click
Select line triple click
Copy ctrl + shift + c
Toggle debug display ctrl + shift + d
Paste ctrl + shift + v
Google selected text ctrl + shift + g
Report bug in aminal ctrl + shift + r
Toggle slomo ctrl + shift + ;

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.
--shell [shell] root shell string User's shell Use the specified shell program instead of the user's usual one.