Skip to content
@ccanvas

ccanvas

This is a little showcase

Click on the image for video. How this is made.

A fresh approach to TUI development that promotes efficiency and code reusability.

Why?

  • Unlike traditional TUI programs that rely on a single binary with duplicated interface implementations, ccanvas allows multiple binaries to draw on the same terminal.
  • In ccanvas, binaries become reusable building blocks, the same binary "component" can be employed across different "component bundles," eliminating duplicated implementations and promoting a modular approach to TUI development.

How?

  • Binary components connect to ccanvas via Unix sockets, enabling them to draw on the terminal and listen to events.
  • Components can communicate with each other through messages, shared variables, and shared file storage.

What?

Ok, so what does ccanvas in action looks like?

Core

At its core, ccanvas is a program that provides a standardised interface for easy interaction.

  • ccanvas - the main ccanvas program.
  • libccanvas - binding structs + component utility.

To create a component for ccanvas, visit libccanvas/examples.

Components

Components are the building blocks of a ccanvas program. Here are some general purpose components.

Apps (component bundles)

A ccanvas reimplementation of youtube-tui is currently being developed.

image

Meanwhile, you can check out the minimal apps in libccanvas/examples to get a feel of its full power.


<3

Popular repositories Loading

  1. ccanvas_old ccanvas_old Public

    Socket controlled canvas for your terminal.

    Rust 10

  2. libccanvas_old libccanvas_old Public

    Utility for creating ccanvas components

    Rust 3

  3. ccanvas ccanvas Public

    Final rewrite of ccanvas (hopefully)

    Rust 1

  4. ccanvas-quit_old ccanvas-quit_old Public

    Handles quitting (configurable).

    Rust

  5. ccanvas-saver_old ccanvas-saver_old Public

    Screen saver for ccanvas - draws an overlay and suppress all input events to components.

    Rust

  6. .github .github Public

Repositories

Showing 10 of 12 repositories
  • rust-bindings Public
    Rust 0 AGPL-3.0 0 0 0 Updated Jan 14, 2025
  • libccanvas Public
    Rust 0 0 0 0 Updated Jan 14, 2025
  • ccanvas Public

    Final rewrite of ccanvas (hopefully)

    Rust 1 AGPL-3.0 0 0 0 Updated Jan 14, 2025
  • Rust 0 AGPL-3.0 0 0 0 Updated Jan 13, 2025
  • .github Public
    0 0 0 0 Updated Feb 19, 2024
  • ccanvas_old Public

    Socket controlled canvas for your terminal.

    Rust 10 AGPL-3.0 0 0 0 Updated Feb 19, 2024
  • ccanvas-scroll_old Public

    Scrolling text display for ccanvas.

    Rust 0 AGPL-3.0 0 0 0 Updated Feb 19, 2024
  • libccanvas_old Public

    Utility for creating ccanvas components

    Rust 3 AGPL-3.0 0 0 0 Updated Feb 19, 2024
  • ccanvas-layout_old Public

    Component layout manager for ccanvas

    Rust 0 AGPL-3.0 0 0 0 Updated Feb 11, 2024
  • ccanvas-solid_old Public

    Fills your screen with a single character - used for testing and debugging.

    Rust 0 AGPL-3.0 0 0 0 Updated Feb 10, 2024

Top languages

Loading…

Most used topics

Loading…