57 lines
1.8 KiB
Org Mode
57 lines
1.8 KiB
Org Mode
#+OPTIONS: toc:nil
|
|
|
|
* 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.
|