Skip to main content

Galaxie Curses is a free software ToolKit for the NCurses API

Project description

Documentation Status pipeline status coverage report codecov

Galaxie Curses, The ToolKit

Once upon a time, this project was hosted on a ancient platform called GitHub. Then came the Buyer. The Buyer bought GitHub, willing to rule over its community.

I was not to sell, so here is the new home of "".

The Project

Galaxie Curses alias Le Truc Blue (The Blue Thing) is a free software Tool Kit for the NCurses API. It can be consider as a text based implementation of the famous GTK+ Library (Or Ultra Inspired...).

Where implementation mean: Devellop a project from a documentation specs.

Originally the project have start in 2016 by author Jérôme.O.

Then the lib is write in Python


Pre Version: pip install galaxie-curses
Dev Version: pip install -i galaxie-curses


The Mission

Provide a Text Based ToolKit with powerfull high level Widget (Select Color, Printer Dialog, FileSelector).

During lot of years the main stream was to provide big computer with big GUI Toolkit, unfortunately almost nobody have care about ultra low profile computer and we are now in a situation where no mature ToolKit is ready to use on pen computer. Time's change then it's time to change the world ...

The goal of the version 1.0 will be to create a application like Midnight-Commander with GLXCurses.


The Lib should have no dependency , then consider Applications will come with they own dependency.


You welcome !!!

The GTK+ v3 documentation is our model:

It's almost impossible to code widget without UnitTest, that because eyes can't easily control background operations.


ProgressBar demo

Mini Commander (MC UI Clone)

Label with markdown





#!/usr/bin/env python
import GLXCurses

if __name__ == '__main__':

    # Create the main Application
    app = GLXCurses.Application()

    # Create a Label
    label = GLXCurses.Label()
    label.set_markdown("Hello **World** !!!")

    # Create the main Window and add our Label inside
    win = GLXCurses.Window()

    def handle_keys(self, event_signal, *event_args):
        if event_args[0] == ord('q'):
            # Everything have a end, the main loop too ...
            # Control + C work automatically

    # Add Everything inside the Application

    # Connect the application to Curses event
    app.connect('CURSES', handle_keys)

    # Main loop

More examples can be found here:


  • MainLoop from EveLoop
  • EventBus from EveLoop
  • Signal based
  • Application Class
  • Component like Button, Container, ProgressBar, Image
  • Have GTK+ design as roadmap
  • Auto Resize
  • Minimize NCurses crash
  • Common thing for a text based graphic interface tool kit :)
  • Use RGB color (255, 0, 255)
  • Image Widget
  • Label can use MarkDown


Galaxie-Curses is a Text Based GTK+ like, then the GTK+ Doc is the roadmap.

Yes NCurses haven't icons or pixel management :) , then chars replace pixel. Each sizes x, y , height, width are in chars value.

  • 100% Test Code Coverage
  • Add Video Widget
  • Ultra Low Power usage.
  • Widget over SSH
  • DBus integration
  • Audio
  • Data to Audio file for backup or long distance radio
  • Build Application via YAML file (it have been report about a low TUI must have light programation style)
  • Every Examples should be a small and efficient Desktop component, Calc, Config Panel, File Explorer, Panel, etc ...
  • Widget capability to save information's
  • Look like MC similar to GTK code

Note that actually a Curses Window Manager is not on the pipe. Everything is ready for ...

How that possible

I don't know if one day i'll finish the lib. I do my best for that.

Unfortunately GLXCurses is not a GTK Clone it will take too mush time for one guy to make it possible. For minimize the effort i implement property and Widget class with the same GTK+ design.

I consider haven't the enginier level to create a UI design by my self, then i have choose GTK Documentation as specs.

GTK Method's are implemented only if that really require. The lib use massively properties getter and setter decorator, for limit the need of method.

For be brief it take advantage of Python object where GTK use GLIBC and method's for make the same thing.

If a method is implemented, then it's a pure GTK+ implementation else the lib use a property in pure Python style.


widget =

is replace by

widget = Widget()
widget.decorated = True

I focus my effort to have capability to make MC clone with GLXCurses, and limit my effort to that direction. (yes i would like more too ...)

Note for GTK+ Project Developer's

I'm really confuse about the big copy/past i making from the GTK+ documentation during the creation of the Galaxie-Curse documentation, that because english is not my primary language and i'm a bit limited for make a ToolKit documentation without that ... Consider that actual documentation of Galaxie-Curse as the better i can do and it include to copy/past large parts of the GTK+ documentation. (sorry about that)

As you probably see Galaxie-Curses is a Text Based GTK+ with a hard dependency to the GTK+ documentation.


To everyone i have interrest to it project, copy it, use it, diffuse it , and have fun ...

All Galaxie API is develop with pycharm as IDE from JetBrains link:

JetBrains graciously have provide to us licenses for pycharm profesional



Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

galaxie-curses-0.3.5.tar.gz (244.8 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page