Updating README

This commit is contained in:
Joseph Ferano 2023-11-16 17:36:15 +07:00
parent bfb4e2a994
commit 392564dfad
2 changed files with 61 additions and 8 deletions

View File

@ -1,5 +1,56 @@
* Basic Term #+OPTIONS: toc:nil
Simple X11 VT100 terminal emulator, written in C. Using the following resources; * Basicterm
- [[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]] 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.

10
bt.todo
View File

@ -12,11 +12,13 @@
* DONE Render scrollback by rows * DONE Render scrollback by rows
* DONE Handle color escape sequences * DONE Handle color escape sequences
* DONE Switch to SDL2 * DONE Switch to SDL2
* TODO Clean up the rendering of the scrollback buffer * DONE 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]] * DONE 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 Render the scrollback line by line
* TODO Render lines by colored subsection
* TODO Handle raw mode
* TODO Only draw scrollback that is visible * TODO Only draw scrollback that is visible
* TODO Handle non-canonical mode
* TODO Handle unicode characters * TODO Handle unicode characters
* TODO Handle canonical and raw commands
* TODO Mouse copy/paste * TODO Mouse copy/paste
* TODO Create basic vertical splits? * TODO Create basic vertical splits?