Skip to content

Latest commit

 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


- EXCII -

A cross-Langauge cross-Terminal Framework which targets to make ansii control a explainable, understandable, and workable without excessive mental load.

Table of Contents

  • What is EXCII?
  • Why EXCII?
  • Design Philosophy
  • Features
  • Documentation
  • Roadmap
  • License

What is EXCII :

EXCII is a framework which targets to make ansii explainable with verbose and proper naming, proper division, trees and more.


Why EXCII ?

Throughout the evolution of terminal emulators, one thing has remained constant: ANSI escape sequences.

From early VT-series terminals to modern terminal emulators such as GNOME Terminal, Windows Terminal, Kitty, Alacritty, and others, terminal control has always been built on the same primitive—escape sequences.

Over time, higher-level frameworks such as ncurses emerged to simplify terminal application development. Rather than replacing ANSI sequences, they abstract them while understanding terminal capabilities and compatibility.

However, most existing libraries focus on building terminal applications, not on providing a clear, explainable, and language-independent abstraction of ANSI control itself.

EXCII exists to fill that gap.

Its goal is to serve as a lightweight middle layer that organises ANSI escape sequences into logical, reusable components, making terminal control easier to understand, implement, and extend across programming languages.


Design philosophy

many of questions are already got their answers on Q&A.md

so before talking about main design, let me put constraints with escape sequence:

  • escape sequence get's triggered by codes, for example famous example is \033 which also be called ESC[ which means opening escape sequence window
  • each ESC[ work as single byte. means a single character in a way
  • each instructions combines ESC[ and other codes such as 48;2 for 256 color pallete.
  • but in 48;5 each digit is a single byte character in itself.

indirectly each instruction is a stream of mini codes. the philosophy design use is make them what they are - pre existing string and make methods which return string and later:

  • each string == one mini instruction
  • combined instructions == instruction set

one big instruction set is work as a command to display to do something. which keep it efficient. the biggest bottleneck is Terminal memory bandwidth because each code is using few bytes which scales so fast.

each function in EXCII does return this instruction as string for later instruction sets.


Excii's core values

excii shares dna with unix philosophy, which is to make each function do one thing and do it well. this is the core value of excii. what excii does is to make each function do one thing and do it well, which is to return a string of ansi escape sequence. this is the core value of excii. as a wrapper it behaves very well and introduce a well explainable and understandable interface to work with ansi escape sequence. this is the core value of excii.


Excii's future

for now escii is under developement and it is not yet stable. but the future of excii is to make it a cross language framework which can be used in any programming language and any terminal emulator (mostly). the future of excii is to make it a cross platform framework which can be used in any operating system and any terminal emulator. the future of excii is to make it a cross platform framework which can be used in any programming language and any terminal emulator. the future of excii is to make it a cross platform framework which can be used in any programming language and any terminal emulator.


Features of excii

features of excii depends mostly on the language and terminal support. but the core features of excii are:

  • cross language framework (almost)
  • cross terminal framework (almost)
  • cross platform framework (almost)

-> almost because few languages and terminals are not yet supported but they will be supported in future.


Documentation

excii is well documented and the documentation is available in repository as well. mostly questions are answered in Q&A.md file. but for more detailed documentation, please refer to the documentation folder.

the thing is that excii is combination of both: wrapper and philosophy arround it to provide a better experience to work with ansi escape sequence. wihich makes documentation more tricky.

Roadmap

to be honest there is no roadmap for excii. you can do it the way you prefer. but i suggest to follow below path:

  1. learn the bassics of ansi escape sequence and how it works - graphical part, like what it show, don't learn exact codes yet.
  2. understand the naming and philosophy of naming, like why names are this way.
  3. understand trigger and how it works, like what is trigger and how it works along side other trigger methods.
  4. work with exciistr lib which is given in example to understand how it works and how to implement it in your own language.

License

there is apache 2.0 license for excii. you can use it in your own project and modify it as you like. but it is recommended to give credit to excii and its author. you can find the license in LICENSE file.

End

feel free to report any issue or bug in the repository. you can also contribute to excii by forking the repository and making a pull request. any contribution is welcome and appreciated.

rules are strictly followed in this repository because excii is a framework which targets to make ansii explainable with verbose and proper naming, proper modeling - so each decision becomes important and should be taken seriously to develop it further.

From Creator

excii is not really something you can copy or paste right - it's a process to make a thing understandable - it is all about decisions and how to make them. so if you want to contribute to excii, please read the documentation and understand the philosophy behind it. then you can make your own decisions and contribute to excii.

"a contribution to excii is a 10 times better than copy paste it and try to steal it - communities remember the decisions behind the code, not the code itself. feel free to reach intrixlabs for any questions or suggestions. we are always happy to help and discuss about excii and its future."

About

EXCII is a cross-language ANSI/VT escape sequence generation library that provides a unified, composable, and developer-friendly API for terminal programming across C, C++, Java, and Python.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages