Description

Because colors are awesome.

Package Information

Version1.0.4 (2016-Aug-18)
Repository https://github.com/robik/consoled
LicenseBoost License
Authorsrobik, quickfur, Adam D. Ruppe, Ianis G. Vasilev
Registered byIanis G. Vasilev
Dependencies none

Installation

To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

Readme

ConsoleD

License

This library is licensed under Boost License.

About

ConsoleD is open-source, small library written in D Programming Language that helps you add colors and formatting to your console output. Work on both Windows and Posix operating systems.

Important notes:
  • Font styles(underline, strikethrough) have no effect on Windows OS.
  • Light background colors are not supported on Posix, Non-light equivalents are used.
  • Temponary: Because core.sys.posix.sys.ioctl module was added recently, you must compile project with this file.

Featues

  • Setting and Getting console colors
  • Clearing screen
  • Setting console title
  • Getting console size
  • Moving the console cursor around as well as getting its position
  • Handling the close event
  • Getting input with not echo and without line buffering.

Todo

  • Better input handling
  • Mouse input?

Examples

Adding colors
import std.stdio, consoled;

void main()
{
    foreground = Color.red;
    writeln("foo"); // Fg: Red | Bg: Default
    
    background = Color.blue;
    writeln("foo"); // Fg: Red | Bg: Blue
    
    resetColors(); // Bring back initial state
}

or:

import std.stdio, consoled;

void main()
{
    setColors(Fg.red, Bg.blue); /// Order does not matter as long parameters are Fg or Bg.
    writeln("foo"); // Color: Red | Bg: Blue
    
    resetColors(); // Bring back initial state
}
Current Foreground/Background

To get current foreground and background colors, simply use foreground or background properties

import std.stdio, consoled;

void main()
{
    auto currentFg = foreground;
    auto currentBg = background;
}
Font Styles

You can change font styles, like strikethrough, underline and bold. This feature is Posix only, when called on windows, nothing happens.

import std.stdio, consoled;

void main()
{
    fontStyle = FontStyle.underline | FontStyle.strikethrough | FontStyle.bold;
    writeln("foo");
    resetFontStyle(); // Or just fontStyle = FontStyle.none;
}
Easy colored messages

You can use helper function writec or writecln to easily colored messages.

import std.stdio, consoled;

void main()
{
    writecln("Hello ", Fg.blue, FontStyle.bold, "World", Bg.red, "!");
    resetColors();
}
Console Size

You can get console size using size property which return tuple containg width and height of the console.

import std.stdio, consoled;

void main()
{
    writeln(size);
}
Cursor manipulation

You can set cursor position using setCursorPos():

import std.stdio, consoled;

void main()
{
    // 6 is half of "insert coin" length.
    setCursorPos(size.x / 2 - 6, size.y / 2);
    writeln("Insert coin");
}
Clearing the screen

You can clear console screen using clearScreen() function:

import std.stdio, consoled, core.thread;

void main()
{
	// Fill whole screen with hashes
    fillArea(ConsolePoint(0, 0), size, '#');
	
	// Wait 3 seconds
	Thread.sleep(dur!"seconds"(3));
	
	// Clear the screen
	clearScreen();
}
Setting the title

To set console title, use title property:

import std.stdio, consoled;

void main()
{
	title = "My new title";
}
Setting exit handler

It is possible to handle some close events, such as Ctrl+C key combination using addCloseHandler():

import std.stdio, consoled;
void main()
{   
    setCloseHandler((i){
        switch(i.type)
        {
            case CloseType.Other:
                writeln("Other");
            break;
            
            case CloseType.Interrupt:
                writeln("Ctrl+C");
            break;
            
            // Ctrl+Break for windows, Ctrl+Z for posix
            case CloseType.Stop:
                writeln("Ctrl+Break or Ctrl+Z");
            break;
            
            
            // Posix only
            case CloseType.Quit:
				writeln(`Ctrl+\`);
            break;
            
            default:
        }
        
        writeln(i.isBlockable);
    });
    
    while(true){}
}

Color themes

You can easy write colored messages with Color themes:

import std.stdio, consoled;

alias Error = ColorTheme!(Color.red, Color.black);

void main()
{
	writeln(Error("foobar error"));
}

Available versions

1.0.4 1.0.3 1.0.2 1.0.1 1.0.0 ~master