Skip to main content
Downloads codecov.io Code Coverage Windows supported Linux supported MacOS supported BSD supported

Introduction

Blessed is an easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen position and Location capabilities.

from blessed import Terminal

term = Terminal()

print(term.home + term.clear + term.move_y(term.height // 2))
print(term.black_on_darkkhaki(term.center('press any key to continue.')))

with term.cbreak(), term.hidden_cursor():
    inp = term.inkey()

print(term.move_down(2) + 'You pressed ' + term.bold(repr(inp)))
Animation of running the code example

It’s meant to be fun and easy, to do basic terminal graphics and styling with Python using blessed. Terminal is the only class you need to import and the only object you should need for Terminal capabilities.

Whether you want to improve CLI apps with colors, or make fullscreen applications or games, blessed should help get you started quickly. Your users will love it because it works on Windows, Mac, and Linux, and you will love it because it has plenty of documentation and examples!

Full documentation at https://blessed.readthedocs.io/en/latest/

Examples

animations of x11-colorpicker.py, bounce.py, worms.py, and plasma.py

x11-colorpicker.py, bounce.py, worms.py, and plasma.py demonstration programs from our repository.

colored and dimensional cellular automata in scrolling animation

cellestial.py demonstration program from our repository.

Exemplary 3rd-party examples which use blessed,

Screenshot of 'Voltron' (By the author of Voltron, from their README).

Voltron is an extensible debugger UI toolkit written in Python

Animation of 'cursewords' (By the author of cursewords, from their README).

cursewords is “graphical” command line program for solving crossword puzzles in the terminal.

Animations from 'Dashing' (By the author of Dashing, from their README)

Dashing is a library to quickly create terminal-based dashboards.

Animations from 'Enlighten' (By the author of Enlighten, from their README)

Enlighten is a console progress bar library that allows simultaneous output without redirection.

Requirements

Blessed works with Windows, Mac, Linux, and BSD’s, on Python 3.7+.

Brief Overview

Blessed is more than just a Python wrapper around curses:

  • Styles, Colors, and maybe a little positioning without necessarily clearing the whole screen first.

  • Works great with Python’s new f-strings or any other kind of string formatting.

  • Provides up-to-the-moment Location and terminal height and width, so you can respond to terminal size changes.

  • Avoids making a mess if the output gets piped to a non-terminal, you can output sequences to any file-like object such as StringIO, files, pipes or sockets.

  • Uses terminfo(5) so it works with any terminal type and capability: No more C-like calls to tigetstr and tparm.

  • Non-obtrusive calls to only the capabilities database ensures that you are free to mix and match with calls to any other curses application code or library you like.

  • Provides context managers Terminal.fullscreen() and Terminal.hidden_cursor() to safely express terminal modes, curses development will no longer fudge up your shell.

  • Act intelligently when somebody redirects your output to a file, omitting all of the special sequences colors, but still containing all of the text.

Blessed is a fork of blessings, which does all of the same above with the same API, as well as following enhancements:

Before And After

With the built-in curses module, this is how you would typically print some underlined text at the bottom of the screen:

from curses import tigetstr, setupterm, tparm
from fcntl import ioctl
from os import isatty
import struct
import sys
from termios import TIOCGWINSZ

# If we want to tolerate having our output piped to other commands or
# files without crashing, we need to do all this branching:
if hasattr(sys.stdout, 'fileno') and isatty(sys.stdout.fileno()):
    setupterm()
    sc = tigetstr('sc')
    cup = tigetstr('cup')
    rc = tigetstr('rc')
    underline = tigetstr('smul')
    normal = tigetstr('sgr0')
else:
    sc = cup = rc = underline = normal = ''

# Save cursor position.
print(sc)

if cup:
    # tigetnum('lines') doesn't always update promptly, hence this:
    height = struct.unpack('hhhh', ioctl(0, TIOCGWINSZ, '\000' * 8))[0]

    # Move cursor to bottom.
    print(tparm(cup, height - 1, 0))

print(f'This is {underline}underlined{normal}!')

# Restore cursor position.
print(rc)

The same program with Blessed is simply:

from blessed import Terminal

term = Terminal()
with term.location(0, term.height - 1):
    print('This is ' + term.underline('underlined') + '!', end='')

Metadata

Release files for blessed 1.50.0

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

Source distribution (sdist)

Source distribution for blessed 1.50.0
File Size Uploaded
blessed-1.50.0.tar.gz 14.1 MB Details

Built distribution (wheel)

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

Total release size: 14.2 MB

Release files / blessed-1.50.0.tar.gz

Download URL blessed-1.50.0.tar.gz
Size 14.1 MB
Tags Source
SHA-256 checksum
How to use checksums
046c9b2a5283a9c5bc340ed23b7d1c1f10ef2d7fb30b14bae13ef7ffc1f3ba56
BLAKE2b-256 checksum
How to use checksums
0c7d44d82d953d9bbcac57fe26507ea7ffba65ef1ec8f41f2b58da2fb12ef26c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / blessed-1.50.0-py3-none-any.whl

Download URL blessed-1.50.0-py3-none-any.whl
Size 140.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6a693d524f7c21129dd61c4d10f11bda89911c05dc7df91219854c9ccf394cbf
BLAKE2b-256 checksum
How to use checksums
9379dbf3888fa9ee5566f0acf5b87e5eeeae854b4ff8d819a564a1e73d1b5b82
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.50.0 This release

2 release files

1.49.0

2 release files

1.45.0

2 release files

1.44.0

2 release files

1.43.0

2 release files

1.42.0

2 release files

1.41.0

2 release files

1.40.0

2 release files

1.38.0

2 release files

1.37.0

2 release files

1.36.0

2 release files

1.35.0

2 release files

1.34.0

2 release files

1.32.0

2 release files

1.31.0

2 release files

1.28.0

2 release files

1.27.0

2 release files

1.26.0

2 release files

1.25.0

2 release files

1.24.0

2 release files

1.22.0

2 release files

1.21.0

2 release files

1.19.1

2 release files

1.19.0

2 release files

1.18.1

2 release files

1.18.0

2 release files

1.17.9

2 release files

1.17.6

2 release files

1.17.5

2 release files

1.17.4

2 release files

1.17.3

2 release files

1.17.2

1 release file

1.17.1

1 release file

1.17.0

2 release files

1.16.1

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.14.2

2 release files

1.14.1

2 release files

1.12.0

2 release files

1.11.0

2 release files

1.9.5

2 release files

1.9.4

1 release file

1.9.3

1 release file

1.9.2

1 release file

1.9.1

1 release file

1.9.0

1 release file

1.8.9

1 release file

1.8.8

1 release file

1.8.7

1 release file

1.8.6

1 release file

1.8.5

1 release file

1.8.4

1 release file

1.8.3

1 release file

1.8.2

1 release file

1.8.1

1 release file

1.8

1 release file

1.7

1 release file

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