Plié: a terminal user interface library built for a modern python
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Plié: A Python Terminal User Interface Library

Plié helps you create interactive complexly laid out terminal applications with ease.

import plie
import time

a_view_dict = {
    'header' : {
        'bounds': plie.Bounds(width='100%', height=1),
        'view_object': plie.Text('title text')
    'body' : {
        'bounds': plie.Bounds(width='100%', height='50%'),
        'view_object': plie.Text('some text second line', justify='centered'),
        'positioning': plie.Position(vertical='centered', horizontal='centered'),
        'styles': []
    'footer' : {
        'bounds': plie.Bounds(width='100%', height=2),
        'view_object': plie.Text("The footer...")
    'util' : {'handles_input': 'body'}

a_view = plie.View(a_view_dict)

renderer = plie.Renderer(view=a_view)

a_view.body[0].view_object.update(text='look, the text changed')

My main goals with Plié is to keep it simple yet highly flexible, intuitive and Pythonic.

With those goals though comes a willingness to redesign the public facing API significantly for the purpose of increasing intuitiveness or decreasing boilerplate until at least the 1.0 release.

Currently implemented features:

  • Basic layouts, with a header, body and footer
  • rendering text to the screen, and updating text
  • formatting helpers for fitting text in limited or tall spaces

Planned features:

  • popup windows that can display text messages for a specified amount of time.
  • menus which contain multiple selectable items for interface control flow.
  • support for different border styles
  • solid asyncio event integration for handling a variety of events, including keyboard,

timers and voice commands (via speech_recognition)

Similar projects and libraries

  • Blessings by Eric Rose
  • Blessed by Jeff Quast
  • Curtsies by Thomas Ballinger (the spiritual predecessor to Plié and where the name derives from)
  • npyscreen by Nicholas Cole
  • urwid by Ian Ward et al

Plié is in early alpha currently The files with mockup or variations there of in the filename in the Plie/experimental directory, contain writings and experiments on the creation of various components of Plié.