This library is licensed under Boost License.
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.
core.sys.posix.sys.ioctl
module was added recently, you must compile project with this file.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
}
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;
}
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;
}
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();
}
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);
}
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");
}
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();
}
To set console title, use title
property:
import std.stdio, consoled;
void main()
{
title = "My new title";
}
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){}
}
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"));
}