MTerminal.WPF
0.1.3
dotnet add package MTerminal.WPF --version 0.1.3
NuGet\Install-Package MTerminal.WPF -Version 0.1.3
<PackageReference Include="MTerminal.WPF" Version="0.1.3" />
paket add MTerminal.WPF --version 0.1.3
#r "nuget: MTerminal.WPF, 0.1.3"
// Install MTerminal.WPF as a Cake Addin #addin nuget:?package=MTerminal.WPF&version=0.1.3 // Install MTerminal.WPF as a Cake Tool #tool nuget:?package=MTerminal.WPF&version=0.1.3
<div align="center">
</div>
<div align="center"> <h2>MTerminal provides a "console" for the WPF apps.</h2>
Terminal is a simple WPF window that can display text and has an input box for commands. Can be used as more user-friendly Command-Line Interface for simple apps or as a convenient debug tool for your WPF app. </div>
Features:
- Similar to the
System.Console
- Can be used as target output of a
Console
- Supports colored text
- Autocomplete for the commands
- Customizable style of the window
- Has two built-in commands:
- help: shows information about available commands
- clear: clears the screen
Basic usage:
// Show the Terminal window:
Terminal.Show();
//Write a colored message to the Terminal:
Terminal.WriteLine("Hello World!", Colors.LightBlue);
Commands overview:
Basic working command consists of two elements:
- Command name/ID (this is what typed to invoke it)
Action<string[]>
- code that will be executed when command is invoked.
Command also has some additional properties but they are not essential.
Arguments
When command is invoked - all text that was typed after a command id will be passed to the command as an argument. Args work as the regular app args do:
- It's a array of strings separated by spaces
- Text encased in quotes counts as 1 argument
Adding a command:
Terminal.Commands.Add(new TerminalCommand("exit", "Exits the app", (args) => App.Shutdown()));
Read functionality:
Terminal supports Read, ReadLine and ReadKey. They work as expected:
- Read returns next char that is typed in by user;
- ReadLine waits for the return key, after which it returns text that was inputed;
- ReadKey returns a key that was pressed;
But - they are implemented as Tasks, which means to use it properly they should be awaited.
❗Warning: if called from the UI thread with waiting (such as GetAwaiter().GetResult()) they will hang the app in a deadlock, as the UI thread is waiting and cannot process user input.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0-windows7.0 is compatible. net7.0-windows was computed. net8.0-windows was computed. |
-
net6.0-windows7.0
- Microsoft.Toolkit.Mvvm (>= 7.1.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
0.1.3 - Fixed getting style properties from different thread.
0.1.2 - Fixed version number. Small fix in 'help' command.
Added Color extension method to change opacity.
0.1.1 - Fixed Show after window was closed.
0.1.0 - Initial release.