Giter Site home page Giter Site logo

boon's Introduction

boon - unix terminal framework

Boon is an alternative to curses. It occupies a similar level of abstraction (somewhere between terminfo and your application), but uses different concepts. It is just over 100loc and has no dependencies outside the standard library.

The high level API aims to be declarative and is partly inspired by react. The lines of the terminal are represented as a list of strings. On each update, this list is regenerated and compared to the previous version. Only the lines that have changed are rendered to the terminal.

Boon does not provide utilities for color and styling. You can either use the low level API or a third party library such as colorama or blessings.

Installation

pip install boon-term

Example

import boon

class Example(boon.App):
  def render(self, rows, cols):
    yield 'Hello World'

  def on_key(self, key):
    if key == 'q':
      self.running = False

example = Example()
example.run()

High level API

App.run()

Call to start the main loop.

App.running

Set to False to stop the main loop.

App.selector

An instance of selectors.DefaultSelector you can use to register additional file objects to the main loop.

App.render(rows, cols)

Overwrite to define your view. For every line in the UI, this functions should yield a string.

App.on_key(key)

Overwrite to react to key presses. key is a string containing either a character or an escape sequence. Boon contains constants for the most common escape sequences:

  • KEY_BACKSPACE
  • KEY_ESC
  • KEY_HOME
  • KEY_END
  • KEY_DEL
  • KEY_PPAGE
  • KEY_NPAGE
  • KEY_UP
  • KEY_DOWN
  • KEY_RIGHT
  • KEY_LEFT

Low level API

get_cap(cap, *args) -> str

Get a capability from the terminfo database. If stdout is not a tty or if the capability is not supported by the terminal this returns an empty string. The full list of capabilities is available in the terminfo manpage

print(get_cap('setaf', 13) + 'foo' + get_cap('sgr0'))

move(y, x)

Move the cursor to the given position.

tty_restore(fd)

Context manager that restores tty settings after the nested block.

def getpass(prompt):
  fd = sys.stdin.fileno()
  with tty_restore(fd):
    flags = termios.tcgetattr(fd)
    flags[3] &= ~termios.ECHO
    termios.tcsetattr(fd, termios.TCSADRAIN, flags)
    return input(prompt)

fullscreen()

Context manager that enters cup and cbreak mode and also hides the cursor. Everything is restored to the previous state after the nested block.

getch() -> string

Read from stdin. See App.on_key() for details on the return value.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.