https://github.com/souleymeine/escape-lib
Another terminal library. Useful for UIs and other forms of graphics, in any of your favorite terminals.
https://github.com/souleymeine/escape-lib
2d-graphics c23 cross-platform dynamic-library freebsd gnu-make library linux macos static-library terminal-graphics tui unix windows-10 windows-11
Last synced: 3 months ago
JSON representation
Another terminal library. Useful for UIs and other forms of graphics, in any of your favorite terminals.
- Host: GitHub
- URL: https://github.com/souleymeine/escape-lib
- Owner: Souleymeine
- License: gpl-3.0
- Created: 2025-05-17T10:59:23.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-01-25T13:15:26.000Z (3 months ago)
- Last Synced: 2026-01-26T05:30:32.150Z (3 months ago)
- Topics: 2d-graphics, c23, cross-platform, dynamic-library, freebsd, gnu-make, library, linux, macos, static-library, terminal-graphics, tui, unix, windows-10, windows-11
- Language: C
- Homepage:
- Size: 184 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
This project uses semantic versioning : https://semver.org/
## Developpement scheme
The project will use the `feature` / `bugfix` / `test` convetion for branch names but adds another one called "goal".
Branch named `goal/something` will contain a few commits setting up a test file which will do something that should be easily achievable using the library but that is not yet implemented. Quick example :
```C
void cool_test()
{
printf(
"\x1b[?1049h\x1b[H"
"\x1b[3mThe excitement of creating something new and hopefully useful flows down your veins\n"
"as you prepare for the very first commit.\x1b[23m\n\n\n\n"
"\x1b[1;33m You are filled with determination.\x1b[m");
getchar();
printf("\x1b[?1049l");
}
```
Such a test could be written in a `goal/style-handling` branch so that other branches, let's say `feature/color-handling` and `feature/style-handling` can be open after the "goal" branch has been merged. This will help focus developpement into the implementation of actual features instead of trying to implement everything without a clear direction.
The above example could then become :
```C
void cool_test()
{
altbuf_visbile(true);
cursor_visible(false);
print_styled_wrapped("The excitement of creating something new and hopefully useful flows down your veins as you prepare for the very first commit.", 85, ITALIC);
move_relative(5, 8);
print_styled("You are filled with determination.", RED, BOLD);
getchar();
altbuf_visbile(false);
cursor_visible(true);
}
```
In the next branches.
(Of course the latter is horrible but you get the point).
## TODO
**This list is not exaustive and is subject to impeding change. It also does not include "*goals*" (defined above)**
- [ ] Use zig as a build system rather than make (painful, painful indeed after so many hours writing a Makefile, but necessary).
See https://youtu.be/i9nFvSpcCzo?si=yxOfo1hWYExjidIT.
"Replacing your dependency on make by zig, and now this new dependency also cross compiles", **marvelous**.
- [ ] Limit the usage of the standard library to bit utilities (stdbit.h) and system calls (no C runtime, like malloc, printf, fopen, ...)
- [ ] Better support for CJK characters, mostly full width characters
- [ ] Support for combining diacritical marks, mostly arabic but also phonetics
- [ ] Account for other terminal emulators on Windows other than *conhost* and *Terminal*