Coder Social home page Coder Social logo

aminal's Introduction

Aminal - A Modern Terminal Emulator

CircleCI GoReportCard Github Release

Aminal is a modern terminal emulator for Mac/Linux 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 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)
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 ~/.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.
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 replcae when searching.

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

aminal's People

Contributors

claushellsing avatar laverya avatar liamg avatar mdaffin avatar mikkeloscar avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.