DimFunc and PosFunc (#4210)
* Fixes #4208. MainLoopSyncContext doesn't work with the v2 drivers * Fixes #3951. Add DimFuncWithView with a View dependency * Revert to iteration which will handle the necessary processes * Revert "Revert to iteration which will handle the necessary processes" This reverts commit50015ac6da. * Layout and draw before position cursor * Add optional View parameter and property to the DimFunc and PosFunc * Trying fix unit test error * Revert layout changes * Fixes #4216. Legacy drivers aren't refreshing the screen correctly on view drag * Add assertion proving NeedsLayout is always false before call OnSubViewsLaidOut * Fix unit test error * Increasing time to abort * Revert "Increasing time to abort" This reverts commitd7306e72f3. * Trying fix integration tests * Still trying fix integrations unit tests * Revert comment * Layout is performed during the iteration * Using Dim.Func with status bar view * Still trying fix integrations tests by locking _subviews * Still trying fix integrations tests by locking _subviews * Add internal SnapshotSubviews method * Remove lock from SnapshotSubviews method * Using SnapshotSubviews method in the DrawSubViews method * Remove lock from SnapshotSubviews method * Using SnapshotSubviews method in the DrawSubViews method * Using SnapshotSubviews * Prevent new app if the previous wasn't yet finished * Replace SnapshotSubviews method with ViewCollectionHelpers class * Lock entire GuiTestContext constructor * Using Snapshot in the ordered field * Fixes #4221 Extra modifiers f1 to f4 in v2net (#4220) * Assume we are running in a terminal that supports true color by default unless user explicitly forces 16 * Add support for extra modifiers for F1 to F4 keys * Revert "Assume we are running in a terminal that supports true color by default unless user explicitly forces 16" This reverts commit4cc2530de0. * Cleanup * Update comments * Code cleanup --------- Co-authored-by: Tig <tig@users.noreply.github.com> * Move ViewCollectionHelpers class to a separate file * Remove Border.Layout call in the DoDrawAdornmentsSubViews method. * Remove adornments layout call within the draw --------- Co-authored-by: Tig <tig@users.noreply.github.com> Co-authored-by: Thomas Nind <31306100+tznind@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.

