* Fixed almost all issues * code comments * fixed copilot suggestion * Add Unicode filtering and improve context menu handling Enabled nullable reference types for better null safety. Added a Unicode category filter to `CharacterMap` via the new `ShowUnicodeCategory` property and `OptionSelector`. Updated rendering logic to dynamically manage visible rows based on the filter, improving performance and usability. Refactored menu items to include the Unicode category selector. Enhanced `TextView` context menu handling to support mouse-based positioning. Performed miscellaneous code cleanup and added comments for improved readability and maintainability. * Fix Unicode rendering and simplify CombiningMarks Updated `RuneExtensions.GetColumns` to handle specific Unicode glyphs (I Ching symbols) rendered as double-width in Windows Terminal, despite being single-width per Unicode. Added a workaround to return `2` for these glyphs and fallback to `UnicodeCalculator.GetWidth` for others. Simplified `CombiningMarks` by removing examples for Unicode characters `\u0600` and `\u0301`, streamlining the scenario. Referenced PR #4255 for context on the workaround. * Update RuneTests with new Unicode test cases and fixes Added new test cases for Unicode characters U+d7b0 (ힰ) and U+f61e () with expected parameters. Updated the test case for U+4dc0 (䷀) to adjust the second parameter from 1 to 2 and added references to the Microsoft Terminal Unicode width overrides file and GitHub issue #19389. Existing test cases for other Unicode characters remain unchanged. * Update Terminal.Gui/Views/CharMap/CharMap.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update comments in GetColumns method for clarity Updated comments in the `GetColumns` method of the `RuneExtensions` class to replace "HACK" with "TODO" and reference issue #4259 instead of pull request #4255. This change clarifies that the code is a temporary measure and should be removed once the issue is resolved. No functional changes were made to the code logic. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Terminal.Gui v2
The premier toolkit for building rich console apps for Windows, the Mac, and Linux/Unix.
⚠️ Note:
v1is in maintenance mode and we will only accept PRs for issues impacting existing functionality.
⚠️ Note:
Developers starting new TUI projects are encouraged to targetv2 Alpha. The API is significantly changed, and significantly improved. There will be breaking changes in the API before Beta, but the core API is stable.
Quick Start
Paste these commands into your favorite terminal on Windows, Mac, or Linux. This will install the Terminal.Gui.Templates, create a new "Hello World" TUI app, and run it.
(Press CTRL-Q to exit the app)
dotnet new --install Terminal.Gui.templates
dotnet new tui -n myproj
cd myproj
dotnet run
To run the UICatalog demo app that shows all the controls and features of the toolkit, use the following command:
dotnet run --project Examples/UICatalog/UICatalog.csproj
There is also a visual designer (uses Terminal.Gui itself).
Documentation
The full developer documentation for Terminal.Gui is available at gui-cs.github.io/Terminal.Gui.
Getting Started
- Getting Started - Quick start guide to create your first Terminal.Gui application
- Migrating from v1 to v2 - Complete guide for upgrading existing applications
- What's New in v2 - Overview of new features and improvements
API Reference
For detailed API documentation, see the API Reference.
Installing
Use NuGet to install the Terminal.Gui NuGet package:
v2 Alpha
(Infrequently updated, but stable enough for production use)
dotnet add package Terminal.Gui --version "2.0.0-alpha.*"
v2 Develop
(Frequently updated, but may have breaking changes)
dotnet add package Terminal.Gui --version "2.0.0-develop.*"
Legacy v1
dotnet add package Terminal.Gui --version "1.*
Or, you can use the Terminal.Gui.Templates.
Contributing
See CONTRIBUTING.md.
Debates on architecture and design can be found in Issues tagged with design.
History
See gui-cs for how this project came to be.

