Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Goncurses is an ncurses library for the Go programming language. It requires both pkg-config and ncurses C development files be installed.


The go tool is the recommended method of installing goncurses. Issue the following command on the command line:

$ go get


The ncurses C development library must be installed on your system in order to build and install Goncurses. For example, on Debian based systems you can run:

$ sudo apt install libncurses-dev

OSX and Windows users should visit the 
[Wiki]( for installation

## Pkg-config Flags Error
**Cgo** will fail to build with an invalid or unknown flag error with recent
versions of **ncurses**. Unfortunately, the **cgo** tool only provides one
mechanism for overcoming this. You need to set \*\_ALLOW environment variables
to overcome the issue. There are no **cgo** directives or any other clever
ways (that I know of) to fix this.

This package provides a [Makefile](../master/Makefile) as one solution.
Another would be to set the variables in your shell in whatever way makes
you feel comfortable.

See Issues: [#55]( and

# Notes

No functions which operate only on stdscr have been implemented because 
it makes little sense to do so in a Go implementation. Stdscr is treated the
same as any other window.

Whenever possible, versions of ncurses functions which could potentially
have a buffer overflow, like the getstr() family of functions, have not been
implemented. Instead, only mvwgetnstr() and wgetnstr() are used.