From 392564dfadd8870a5f5f45862d2bf634d606f7ad Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Thu, 16 Nov 2023 17:36:15 +0700 Subject: [PATCH] Updating README --- README.org | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++---- bt.todo | 10 +++++---- 2 files changed, 61 insertions(+), 8 deletions(-) diff --git a/README.org b/README.org index 146afeb..66dd1df 100644 --- a/README.org +++ b/README.org @@ -1,5 +1,56 @@ -* Basic Term +#+OPTIONS: toc:nil -Simple X11 VT100 terminal emulator, written in C. Using the following resources; -- [[https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html][The very basics of a terminal emulator]] -- [[http://mech.math.msu.su/~nap/2/GWindow/xintro.html][A Brief intro to X11 Programming]] +* Basicterm + +A minimalist Linux terminal emulator written in C, utilizing SDL2 for keyboard input handling and text rendering. This project demonstrates low-level systems programming and graphics programming concepts. + +** Project Overview + +Basicterm is a custom terminal emulator developed to provide hands-on experience with terminal implementation details and to deepen understanding of fundamental system tools. The project showcases C programming, SDL2 graphics programming, and POSIX terminal semantics. + +** Technical Implementation + +The terminal emulator is built using: +- *SDL2* for window management and input handling +- *SDL2_ttf* for text rendering +- Custom escape sequence parsing for color support +- Direct shell process communication via pseudoterminals + +** Current Features + +- Basic shell command execution +- Keyboard input processing with backspace support +- Partial ANSI color escape sequence parsing +- Support for bash and dash shells +- Cross-platform Linux compatibility + +** Development Status + +This project is actively under development. Recent improvements include: +- Migration from Raylib to SDL2 for better keyboard input handling +- Implementation of basic text rendering pipeline +- Foundation for ANSI escape sequence processing + +** Planned Enhancements + +- Complete ANSI escape sequence support +- Multi-line text rendering optimization +- Extended shell compatibility (Fish, ZSH) +- Improved terminal state management + +** Build Instructions + +*Prerequisites:* +- SDL2 development libraries +- SDL2_ttf development libraries + +Install dependencies using your distribution's package manager, then build: + +#+BEGIN_SRC bash +make build # Build the project +make run # Build and run +#+END_SRC + +** License + +This project is licensed under the MIT License. See the LICENSE file for details. diff --git a/bt.todo b/bt.todo index 12c5d8a..f22e43e 100644 --- a/bt.todo +++ b/bt.todo @@ -12,11 +12,13 @@ * DONE Render scrollback by rows * DONE Handle color escape sequences * DONE Switch to SDL2 -* TODO Clean up the rendering of the scrollback buffer -* TODO Get Backspace and Return to repeat properly [[https://github.com/raysan5/raylib/issues/2041][Why we switched to SDL]] -* TODO Render the scrollback line by line +* DONE Clean up the rendering of the scrollback buffer +* DONE Get Backspace and Return to repeat properly [[https://github.com/raysan5/raylib/issues/2041][Why we switched to SDL]] +* DONE Render the scrollback line by line +* TODO Render lines by colored subsection +* TODO Handle raw mode * TODO Only draw scrollback that is visible +* TODO Handle non-canonical mode * TODO Handle unicode characters -* TODO Handle canonical and raw commands * TODO Mouse copy/paste * TODO Create basic vertical splits?