gui.cs | Console-based user interface toolkit for .NET applications | User Interface library

 by   migueldeicaza C# Version: v1.4.0 License: MIT

kandi X-RAY | gui.cs Summary

kandi X-RAY | gui.cs Summary

gui.cs is a C# library typically used in User Interface applications. gui.cs has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

Console-based user interface toolkit for .NET applications.

            kandi-support Support

              gui.cs has a medium active ecosystem.
              It has 6175 star(s) with 508 fork(s). There are 141 watchers for this library.
              It had no major release in the last 12 months.
              There are 63 open issues and 713 have been closed. On average issues are closed in 76 days. There are 9 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of gui.cs is v1.4.0

            kandi-Quality Quality

              gui.cs has 0 bugs and 0 code smells.

            kandi-Security Security

              gui.cs has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              gui.cs code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              gui.cs is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              gui.cs releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              gui.cs saves you 48018 person hours of effort in developing the same functionality from scratch.
              It has 113951 lines of code, 0 functions and 427 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of gui.cs
            Get all kandi verified functions for this library.

            gui.cs Key Features

            No Key Features are available at this moment for gui.cs.

            gui.cs Examples and Code Snippets

            No Code Snippets are available at this moment for gui.cs.

            Community Discussions


            Terminal.Gui when leaving charracter are still generated on Linux
            Asked 2021-Aug-21 at 16:20

            I wrote a small Console program using .NET 5 and the Terminal.Gui library from Miguel de Icaza.

            When I run it on Windows, everything works well. I published it as an autonomous single file for Linux and I run it on an Ubuntu 20.04 LTS as a WSL 1 in Windows 10. Once again it works well, but on Linux when I quit the program using top.Running = false; the screen is not cleared (not really a problem) but every mouse move create caracters on the console which is more annoying.

            Does anybody solve this trouble.



            Answered 2021-Aug-21 at 16:20

            If found the solution on the [GitHub Terminal.Gui project issues][1] I just add Application.Shutdown(); to my main. So It becomes :



            Type initializer for 'SkiaSharp.SKImageInfo' threw an exception Avalonia
            Asked 2021-Aug-01 at 15:04

            Full traceback



            Answered 2021-Aug-01 at 15:04

            You are using .NET SDK from snap. When you run your app with such SDK, snap will start your program in a sandbox environment (that nobody has asked for, especially for an SDK tool, but it does that anyway) with its own root file system without native dependencies required by Avalonia. Nothing you install on the main system will affect said sandbox. It just won't work.

            Purge snap-installed .NET SDK from your system (preferably alongside with snap itself) and install using instructions from :



            Highchart Stock gui does not work in Angular 8
            Asked 2021-Apr-20 at 13:18

            I'm trying to make a graph with Highchart stock in Angular 8. I want to add "FullScreen" button so I did the following :

            In my component I imported required modules :



            Answered 2021-Apr-20 at 13:18

            I found a similar issue reported on the highcharts-angular repository.


            It looks like the Fullscreen module requires the Exporting module so to fix the problem you could try importing & initializing the Exporting module.



            How to add an event Action handler in PowerShell
            Asked 2020-Oct-11 at 18:22

            Terminal.Gui (gui.cs) provides a Button class with a Clicked event defined as:



            Answered 2020-Oct-05 at 21:23

            This change does not display the error but the event seems not to be firing.



            OpenTK (OpenGL) How to correctly use BufferSubData and DrawElements with multiple Objects
            Asked 2020-Oct-01 at 15:52

            I' trying to implement a renderer which uses only one VBO and one EBO to store all object vertices and indices. For that, I found some tutorials and finally came up with a rather good result.

            The problem is that it only works properly with ONE single object. As soon as I want to add another one, the rendering shows weird behaviour.

            Can you help me with this?

            You can find the full code here: The important classes are:

            • Rendering.Core.Rendering.Renderer.cs
            • Rendering.Core.Classes.Shapes.GLShape.cs
            • Rendering.Core.RenderGUI.RenderGUI.cs

            This is the initializing method in the Renderer:



            Answered 2020-Oct-01 at 15:52

            As soon as I want to add another one, the rendering shows weird behavior

            Of course, because the indices for the 2nd and following objects are wrong. You need to add the sum of the vertices of the previous meshes to the indexes. To the indices of the first mesh you have to add 0, to the indices of the 2nd mesh you have to add the number of vertices of the 1st mesh, to the indices of the 3rd mesh you have to add the sum of the vertices of the 1st and 2nd mesh, ...



            Not able to import JavaScript file error into html
            Asked 2020-Jul-09 at 04:14

            I have index.html file where I have html head body tags and I have constant.js file from which I want to use a constant. how to define that constant in constant.js and how to use it in index.html and where to place the import statement.

            When I include with this in the head section of HTML



            Answered 2020-Jul-09 at 04:14


            GUI update patterns in F#
            Asked 2020-May-10 at 18:06

            I'm looking for the best way to propagate model updates to the GUI, using a "classic" (as in: non reactive functional) GUI toolkit: Terminal.GUI. Currently I have this code (simplified):



            Answered 2020-May-10 at 18:06

            Of course, it doesn't need to be too complicated - refactor your update to just take in a listview parameter:



            Can I keep worker and GUI separate without cross thread exceptions?
            Asked 2020-Apr-23 at 17:37

            I have a project I'm working on that has a Windows gui (optional) and a worker that can either write to the gui or to the console, if no gui is given. The gui is optional to make this project backwards compatible with systems that may not have a desktop environment (I also may end up remaking this project eventually in C or C++ but for time constraints sake I need something to work right now). The majority of the computers the program will run on (for now) have Windows XP. (I am targeting .NET Framework 4.0.3).

            Due to the fact that I want the gui to be optional, I don't want the worker class to live inside a BackgroundWorker or a Form. In my real project I have a UserInterface "interface" (c# interface) that can be implemented by a variety of user interfaces.

            In the Windows GUI, tfhere is a main Form with a button that opens a dialog Form. The dialog has a multiline textbox that can have lines appended to it by the worker.

            Since I am not using a BackgroundWorker or other conventional ways of doing things, I have ran into various problems relating to cross threading operations and calling BeginInvoke before a window handle has been created. I was able to "solve" the window handle problem by essentially calling _ = MainForm.Handle in MainForm's constructor to force the creation of a window handle creation before the window is shown (so that the worker can append lines to a textbox, which could happen before the gui has been shown).

            Here is my minimal, reproducible example that captures the problem I am having in my real project. The problem is encountered when either a) removing creation of window handle from MainForm constructor, which causes BeginInvoke to complain about being called before the window handle has been created, or b) as it is now, once the dialog window is closed and reopened the call to ShowDialog fails due to cross thread operations.




            Answered 2020-Apr-23 at 17:37

            The Threading part is not an issue here. You just need to handle the Form creation in a slightly different way:

            First setup:

            • The Form's Handle creation can be forced calling CreateHandle() right after InitializeComponent() (the .Net Source code related to the method call is more interesting, also note the call to UpdateHandleWithOwner()).
            • The next condition to show the output of the worker thread, is that the Form is also Visible, since also the TextBox Handle needs to exist when it's invoked.
            • The Gui class needs to BeginInvoke() the Form's AddLine() method, since the method call is generated in a different thread (the Gui object is used by the Worker object thread).
            • I've added a public property to the Gui class: public bool CanWrite: the Worker class can inspect this property to determine where it should write its output.
              The public property returns: dialogForm != null && dialogForm.Visible;, this because ↓:
            • DialogForm is shown calling ShowDialog(): this implies that when the DialogForm is closed, the Form is not disposed. Also, the object still has a reference in the Gui class. When it's closed, its Visible property returns false.

            Second setup:

            • Since (based on comments) this Console application should output to the DialogForm Form when a Gui object is created and the Dialog is not necessarily shown immediately, the TextBox Control in DialogForm should cache lines of text posted by the Thread in the Worker class.
              This requires a simple edit: change dialogForm != null && dialogForm.IsVisible in just dialogForm != null, then verify the handle status before Gui.AddLine() is called and caching lines of text if the handle is not available at this time.
            • The Owner Form, MainForm, instructs DialogForm to recreate its handle when DialogForm.ShowDialog() returns. Since ShowDialog() is used to show DialogForm, the form is not disposed. Recreating the handle doesn't casuse child controls to lose their content.

            Implement both option:

            The IsVisible property check could become a Property of Gui, something like bool UpdateOnDialogVisible, to test on CanWrite, so the text will be written to the TextBox depending on the status of this property.

            Tested in:

            - Windows 7 (I don't have a WinXP machine available)
            - .Net Framework 4.0
            - C# 5

            In Program.cs:


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install gui.cs

            To install Terminal.Gui into a .NET Core project, use the dotnet CLI tool with following command.


            See the Terminal.Gui/ README for an overview of how the library is structured. The Conceptual Documentation provides insight into core concepts.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link