Project

notcurses

0.0
The project is in a healthy, maintained state
Notcurses is a modern reimagining of the classic TUI library curses. It supports true color, has stock widgets, and should be familiar enough to anyone familiar with curses, though it is not an API-compatible drop-in.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Notcurses-ruby

WARNING

BEFORE YOU GO ANY FURTHER, this is a WIP!!! This is not to be used for ANYTHING IMPORTANT WHATSOEVER!!! This is my first time using SWIG and my first time developing a Ruby extension. It's got very basic functionality working, but only works on Linux right now. YOU HAVE BEEN WARNED!!!

Overview

This is a SWIG-generated Ruby extension for Notcurses, a truly 31337 library for developing TUIs. Notcurses is a modern reimagining of the classic Curses library known to many. It supports true color, has built-in widgets and many other nice-to-haves that aren't present in curses, and probably never will be. Note that while Notcurses will be familiar to anyone who has worked with curses, it is not a drop-in replacement. The API is definitely different.

https://github.com/dankamongmen/notcurses

Installation

You should install swig first via your OS package management system. If swig can't be found, the default generated code will be used which was generated on a modern Linux system (Ubuntu 22 LTS).

Otherwise it's just your typical gem install notcurses.

Usage

This is JUST the extension- which puts all the functions and constants under the Notcurses namespace. I will be developing a more idiomatic object model to interface with this in a separate project, which gives you the freedom to choose the raw extension or the full on object-oriented style.

Developing

Everything is pretty much in ext. The swig interface (notcurses.i) is the main thing, with a couple of overridden/wrapper functions for things that take va_list args cause swig doesn't yet have a built-in facility to translating from ruby's variadics to va_list. The notcurses_wrap.c is what SWIG auto- generates. It's committed to the repo just as a fallback if SWIG isn't in- stalled on the local machine but that isn't really a great idea anyways.

If you are new to curses stuff, you will need to be reminded that you will need to use pry-remote to debug since the terminal will be controlled by notcurses.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/slithernix/notcurses.