Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. OCaml
  3. Notty

Notty

ISCOCamlv0.2.3

A declarative terminal graphics library for OCaml that abstracts terminal programming with composable images.

GitHubGitHub
384 stars38 forks0 contributors

What is Notty?

Notty is a declarative terminal library for OCaml that abstracts away traditional terminal programming by using composable images. It allows developers to describe what should be displayed rather than issuing direct terminal commands, focusing on simplicity and expressiveness. The core is implemented in pure, platform-independent OCaml, with support for Unix and Lwt on Unix.

Target Audience

OCaml developers building terminal-based applications, such as TUIs (Text User Interfaces), games, or tools requiring graphical output in a terminal. It is suited for those seeking a declarative, composable approach over imperative terminal control.

Value Proposition

Developers choose Notty for its declarative model that simplifies terminal programming by abstracting low-level details, its composable image system for building interfaces, and its pure OCaml core ensuring platform independence. It offers a more expressive alternative to traditional TTY libraries, influenced by Haskell's Vty.

Overview

Declarative terminal graphics for OCaml

Use Cases

Best For

  • Building declarative terminal user interfaces (TUIs) in OCaml with a focus on composable graphics.
  • Creating terminal-based games or visualizations using a pure OCaml layout engine.
  • Developing cross-platform terminal applications that require Unicode support throughout.
  • Integrating terminal output with Unix systems or Lwt for asynchronous programming.
  • Abstracting away low-level terminal commands in favor of a descriptive, image-based API.
  • Implementing custom terminal widgets or tools where simplicity and expressiveness are prioritized over broad terminal compatibility.

Not Ideal For

  • Projects requiring broad compatibility with non-Unicode or legacy terminal emulators
  • Developers who prefer low-level, imperative control over terminal output commands
  • Teams needing a rich ecosystem of pre-built terminal widgets or components
  • Applications targeting non-Unix operating systems without OCaml support

Pros & Cons

Pros

Declarative Model

Describes terminal output as composable images rather than issuing direct commands, making code more expressive and simpler, as highlighted in the README's emphasis on abstraction from TTY programming.

Pure OCaml Core

Layout engine and IO codecs are implemented in platform-independent OCaml, ensuring portability and easy integration with OCaml ecosystems, per the distribution details.

Composable Images

Uses a composable image abstraction for building interfaces, enabling flexible and modular design, as demonstrated in the example code for rendering Game of Life.

Unicode Integration

Assumes Unicode support throughout for consistent text rendering, simplifying internationalization without manual handling, as stated in the key features.

Cons

Limited Terminal Support

The README admits it does not have universal support for various terminals, which can lead to compatibility issues and rendering failures on unsupported systems.

Unicode Dependency

Assumes Unicode throughout, making it unsuitable for terminals or environments without Unicode support, limiting use in legacy or constrained systems.

Niche Ecosystem

As a specialized OCaml library, it lacks extensive community contributions and third-party extensions compared to more popular terminal libraries, which may slow development.

Frequently Asked Questions

Quick Stats

Stars384
Forks38
Contributors0
Open Issues16
Last commit2 years ago
CreatedSince 2015

Tags

#ocaml-library#terminal-graphics#unicode-terminal#declarative-ui

Built With

U
Unix
O
OCaml
L
Lwt

Included in

OCaml3.1k
Auto-fetched 2 hours ago

Related Projects

Lambda-TermLambda-Term

Terminal manipulation library for OCaml

Stars231
Forks43
Last commit3 months ago
lablqmllablqml

Interfacing Qt/QML with OCaml. Formely known as lablqt

Stars168
Forks17
Last commit2 years ago
ocaml-linenoiseocaml-linenoise

Self-contained OCaml bindings to linenoise, easy high level readline functionality in OCaml

Stars56
Forks9
Last commit1 year ago
labltklabltk

Interface to the Tcl/Tk GUI framework. In the standard distribution for ocaml <= 4.01

Stars0
Forks0
Last commit
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub