🎨 An ansi escape code parser and renderer for hobby operating systems
UNLICENSE License
vtconsole is an ansi escape code parser and renderer for hobby operating systems.
vtconsole alow you to add easily a rich console to your kernel.
vtconsole support changing color and do cursor movement.
vtconsole work like your traditional UNIX terminal using ansi/vt100 escape sequences like \033[1m
.
print("\033[1;34m _____ \033[1;34muser\033[1;37m@\033[1;34mcore\n");
print("\033[1;34m / ____| \033[1;37mOS: \033[0;37mskift\n");
print("\033[1;34m | (___ \033[1;37mKERNEL: \033[0;37mhjert\n");
print("\033[1;34m \\___ \\ \033[1;37mUPTIME: \033[0;37m00:00\n");
print("\033[1;34m ____) | \033[1;37mSHELL: \033[0;37m/bin/sh\n");
print("\033[1;34m |_____/ \n");
print("\033[1;34m \033[1;30;40m##\033[1;41;31m##\033[1;42;32m##\033[1;43;33m##\033[1;44;34m##\033[1;45;35m##\033[1;46;36m##\033[1;47;37m##\033[0m\n");
The kernel use for this exemple is the a barebone kernel from Kernels 101 Lets write a Kernel located in the exemple directory.
/**
* This function is call by vtconsole when a console cell update.
*
* Parameters
* ----------
* vtc: the calling vtconsole object
* cell: the cell being updated
* x, y: position of the cell on the screen
*/
void paint_callback(vtconsole_t *vtc, vtcell_t *cell, int x, int y)
{
// Your code here!
}
/**
* This function is call by vtconsole when the cursor move on the screen.
*
* Parameters
* ----------
* vtc: the calling vtconsole object
* vtcursor: the new state of the cursor
*/
void cursor_move_callback(vtconsole_t *vtc, vtcursor_t *cur)
{
// Your code here!
}
vtc = vtconsole(SCREEN_WIDTH, SCREEN_HEIGHT, paint_callback, cursor_move_callback);
vtconsole_write(vtc, "Hello, world!", 13);
\033[n;mH
CUP Cursor Position
Moves the cursor to row n, column m. The values are 1-based, and default to 1 (top left corner) if omitted. A sequence such as CSI ;5H is a synonym for CSI 1;5H as well as CSI 17;H is the same as CSI 17H and CSI 17;1H
\033[nJ
ED Erase in Display
Clears part of the screen. If n is 0 (or missing), clear from cursor to end of screen. If n is 1, clear from cursor to beginning of the screen. If n is 2, clear entire screen.
\033[nK
EL Erase in Line
Erases part of the line. If n is 0 (or missing), clear from cursor to the end of the line. If n is 1, clear from cursor to beginning of the line. If n is 2, clear entire line. Cursor position does not change.
\033[nm
SGR Select Graphic Rendition
Sets the appearance of the following characters, see SGR parameters below.
code | effet |
---|---|
0 | Reset / Normal all attributes off |
1 | Bold or increased intensity |
3037 | Set foreground color |
4047 | Set background color |
name | id | color |
---|---|---|
Black | 0 | |
Red | 1 | |
Green | 2 | |
Yellow | 3 | |
Blue | 4 | |
Magenta | 5 | |
Cyan | 6 | |
White | 7 |
Feel free to open an issue or a pull request if you would like to contribute or ask a question.