Skip to main content

Nimbusinator

RM Nimbus GUI for Python

About

Nimbusinator is a graphical user-interface package for Python that mimicks the graphics and text drivers of the RM Nimbus PC186. It is not an emulation of the Nimbus itself. This means you get the best of both worlds: Cutting-edge Python computing power, beautifully presented in up to 16 colours!

Quick Start Animation

Disclaimer: Nimbusinator is a tribute project and is in no way linked to or endorsed by RM plc.

Read the docs for full details

Usage

To implement a Nimbus user interface all you need to do is import the Nimbus and Command classes, like this:

from nimbusinator.nimbus import Nimbus
from nimbusinator.command import Command

Then create one object of each, and bind the Command object to the Nimbus object:

nim = Nimbus()
cmd = Command(nim)

To display the screen, call the boot method on the Nimbus object. By default, you'll see the famous blue "Welcome Screen" before control is released back to your program. To skip the Welcome Screen simply pass the argument skip_welcome_screen=True when calling boot, like this:

# Boot the Nimbus with Welcome Screen
nim.boot()
# Boot the Nimbus without Welcome Screen  
nim.boot(skip_welcome_screen=True)

Note that the original Welcome Screen reported the memory status of the computer (in kilobytes!), alongside the RM firmware version and machine serial number. Nimbusinator also displays memory status (but in units of Megabytes) and uses your Python version as the firmware version and your OS release number as the serial number. It also uses information from your runtime environment to simulate a short DOS-like boot sequence before finally releasing control back to your application. All the while you can enjoy the dulcet tones of an imaginary floppy drive.

To bring the Nimbus programming experience into the 21st century, the API - although Pythonic - has been modelled on the syntax of RM Basic. For example, in RM Basic to write a greeting in big, red letters in the bottom-left corner of the screen you would use the PLOT command:

PLOT "Hi kittens!", 10, 10 BRUSH 2 SIZE 4

And in Python with Nimbusinator you can write the same instruction like this:

cmd.plot('Hi kittens!', (10, 10), brush=2, size=4)

It is recommended to read the RM Basic manual to get familiar with the original commands and how graphics and text were handled on the Nimbus (see links below).

To cleanly exit your application, call the shutdown method on the Nimbus object:

# Always do this before your app quits:
nim.shutdown()

Installation

Nimbusinator is technically cross-platform but there are differences in the way PyGame's dependencies are installed between operating systems. So far I have only tested installation on Ubuntu 19.04 (see below). If you have tested PyGame successfully on other platforms please drop the magic formula in the issues and I'll add it below.

Ubuntu 19.04

# Install dependencies for pygame and simpleaudio:
sudo apt-get install -y python3-dev libasound2-dev python3-setuptools python3-numpy python3-opengl libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev libtiff5-dev libx11-6 libx11-dev fluid-soundfont-gm timgm6mb-soundfont xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic fontconfig fonts-freefont-ttf libfreetype6-dev

# Then activate your Python env and install:
pip install nimbusinator

Quick-start

from nimbusinator.nimbus import Nimbus
from nimbusinator.command import Command

if __name__ == '__main__': 
    # Create and bind nimbusinator objects:
    nim = Nimbus()
    cmd = Command(nim)
    nim.boot()          # Boot the Nimbus
    cmd.set_mode(40)    # Low resolution mode
    cmd.set_border(1)   # Dark blue border
    cmd.set_paper(9)    # Light blue paper
    cmd.cls()           # Clear screen
    cmd.plonk_logo((8, 110))    # Show Nimbus logo
    # Display a message in cyan with shadowing
    cmd.plot('Greetings!!!', (65, 155), size=2, brush=0)
    cmd.plot('Greetings!!!', (66, 156), size=2, brush=13)
    # Wait 5 seconds then shutdown
    nim.sleep(5)
    nim.shutdown()

Metadata

Release files for nimbusinator 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nimbusinator 0.2.2
File Size Uploaded Provenance Actions
nimbusinator-0.2.2.tar.gz 558.3 kB Without provenance Details for nimbusinator-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nimbusinator 0.2.2
File Interpreter ABI Platform Actions
nimbusinator-0.2.2-py3-none-any.whl Python 3 none any Details for nimbusinator-0.2.2-py3-none-any.whl

Total release size: 1.1 MB

Release files / nimbusinator-0.2.2.tar.gz

Download URL nimbusinator-0.2.2.tar.gz
Size 558.3 kB
Tags Source
SHA-256 checksum
How to use checksums
386e74da3d40d6b551e1fdb90caa44dfb422c7dfc842cf146f3450e732407efa
BLAKE2b-256 checksum
How to use checksums
112a7246eadd34560810ce5a4494fa2e555d745fe94a46a8e5b6f479f453c12d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0.post20191101 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.7

Release files / nimbusinator-0.2.2-py3-none-any.whl

Download URL nimbusinator-0.2.2-py3-none-any.whl
Size 573.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e0b3be9a9a996d2441be39f9d66ab5e03f09bc1b456ffab7b0f0f7c7b6b9ff0
BLAKE2b-256 checksum
How to use checksums
3672c8ecd8f25da96feba2f53fa9b9793c6f53e6a384b473f26d8ef7718433d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0.post20191101 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.7

Security for nimbusinator 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page