Skip to content

A library that makes it easier to create beautiful console applications.

License

Notifications You must be signed in to change notification settings

punker76/spectre.console

 
 

Repository files navigation

Spectre.Console

Spectre.IO NuGet Version

A .NET Standard 2.0 library that makes it easier to create beautiful console applications.
It is heavily inspired by the excellent Rich library for Python.

Features

  • Written with unit testing in mind.
  • Supports the most common SRG parameters when it comes to text styling such as bold, dim, italic, underline, strikethrough, and blinking text.
  • Supports 3/4/8/24-bit colors in the terminal.
    The library will detect the capabilities of the current terminal and downgrade colors as needed.

Example

Example

Usage

The Spectre.Console API is stateful and is not thread-safe. If you need to write to the console from different threads, make sure that you take appropriate precautions, just like when you use the regular System.Console API.

If the current terminal does not support ANSI escape sequences, Spectre.Console will fallback to using the System.Console API.

NOTE: This library is currently under development and API's might change or get removed at any point up until a 1.0 release.

Using the static API

The static API is perfect when you just want to output text like you usually do with the System.Console API, but prettier.

AnsiConsole.Foreground = Color.CornflowerBlue;
AnsiConsole.Style = Styles.Underline | Styles.Bold;
AnsiConsole.WriteLine("Hello World!");

AnsiConsole.Reset();
AnsiConsole.WriteLine("Good bye!");
AnsiConsole.WriteLine();

If you want to get a reference to the default IAnsiConsole, you can access it via AnsiConsole.Console.

Creating a console

Sometimes it's useful to explicitly create a console with specific capabilities, such as during unit testing when you want control over the environment your code runs in.

IAnsiConsole console = AnsiConsole.Create(
    new AnsiConsoleSettings()
    {
        Ansi = AnsiSupport.Yes,
        ColorSystem = ColorSystemSupport.TrueColor,
        Out = new StringWriter(),
    });

NOTE: Even if you can specify a specific color system to use when manually creating a console, remember that the user's terminal might not be able to use it, so unless you're creating an IAnsiConsole for testing, always use ColorSystemSupport.Detect and AnsiSupport.Detect.

About

A library that makes it easier to create beautiful console applications.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%