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.
- 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.
- 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.
- Better input handling
- Mouse input?
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"));
}